蘑菇街 前端工程师面试题
蘑菇街 前端工程师面试题
以下关于 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-block
和inline
都可以设置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', ()=>{<br>console.log(2);<br>});<br>
javascript<br>a.addEventListener('click', ()=>{<br>console.log(2);<br>}, true);<br>
javascript<br>a.addEventListener('touchstart', ()=>{<br>console.log(2);<br>});<br>
javascript<br>a.addEventListener('touchend', ()=>{<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等框架)
你的答案
编写一个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"]