技术
- js里的异步操作是如何进行的(叙述原理)
- 害我举了一个ajax的例子,面试官好像没有特别满意,引导我往线程的方向去思考。
- 虽然JavaScript是单线程的,可是浏览器内部不是单线程的。我们假设JavaScript只执行自己程序的代码,当遇到异步操作时把他丢给浏览器,由浏览器的线程去执行,自己继续往下执行。让浏览器执行完异步之后,再把异步执行完的东西给JavaScript,让JavaScript去执行。
WebAPIs
:浏览器为异步任务单独开辟的线程(服务JavaScript的,处理JavaScript的异步)
虚线那一块(看图)
:堆(heap)和栈(stack)共同组成了js主线程(这个就是我们JavaScript的线程)
callback queue(最下面的那个长方形)
:任务队列,里面放着各种事件,比如我们点击所触发的事件,浏览器会帮我们以任务的形式,把他放入任务队列中
event loop(那个转圈圈)
:任务循环,又叫事件循环。 - 流程:
当我们的程序运行时,执行我们JavaScript的主线程,堆(heap)和栈(stack)共同组成了JavaScript的主线程,函数的执行就是通过进栈和出栈实现的。比如图中有一个foo()函数,主线程把它推入栈中,在执行函数体时,发现还需要执行上面的那几个函数,所以又把这几个函数推入栈中,等到函数执行完,就让函数出栈。当栈中的函数需要异步的时候,主线程会把需要异步的部分推给WebAPIs(浏览器开辟的线程),由WebAPIs去执行。
当所有函数都执行完毕后,所有的函数就都被推出了栈。这个时候,程序就会通过event loop(事件循环)去callback queue(任务队列)中寻找下一个任务推入栈中。而WebAPIs(浏览器开辟的线程)执行完主程序推给他的异步之后,将处理后的结果以事件的形式丢到callback queue(任务队列)中,这个事件就是我们写代码的时候的回调函数。而这个时候任务队列里的任务正在往栈(stack)中推,所以异步之后的事件也会被推到栈(stack)中执行,但这个时候他已经不在是异步的了而是同步的,JavaScript的主线程是可以执行的。由此无论是同步还是异步,所有的函数全部执行完毕。(event loop(事件循环)总是会循环的查找任务队列里是否还有任务,有就往栈(stack)中推)
再上一个图方便理解
- 小结: javascript的单线程和异步机制,总的来说JavaScript一直是单线程的,并不会去实现异步,浏览器才是实现异步的那个家伙,只是浏览器会通过事件驱动把异步之后的操作通过回调函数的形式丢到任务队列,在由JavaScript的主线程去执行回调函数。由此整个主程序都是同步,但由于浏览器线程的帮助,实现了异步的功能。
- 闭包(这里我就不多说了 再去看看pink老师的课程8)
- 弹性盒子如何实现元素的垂直居中
- computed、methods和watch的区别
- 浏览器输入url到客户端显示页面的过程
- 这个问题我觉得自己在客户端渲染这边没有答好:
一个渲染引擎大致包括HTML解释器、CSS解释器、布局和JavaScript引擎。
HTML解释器
:解释HTML语言的解释器,本质是将HTML文本解释成DOM树(文档对象模型)。
CSS解释器
:解释样式表的解释器,其作用是将DOM中的各个元素对象加上样式信息,从而为计算最后结果的布局提供依据。
布局
:将DOM和css样式信息结合起来,计算它们的大小位置等布局信息,形成一个能够表示这所有信息的内部表示模型即渲染树。
JavaScript引擎
:JavaScript可以修改网页的内容,也能修改CSS的信息,JavaScript引擎解释JavaScript代码并把代码的逻辑和对DOM和CSS的改动信息应用到布局中去,从而改变渲染的结果。
- 基本过程
(1) 解析HTML文件,创建DOM树
(2) 解析CSS,形成CSS对象模型
(3) 将CSS与DOM合并,构建渲染树(renderingtree)
(4) 布局和绘制
对渲染树上的每个元素,计算它的坐标,称之为布局。浏览器采用一种流方法,布局一个元素只需通过一次,但是表格元素需要通过多次。
最后,渲染树上的元素最终展示在浏览器里,这一过程称为“painting”。
当用户与网页交互,或者脚本程序改动修改网页时,前文提到的一些操作将会重复执行,因为网页的内在结构已经发生了改变。
- 块级作用域(考察ES6中的let const)
hr
- 川大保研
- 篮球
- 对中国移动的了解 对物联网的了解 对哪个技术最感兴趣
- 转行的原因
- 期望城市和薪资
最后希望给我一个二面的机会8
参考资料:
https://www.cnblogs.com/zhengyufeng/p/10895895.html
https://blog.youkuaiyun.com/weixin_39307273/article/details/104918716