2018字节跳动(今日头条那个)一面凉经
>> 注意:图片里面我的输入是有错误的(原谅我略菜)
’
1.CSS垂直居中、水平垂直居中
PS:这个高度是宽度的50%没有思路,而且因为没有界面调试,这个代码也是烂的,和预想界面不一致
2. js函数的arguments是数组吗?怎么转真实数组
PS:arguments是一个对象数组,所以用Array的原型上的方法应该比较好,我是写了最基础的写法
3. if ([] == false) console.log(1);//我的输出没有1,那是行数,我认为[]是一个对象,应该不为false,但是结果
if ({} == false) console.log(2);//应该是因为调用的toString返回了空串,所以才转成了false,我这里炸了
if ([]) console.log(3);//这里就是上面说的对象不是null所以有3
if ([1] == [1]) console.log(4);//
4. async function async1() {
console.log('async1');
await async2();
console.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');
5. 以最小改动解决以下代码的错误,可用es6
const obj = {
name: 'jsCoder',
skill: ['es6','react','angular'],
say: function() {
for (var i = 0, len = this.skill.length; i< len; i++) {
setTimeout(function(){
console.log('No.'+i+this.name);
console.log(this.skill[i]);
console.log('----------');
},0);
console.log(i);
}
}
};
obj.say();
期望得到下面的结果:
1
2
3
No.1 jsCoder
es6
----------
No.2 jsCoder
react
----------
No.3 jsCoder
angluar
----------
6. 实现ES5中Function原型的bind方法,使得以下程序最后输出'success'
function Animal(name, color){
this.name = name;
this.color = color;
}
Animal.prototype.say = function() {
return `I'm a ${this.color} ${this.name}`;
}
const Cat = Animal.bind(null,'cat');
const cat = new Cat('white');
if (cat.say() === 'I\'m a white cat' && cat instanceof Cat && cat instanceof Animal){
console.log('success');
}
7. js实现函数节流,执行间隔不小于100ms,注意接口设计尽量合理
8. 算法实现给无序、不重复数组中取出n个数,相加和为sum,给出时间/空间复杂度,找到一个解即可。
function getResult(data, n, sum) {} //感觉我思路没问题,就是复杂度炸了
9. React生命周期,顺序以及render执行次数。setState的回调函数。