本文目录

蘑菇街 前端工程师面试题

🌙
手机阅读
本文目录结构

蘑菇街 前端工程师面试题

以下关于 HTTP 的状态码中描述错误的是:

正确答案: B

200 OK 客户端请求成功
302 Moved Permanently 请求永久重定向
403 Forbidden 服务器收到请求,但是拒绝提供服务
500 Internal Server Error 服务器发生不可预期的错误,导致无法完成客户端的请求

对于以下 HTML,下列选项中哪一个 CSS 选择器效果与其他的不同:

<p><span>A</span><span>B</span><span>C</span></p>

正确答案: B

span:first-child
span:nth-child(0)
span:nth-child(-n+1)
span:nth-last-child(3)

以下关于原型链的描述正确的是:

正确答案: C

通过原型链继承的属性和对象自己定义的属性等效
通过原型链可以模拟对象的私有属性
在对象上访问不存在的属性时,会依次遍历整条原型链
所有 JavaScript 中的对象都是位于原型链顶端的 `Object` 的实例

攻击者使用无效IP地址,利用TCP连接的三次握手过程,连续发送会话请求,使受害主机处于开放会话的请求之中,直至连接超时,最终因耗尽资源而停止响应。这种攻击被称为:

正确答案: D

DNS欺骗攻击
DDoS攻击
XSS攻击
SYN Flooding攻击

以下Javascript代码执行后的输出结果依次是:

```javascript
console.log(typeof undefined == typeof NULL);
console.log(typeof function () {} == typeof class {});
```

正确答案: C

false, true
false, false
true, true
true, false

以下Javascript代码执行后的输出结果依次是:()

var tmp = {};
var A = function() {};
A.prototype = tmp;

var a = new A();
A.prototype = {};

var b = Object.create(tmp);
b.constructor = A.constructor;

console.log(a instanceof A);
console.log(b instanceof A);

正确答案: D

true, false
false, true
true, true
false, false

在Javascript中限制只能输入零和非零开头的数字,正确的正则表达式是:

正确答案: A

  • ^(0|[1-9][0-9]*)$
  • ^(0|[1-9][0-9])$
  • ^\+[1-9][0-9]*$
  • ^(0|[1-9][1-9]*)$

以下Javascript代码执行后的输出结果是:

function a(m, n) {
    var b = function (l) {
        return l <= m ? l * b(l + 1) : 1;
    }

    return b(m - n + 1);
}

console.log(a(4, 2));

正确答案: C

0
8
12
24

以下Javascript代码执行后的结果是:()

[ 'a', ,'b', ,].length

正确答案: C

2
3
4
5

关于cookie、sessionStorage和localStorage,以下哪个说法是错误的:

正确答案: C

sessionStorage和localStorage的存储空间比cookie的存储空间更大
sessionStorage和localStorage比cookie有更多丰富易用的接口
cookie、sessionStorage和localStorage都可以在浏览器和服务器间来回传递
sessionStorage和localStorage都有各自独立的存储空间

以下哪些HTML标签属于行内元素:

正确答案: B D E

  • p
  • span
  • canvas
  • label
  • img

以下描述正确的是:

正确答案: A B D

  • inline-block 可以设置高度,inline 不可以设置高度
  • inline-blockinline 都可以设置 padding-left
  • inline-block 可以设置 margin-left,inline 不可以
  • block 会独占一行,inline-block 不会

以下关于跨域的描述哪些是正确的:

正确答案: B C D

  • Web字体,图片等资源文件加载都不受浏览器跨域限制
  • CSS文件的加载不受跨域限制
  • window.onerror方法默认情况下无法获取跨域脚本的报错详情
  • canvas中使用drawImage贴图会受跨域限制

以下关于闭包的描述哪些是正确的:

正确答案: A B C D

函数内再嵌套函数
参数和变量不会被垃圾回收机制回收
内部函数可以引用外层的参数和变量
闭包会导致原始作用域链不释放,造成内存泄漏

在 ECMAScript6 中,promise的状态有:

正确答案: A C D

Pending
Pause
Fulfilled
Rejected

以下关于let和const的说法中正确的是:

正确答案: A B C

let声明的变量值和类型都可以改变
const声明的常量不可以改变
两者都不存在变量提升,同时存在暂时性死区,只能在声明的位置后面使用
const可以先声明再初始化,可以后赋值

对以下Javascript代码运行结果的描述错误的是:()

var a = {},
    b = { key: 'b' },
    c = { key: 'c' };

a[b] = 123;
a[c] = 456;

正确答案: A B D

  • 变量 a 有两个属性
  • console.log(a[b]) 输出 123
  • console.log(a[c]) 输出 456
  • console.log(a[a]) 输出 undefined

假设以下div

    <div class="a">hello</div>

绑定的click事件如下

    let a = document.querySelector('.a');
    a.addEventListener('click', ()=>{
        console.log(1);
    });

以下哪些方法在点击上面的div后,输出1之前输出2:()

正确答案: B C D

  • javascript<br>a.addEventListener('click', ()=&gt;{<br>console.log(2);<br>});<br>
  • javascript<br>a.addEventListener('click', ()=&gt;{<br>console.log(2);<br>}, true);<br>
  • javascript<br>a.addEventListener('touchstart', ()=&gt;{<br>console.log(2);<br>});<br>
  • javascript<br>a.addEventListener('touchend', ()=&gt;{<br>console.log(2);<br>});<br>

以下哪些方法可以优化滚动性能:

正确答案: A B C D

在滚动中对滚动函数进行节流处理
滚动中减少导致重绘的操作
滚动中减少导致重排的操作
通过给滚动内的子元素开启硬件加速

以下请求是一个订单提交的请求,请观察该请求包,说出你认为可能存在的安全风险点:()

POST http://test.mogujie.com/insert.html HTTP/1.1
Host: test.mogujie.com
Referer: http://test.mogujie.com/index.php?data=58
Cookie: uid=1504174654; 
addressid=1&productid=123&num=1&price=120

正确答案: A B C D

CSRF
订单金额篡改
越权操作
SQL 注入

实现一个弹出对话框组件, 如下图(可以使用vue, jquery, react等框架)

https://uploadfiles.nowcoder.com/images/20180919/300823_1537347122363_D375460951577D587A2D848B6E862450

你的答案

编写一个Javascript函数,传入一个数组,对数组中的元素进行去重并返回一个无重复元素的数组,数组的元素可以是数字、字符串、数组和对象。

举例说明:

1. 如传入的数组元素为[123, "meili", "123", "mogu", 123],则输出:[123, "meili", "123", "mogu"]
2. 如传入的数组元素为[123, [1, 2, 3], [1, "2", 3], [1, 2, 3], "meili"],则输出:[123, [1, 2, 3], [1, "2", 3], "meili"]
3. 如传入的数组元素为[123, {a: 1}, {a: {b: 1}}, {a: "1"}, {a: {b: 1}}, "meili"],则输出:[123, {a: 1}, {a: {b: 1}}, {a: "1"}, "meili"]

参考

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了