1. 如何清除浮动?(说了四种)
2. px、em、rem说一下?
3. 如何实现一个元素水平、垂直居中?(说了四种)
4. CSS选择第一个元素、最后一个元素、3的整数倍子元素。(使用CSS3新增的结构伪类选择器就OK)
5. 说一下伪类和伪元素的区别?(区别有三)
6. 说一下原型和原型链?
7. 说一下闭包以及应用场景。
8. 说一下防抖和节流。
9. 说一下事件循环?
10. TCP和UDP的区别?
11. 为什么说UDP是不可靠的?
12. 说一下TCP报文头部的结构。(前面的还记得,标志位后面的就不记得了,尴尬)
2字节的源端口和目标端口、4字节的序列号SEQ,4字节的确认号ACK,标志位(SYN、ACK、FIN、RST、PSH等)、2字节的窗口大小、2字节校验和、2字节紧急指针、可选项。
13. 说一下Promise的优缺点?优点不说了,缺点有三:
- Promise无法取消,一旦新建就会立即执行
- 不设置回调函数,Promise内部抛出的错误无法反应到外部
- 当处于pending状态时,无法得知目前处于哪一阶段(刚刚开始还是即将完成)
14. 简单实现一下Promise。(简单实现了一下,给面试官看了可以,如果完整实现标准的话代码很多)
15. 你实习项目中的难点?
16. 原型链的问题,以下代码输出什么?并解释:
var F = function() {};
Object.prototype.a = function() {
console.log('a');
};
Function.prototype.b = function() {
console.log('b');
} ;
var f = new F();
f.a();
f.b();
F.a();
F.b();
17. 作用域的问题,以下代码输出什么?并解释:
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1);
}
for (var j = 0; j < 3; j++) {
setTimeout(() => console.log(j), 1);
}
18. 以下代码输出什么?并解释:
function Foo() {
Foo.a = function() {
console.log(1)
}
this.a = function() {
console.log(2)
}
}
Foo.prototype.a = function() {
console.log(3)
}
Foo.a = function() {
console.log(4)
}
Foo.a();
let obj = new Foo();
obj.a();
Foo.a();
19. 事件循环的问题,以下代码输出什么?并解释:(async1 start的输出顺序我写错了,记住await是让出线程的标志,会把之后的代码放入microtask中)
async function async1() {
console.log('async1 start');
await async2();
.log('async1 end');
}
async function async2() {
console.log('async2');
}
console.log('script start');
setTimeout(function() {
console.log('setTimeout');
}, 0)
async1();
new Promise(function(resolve) {
console.log('promise1');
resolve();
}).then(function() {
console.log('promise2');
});
console.log('script end');
20. 写一个快排(这个很easy了,可是有个边界情况没注意到,测试用例输出的时候有点问题,调试了一会,尴尬~)
整个面试持续了一个小时十分钟吧,问的比较全面,比较欣赏出的题,就是框架没问,最后问了一下部门主要用Vue,而我简历上写的是React应该是这个原因吧。
全部评论
(3) 回帖