前端面试题总结
Posted 老张在线敲代码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端面试题总结相关的知识,希望对你有一定的参考价值。
1. 事件轮询
所有的同步任务都在主线程执行,形成一个执行栈
主线程之外存在一个任务队列,任务队列中用于放置异步任务
一旦执行栈中的所有的同步任务都执行完了,系统就会读取任务队列 主线程不断地重复第三步
2. localstorage的方法有哪些?最多可以存储多少数据?
setItem(“属性”,“值”)用于设置存储的内容
getItem(“属性”)用于获取存储的内容
removeItem(“属性”)用于删除存储的内容
最大可以存储5MB的数据
3. ajax步骤
第一步先创建XMLhttpRequest异步对象
第二步设置请求方式和请求的地址
第三步用send发送请求,监听数据的变化
第四步接受返回的数据值
4. watch和computed的区别
watch监听器默认对监听的简单数据做出响应,如果数据复杂,则需要开启深度监听
computed对一个数据进行监听和操作,并返回一个新的数据,默认只读,修改数据的时候使用set函数,有缓存
5. React.PureComponent和Component的区别?
purecomponent是一个更具有性能的component,它可以通过props和state的浅层对比来实现组件的shouldComponentUpdate,更新,而component没有
6.PureComponent优缺点
优点:
不需要开发者自己实现shouldComponentUpdate,就可以进行简单的判断来提升性能。
缺点:
可能会因深层的数据不一致而产生错误的否定判断,从而shouldComponentUpdate结果返回false,界面得不到更新。
7.什么是宏任务,什么是微任务?
宏任务、微任务有哪些
宏任务包括:script(整体代码), setTimeout, setInterval, setImmediate, I/O, UI rendering。
微任务包括: Promises, Object.observe, MutationObserver
宏任务、微任务的执行顺序
执行顺序:先执行同步代码,遇到异步宏任务则将异步宏任务放入宏任务队列中,遇到异步微任务则将异步微任务放入微任务队列中,当所有同步代码执行完毕后,再将异步微任务从队列中调入主线程执行,微任务执行完毕后再将异步宏任务从队列中调入主线程执行,一直循环直至所有任务执行完毕。
例子:
setTimeout(function(){
console.log('1');
});
new Promise(function(resolve){
console.log('2');
resolve();
}).then(function(){
console.log('3');
});
console.log('4');
遇到setTimout,异步宏任务,放入宏任务队列中;
遇到new Promise,new Promise在实例化的过程中所执行的代码都是同步进行的,所以输出2;
而Promise.then中注册的回调才是异步执行的,将其放入微任务队列中
遇到同步任务console.log(‘4’);输出4;
主线程中同步任务执行完 从微任务队列中取出任务到主线程中,输出3,
微任务队列为空从宏任务队列中取出任务到主线程中,输出1,宏任务队列为空,结束~
结果为2,4,3,1
以上是关于前端面试题总结的主要内容,如果未能解决你的问题,请参考以下文章