头条面经顺便玄学求offer
一面:
1、介绍项目
2、React的优点?为什么可以做到不操作DOM?虚拟树?
3、实现4:3的div,这里涉及了padding-top宽度以父元素的宽为参照
4、vh和vw有什么兼容性问题
5、对rem的了解
6、边距合并的问题,如何解决
7、怎么定义BFC
8、实现一个进度条动画,2s 0.5s突变为1/3 1s突变为2/3 1.5s突变为1 2s突变为0
9、帧动画
10、
var func1 = x =>x;var func2 = x => {x};var func3 = x => ({x});console.log(func1(1));console.log(func2(1));console.log(func3(1)); 输出为?
11、箭头函数的作用域
12、原型,原型链的理解。Promise理解
13、数组A,找出最大连续子序列
二面:
1、
setTimeout(() => {
setTimeout(() => {
console.log(‘100, 0’)
}, 0);
}, 100);
setTimeout(() => {
setTimeout(() => {
console.log(‘0, 100’)
}, 100);
}, 0); 先输出哪一个?
2、
if ([] == false) {console.log(1);};
if ({} == false ) {console.log(2);};
if ([]) {console.log(3);};
if ([1] == [1]) {console.log(4);};
if ('1' == [1]) {console.log(5);}; 会输出哪些
3、js的基本数据类型有哪些
4、实现对象的深克隆,不考虑function
5、数组A,两个不交叠的连续子序列和最大。
三面:
1、react 生命周期
2、实现inherit继承函数
function inherit(Fn,obj) {
}
let animalNum = 0;
function Animal(name, age) {
animalNum ++;
this.name = name;
this.age = age;
}
Animal.prototype.getName = function() {
return this.name;
};
const Cat = inherit(Animal, {
say() {
console.log(`NO${animalNum}:${this.getName()}`);
}
});
const cat1 = new Cat('小花');
cat1.say(); //NO1:小花 3、事件模型中,事件响应函数的event变量中的currentTarget与target的区别是什么
4、事件委托是什么
5、我手中有一堆扑克牌, 但是观众不知道它的顺序。
第一步, 我从牌顶拿出一张牌, 放到桌子上。
第二步, 我从牌顶再拿一张牌, 放在手上牌的底部。
第三步, 重复第一步、第二步的操作, 直到我手中所有的牌都放到了桌子上。
最后, 观众可以看到桌子上牌的顺序是:13\12\11\10\9\8\7\6\5\4\3\2\1
请问, 我刚开始拿在手里的牌的顺序是什么?
6、分别解释reflow repaint,哪些情况会引起reflow
7、如何实现抛物线动画
