浏览器面试常问的问题

简介: 浏览器面试常问的问题

1.浏览器的主要组成部分是什么?

  • ⽤户界⾯ - 包括地址栏、前进/后退按钮、书签菜单等。除了浏览器主窗⼝显示的您请求的⻚⾯外,其他显示的各个部分都属于⽤户界⾯
  • 浏览器引擎 - 在⽤户界⾯和呈现引擎之间传送指令。
  • 呈现引擎 - 负责显示请求的内容。如果请求的内容是 HTML,它就负责解析 HTML 和 CSS 内容,并将解析后的内容显示在屏幕上
  • ⽹络 - ⽤于⽹络调⽤,⽐如 HTTP 请求。其接⼝与平台⽆关,并为所有平台提供底层实现
  • ⽤户界⾯后端 - ⽤于绘制基本的窗⼝⼩部件,⽐如组合框和窗⼝。其公开了与平台⽆关的通⽤接⼝,⽽在底层使⽤操作系统的⽤户界⾯⽅法。
  • JavaScript 解释器。⽤于解析和执⾏ JavaScript 代码
  • 数据存储。这是持久层。浏览器需要在硬盘上保存各种数据,例如 Cookie。新的 HTML 规范 (HTML5) 定义了“⽹络数据库”,这是⼀个完整(但是轻便)的浏览器内数据库

2.浏览器是如何渲染UI的?

  • 浏览器获取HTML⽂件,然后对⽂件进⾏解析,形成DOM Tree
  • 与此同时,进⾏CSS解析,⽣成Style Rule
  • 接着将DOM Tree与Style Rules合成为 Render Tree
  • 接着进⼊布局(Layout)阶段,也就是为每个节点分配⼀个应出现在屏幕上的确切坐标
  • 随后调⽤GPU进⾏绘制(Paint),遍历Render Tree的节点,并将元素呈现出来
  1. DOM Tree是如何构建的?
  • 转码: 浏览器将接收到的⼆进制数据按照指定编码格式转化为HTML字符串
  • ⽣成Tokens: 之后开始parser,浏览器会将HTML字符串解析成Tokens
  • 构建Nodes: 对Node添加特定的属性,通过指针确定 Node 的⽗、⼦、兄弟关系和所属 treeScope
  • ⽣成DOM Tree: 通过node包含的指针确定的关系构建出DOM Tree

4.浏览器重绘与重排的区别?

  • 重排: 部分渲染树(或者整个渲染树)需要重新分析并且节点尺⼨需要重新计算,表现为重新⽣成布局,重新排列元素
  • 重绘: 由于节点的⼏何属性发⽣改变或者由于样式发⽣改变,例如改变元素背景⾊时,屏幕上的部分内容需要更新,表现为某些元素的外观被改变

5.如何触发重排和重绘?

  • 添加、删除、更新DOM节点
  • 通过display: none隐藏⼀个DOM节点-触发重排和重绘
  • 通过visibility: hidden隐藏⼀个DOM节点-只触发重绘,因为没有⼏何变化
  • 移动或者给⻚⾯中的DOM节点添加动画
  • 添加⼀个样式表,调整样式属性
  • ⽤户⾏为,例如调整窗⼝⼤⼩,改变字号,或者滚动。
相关文章
|
2月前
|
Web App开发 编解码 前端开发
面试题22:如何测试Web浏览器的兼容性?
面试题22:如何测试Web浏览器的兼容性?
|
3月前
|
存储 算法 前端开发
【面试题】说一下浏览器垃圾回收机制?
【面试题】说一下浏览器垃圾回收机制?
|
7月前
|
前端开发 安全 应用服务中间件
前端经典面试题 | 浏览器跨域
前端经典面试题 | 浏览器跨域
|
3月前
|
缓存 网络协议 前端开发
面试题:浏览器中输入URL返回页面过程?
面试题:浏览器中输入URL返回页面过程?
90 0
|
3月前
|
消息中间件 前端开发 Java
【面试题】前端必修-浏览器的渲染原理
【面试题】前端必修-浏览器的渲染原理
|
8月前
|
JavaScript 前端开发 API
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber能带来浏览器的加速吗
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber能带来浏览器的加速吗
35 0
|
8月前
|
前端开发
热点面试题:浏览器和Node的宏任务和微任务?
热点面试题:浏览器和Node的宏任务和微任务?
|
8月前
|
JavaScript 前端开发
浏览器中的事件循环和Node.js中事件循环的区别(经典面试题)
浏览器中的事件循环和Node.js中事件循环的区别(经典面试题)
478 0
|
8月前
|
Web App开发 网络协议 网络安全
面试:从 URL 在浏览器被被输入到页面展现的过程中发生了什么?
经有这么一道面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么? 相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建立了多少连接、使用什么协议被下载下来的呢?
|
消息中间件 存储 Web App开发
【前端面试知识题】- 2. 浏览器
需要着重指出的是,这是一个渐进的过程。为达到更好的用户体验,渲染引擎会力求尽快将内容显示在屏幕上。它不必等到整个 HTML 文档解析完毕之后,就会开始构建呈现树和设置布局。在不断接收和处理来自网络的其余内容的同时,渲染引擎会将部分内容解析并显示出来。
【前端面试知识题】- 2. 浏览器