一面
- 下面的输出
var a = {
name: 'bytedance',
func: function() {
console.log(this.name);
}
};
Var fun1 = a.func;
fun1();
- 一秒后输出1,两秒后输出4,三秒后输出5…
let a = [1, 4, 5, 7, 9]
// 1s
1
// 2s
4
// 3s
5
- display都有哪些属性?
- inline、inline-block、block的区别?像是margin、padding和宽高都是哪些可以设置?
注意1.45版本大于1.5。因为45版肯定大于第五版。
- 数据类型都有哪些?Symbol怎么创建的?
- vue的v-if和v-for和原理
第一轮还有几题,我给忘了,想起来再补。
第二轮
-
封装个简单版的axios();
-
封装个可以检测所有数据类型的函数
//我答的
function testType(type){
if(typeof type !='object'){
return type;
}
if(type===null) return null;
let str = Object.prototype.toString.call(type);
return str.slice(8,str.length-1);
}
console.log(testType({}));
- 下面的输出
log(1);
setTimeout(()=>{log(2)}, 0);
Promise.resolve().then(()=>{log(3)})
var p = new Promise(res=>{
log(4)
setTimeout(()=>{
res(5)
log(6)
},0)
})
p.then(e=>{log(e)})
- 说一下原型链?原型链继承的弊端?怎么避免?
我答了用Object.create(),这样可以复制一个原型链,不影响原本的父链。
又问还有其他方法嘛?
我说ES6继承
ES6继承会不会影响父链?
我答:不会,ES6继承源码就是用Object.create()实现的。
- 数组扁平化输入:
- [1,2,[3,4,[5,{a:1},[6]]]]
- 输出:[1,2,3,4,5,{a:1},6]
function flat(arr){
arr = JSON.stringify(arr).replace(/\[|\]/g,'');
arr = '['+arr+']';
return JSON.parse(arr);
}
console.log(flat([1,2,[3,4,[5,{a:1},[6]]]]));
function flat(arr){
if(typeof arr !='object') return arr;
if(Object.prototype.toString.call(arr)=='[object Object]'){
console.log(arr);
return arr
}
let res=[];
for(let i=0;i<arr.length;i++){
res[i] = flat(arr[i]);
}
return res;
}
console.log(flat([1,2,[3,4,[5,{a:1},[6]]]]));
-
tcp建立的过程?
讲了三次握手
为什么要三次握手呢?
两次握手不也可以建立链接嘛?
提示:tcp是全双工的通信讲讲你对udp的理解?
-
你都知道哪些http状态码?
200、301、304、307、403、404、500、503