京东一面
先吐槽一下京东这个面试,永远不约时间,甚至不告诉你简历过了没,基本就是随时一个电话打过来就要面。。。你如果当下没时间基本上后面就没有了
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加入到一个执行队列中,函数中的代码会依次执行。
值感觉应该是一面的原因吧,问的都是比较基础的八股,也很快