欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

2020-10-23面试题整理

程序员文章站 2022-07-03 16:42:58
一在地址栏输入敲回车时会发生什么?1非常高频的面试题:① 网络请求:后面的老师会讲解② 页面渲染:浏览器解析数据包(html文档)③ 用户交互:页面是如何渲染的呢?1.浏览器先把文档扫描,把标签代码进行翻译(不是编译)2.把各种类型的节点(12种) 按照顺序,进行实例化3.分类解析:把css里面的代码统统合并到一起 解析为一个超级大对象(css样式结构体)把节点解析为一个具有树关系的DOM树4.把css样式结构体和dom树结合成呈现...

一在地址栏输入敲回车时会发生什么?

1非常高频的面试题:

		① 发起网络请求
		② 页面渲染:浏览器解析数据包(html文档)
		③ 用户交互:
		
		页面是如何渲染的呢?
		1.浏览器先把文档扫描,把标签代码进行翻译(不是编译)
		2.把各种类型的节点(12种) 按照顺序,进行实例化
		3.分类解析:
		  把css里面的代码统统合并到一起  解析为一个超级大对象(css样式结构体)
	      把节点解析为一个具有树关系的DOM树
		
		4.把css样式结构体和dom树结合成呈现树(render tree)
		呈现树中的节点拥有这个节点所有的信息
		window.getComputedStyle
		
		5.绘制引擎按照呈现树进行绘

2盒子模型

      1元素的偏移量
       (1)offsetParent返回作为该元素带有定位的父级元素 如果父级都没有定位则返回body
       (2)offsetTop返回元素相对带有定位父元素上方的偏移
       (3)offsetLeft返回元素相对带有定位父元素左边框的偏移
       (4)offsetWidth返回自身包括padding 边框 内容区的宽度,返回数值不带单位
       (5)offsetHeight返回自身包括padding 边框 内容区的高度,返回数值不带单位
       (6)clientTop返回元素上边框(border)的大小
       (7)clientLeft返回元素左边框(border)的大小
       (8).clientWidth返回自身包括padding,内容区的宽度,不含边框,返回数值不带单位
       (9)clientHeight返回自身包括padding,内容区的宽度,不含边框,返回数值不带单位
       (10)scrollTop返回被卷去的上侧距离,返回数值不带单位
       (11)scrollHeight返回自身实际的高度,不含边框,返回数值不带单位

3js执行机制

  - javascript是一门单线程语言,在最新的HTML5中提出了Web-Worker,但javascript是单线程这    一核心仍未改变。所以一切javascript版的"多线程"都是用单线程模拟出来的。
  • 单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。
  • 如果排队是因为计算量大,CPU忙不过来,倒也算了,但是很多时候CPU是闲着的,因为IO设备(输入输出设备)很慢(比如Ajax操作从网络读取数据),不得不等着结果出来,再往下执行。
  • JavaScript语言的设计者意识到,这时主线程完全可以不管IO设备,挂起处于等待中的任务,先运行排在后面的任务。等到IO设备返回了结果,再回过头,把挂起的任务继续执行下去。
  • 于是,所有任务可以分成两种,一种是同步任务(synchronous),另一种是异步任务(asynchronous)。同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;异步任务指的是,不进入主线程、而进入"任务队列"(task queue)的任务,只有"任务队列"通知主线程,某个异步任务可以执行了,该任务才会进入主线程执行。
    • 同步和异步任务分别进入不同的执行"场所",同步的进入主线程,异步的进入Event Table并注册函数
  • 当Event Table中指定的事情完成时,会将这个函数移入Event Queue。
  • 主线程内的任务执行完毕为空,会去Event Queue读取对应的函数,进入主线程执行。
  • 上述过程会不断重复,也就是常说的Event Loop(事件循环)。
  • 我们不禁要问了,那怎么知道主线程执行栈为空啊?js引擎存在monitoring process进程,会持续不断的检查主线程执行栈是否为空,一旦为空,就会去Event Queue那里检查是否有等待被调用的函数。

本文地址:https://blog.csdn.net/html_xiaojiu/article/details/109249112

相关标签: js