想要成为一名合格的前端工程师,掌握相关浏览器的工作原理是必备的,这样子才会有一个完整知识体系,要是「能参透浏览器的工作原理,你就能解决80%的前端难题」。今天总结了10道浏览器面试题及解析,作为前端开发工程师的你赶紧来看看吧!

前端必备 | 10道浏览器面试题解析,你会做吗?_java1. 常见的浏览器内核有哪些?

前端必备 | 10道浏览器面试题解析,你会做吗?_java_02

前端必备 | 10道浏览器面试题解析,你会做吗?_java2. 浏览器的主要组成部分是什么?

  1. 「用户界面」 – 包括地址栏、前进/后退按钮、书签菜单等。
  2. 「浏览器引擎」 – 在用户界面和呈现引擎之间传送指令。
  3. 「呈现引擎」 – 负责显示请求的内容。如果请求的内容是 HTML,它就负责解析 HTML 和 CSS 内容,并将解析后的内容显示在屏幕上。
  4. 「网络」 – 用于网络调用,比如 HTTP 请求。
  5. 「用户界面后端」 -用于绘制基本的窗口小部件,比如组合框和窗口。
  6. 「JavaScript 解释器」– 用于解析和执行 JavaScript 代码。
  7. 「数据存储」 – 这是持久层。浏览器需要在硬盘上保存各种数据,例如 Cookie。新的 HTML 规范 (HTML5) 定义了“网络数据库”,这是一个完整(但是轻便)的浏览器内数据库。
值得注意的是,和大多数浏览器不同,Chrome 浏览器的每个标签页都分别对应一个呈现引擎实例。每个标签页都是一个独立的进程。

前端必备 | 10道浏览器面试题解析,你会做吗?_java3. 为什么JavaScript是单线程的,与异步冲突吗

补充:JS中其实是没有线程概念的,所谓的单线程也只是相对于多线程而言。JS的设计初衷就没有考虑这些,针对JS这种不具备并行任务处理的特性,我们称之为“单线程”。

JS单线程是指一个浏览器进程中只有一个JS的执行线程,同一时刻内只会有一段代码在执行。

举个通俗例子,假设JS支持多线程操作的话,JS可以操作DOM,那么一个线程在删除DOM,另外一个线程就在获取DOM数据,这样子明显不合理,这算是证明之一。

来看段代码