先吐槽一下京东这个面试,永远不约时间,甚至不告诉你简历过了没,基本就是随时一个电话打过来就要面。。。你如果当下没时间基本上后面就没有了
1.浏览器缓存(强缓存和协商缓存)
2.浏览器是用http协议还是https,有什么区别
3.页面请求有哪几种方式(get,post)区别
4.浏览器两个tab页之间的通信(postmessage,storage)
5.localstorage和session storage的区别
6.css选择器,优先级
7.css样式单位
8.px和rem的区别
9.float和absolute的区别
10.js数据类型,检查数据类型的方法
11.闭包
12.跨域
13.vue的生命周期(8种)
14.react生命周期(三个阶段)
15.state和props的区别
16.state是同步的还是异步的
17.为什么给setstate传入一个函数而不是对象
我回来了:这个问题应该可以从函数的链式调用答,因为setState是异步更新,同步执行,因为react会把多个setstate合并在一起处理,从而提升性能,只传入对象的话拿不到最新的state。
class Test extends Component{
state={
age:0
}
Click1()=>{
this.setState({
age:this.state+1;
});
if(true){
age:this.setState.age+1;
}
};
Click2()=>{
this.setState((prevState,props)=>{
return{
age:prevState.age+1;
}
});
if(true){
this.setState((prevState,props)=>{
return {
age:prevState.age+1;
}
});
}
}
render(){
return(
<button onClick={()=>{ this.Click1 }>pass in Obj</button>
<button onClick={()=>{ this.Click2 }>pass in Fun</button>
)
}
}
//function打印为2,obj打印为1
props和state可能会异步更新,也就是说,对相同的变量进行处理的时候,会将这多次处理合并为一个,这个是批处理;而如果传入函数,那么会进行链式调用,这个函数会被react加入到一个执行队列中,函数中的代码会依次执行。
值感觉应该是一面的原因吧,问的都是比较基础的八股,也很快