前端面试系列五(浏览器及计算机基础)
快来加入我们吧!
"小和山的菜鸟们",为前端开发者提供技术相关资讯以及系列基础文章。为更好的用户体验,请您移至我们官网小和山的菜鸟们 ( https://xhs-rookies.com/ ) 进行学习,及时获取最新文章。
【前端面试系列五(浏览器及计算机基础)】"Code tailor" ,如果您对我们文章感兴趣、或是想提一些建议,微信关注 “小和山的菜鸟们” 公众号,与我们取的联系,您也可以在微信上观看我们的文章。每一个建议或是赞同都是对我们极大的鼓励!
面试系列不定期更新,请随时关注前言 本篇专栏重点在于讲解面试中 浏览器/计算机基础知识 的面试题内容。
注意: 本篇专栏至只会涉及到重点内容,并不会进行拓展。某些题目需要拓展知识点的,我们会将拓展内容、整体详细信息放置与每个题目的最前面,可以自行查看。浏览器/计算机基础知识
浏览器/计算机基础知识 |
---|
进程和线程的区别 |
为什么 JS 要设置为单线程 |
浏览器事件循环 |
什么时候触发浏览器的事件循环 |
Script 的 async 和 defer 加载的区别 |
- 进程是运行中的程序,线程是进程的内部的一个执行序列
- 进程是资源分配的单元,线程是执行单元
- 进程间切换代价大,线程间切换代价小
- 进程拥有资源多,线程拥有资源少
- 多个线程共享进程的资源
JavaScript
之所以为单线程跟其用途有关,JavaScript
的主要用途是与用户互动,以及操作 DOM
。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假定 JavaScript
同时有两个线程,一个线程在某个 DOM
节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?所以,为了避免复杂性,从一诞生,
JavaScript
就是单线程,这已经成了这门语言的核心特征,将来也不会改变。浏览器事件循环
浏览器事件循环是指
JS
引擎在解析 JS
脚本时,将同步方法压入到执行栈,而将异步方法放入事件队列中,当执行栈中的方法执行完后,浏览器前往事件队列查看是否有已完成的任务,如果有,则将其取出放入执行栈中。反复重复上述动作即叫做事件循环答题需要跟浏览器的线程联系起来,即
JS
引擎线程、事件触发线程、定时触发器线程更多详情请见 JavaScript 运行机制详解:再谈 Event Loop
Script 的 async 和 defer 加载的区别
文章图片
更多详情请见 defer 和 async 的区别
下节预告 下节我们将为大家带来
手写程序算法题
的面试题解,敬请期待!推荐阅读
- 【欢喜是你·三宅系列①】⑶
- 你不可不知的真相系列之科学
- 人脸识别|【人脸识别系列】| 实现自动化妆
- Jsr303做前端数据校验
- 2018国考外交部面试演讲不再难——只需把握好三点
- iOS面试题--基础
- 2018-06-13金句系列7(金句结构-改编古现代诗词)
- Unity和Android通信系列文章2——扩展UnityPlayerActivity
- 乡野村趣系列之烧仙草
- Java内存泄漏分析系列之二(jstack生成的Thread|Java内存泄漏分析系列之二:jstack生成的Thread Dump日志结构解析)