前端面试题总结

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

以上是关于前端面试题总结的主要内容,如果未能解决你的问题,请参考以下文章

Java进阶之光!2021必看-Java高级面试题总结

前端面试题总结

前端面试题总结

经验总结:Java高级工程师面试题-字节跳动,成功跳槽阿里!

前端面试题总结

面试题系列|前端面试题前端高频面试题总结(2021年最新版)