头条面经顺便玄学求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、如何实现抛物线动画