浏览器原理面试知识图谱

1. 核心架构

现代浏览器是多进程架构 (Multi-process Architecture)。

  • Browser Process (主进程):协调、UI 展示、文件访问。
  • Renderer Process (渲染进程):解析 HTML/CSS/JS,排版并绘制页面。最核心,每个 Tab 一个(资源隔离)。
  • GPU Process:3D 绘制、硬件加速。
  • Plugin Process:Flash 等插件。
  • Network Process:网络请求。

2. 知识点概览

(1) 渲染原理 (Rendering)

  • Critical Rendering Path:DOM -> CSSOM -> Render Tree -> Layout -> Paint -> Composite。
  • Reflow & Repaint:回流必重绘,重绘不一定回流。
  • Composite Layers:利用 GPU 加速减少回流。

(2) 事件循环 (Event Loop)

  • MacroTask (script, setTimeout, UI) vs MicroTask (Promise, MutationObserver)。
  • 执行顺序:一宏 -> 清微 -> 渲染 -> 下一宏。
  • rAF:requestAnimationFrame 在渲染前执行。
  • rIC:requestIdleCallback 在空闲时执行。

(3) 垃圾回收 (Garbage Collection)

  • 标记清除 (Mark-and-Sweep):主流算法,解决循环引用。
  • 分代回收 (Generational):新生代 (Scavenge) + 老生代 (Mark-Compact)。
  • 增量标记 (Incremental):减少全停顿 (STW)。

(4) 存储与其差异 (Storage)

  • Cookie:4KB, 随请求发送, HttpOnly 防 XSS。
  • WebStorage:5MB, 纯前端, Local(持久)/Session(会话)。
  • IndexedDB:大容量 NoSQL, 异步, 事务, 二进制。

(5) 性能优化 (Performance)

  • Network:HTTP/2, CDN, Gzip, Preload, LazyLoad。
  • Rendering:减少 DOM 操作, 读写分离, 虚拟列表, CSS 动画 (GPU)。
  • Code:Tree Shaking, Code Splitting, Web Worker。
  • Metrics:LCP, INP, CLS。

3. 面试备战建议

  • 不仅要背八股文,还要结合实际场景(例如“如何优化首屏”)。
  • 手写代码题:防抖节流、深拷贝、Promise、发布订阅、Event Loop 输出题。
  • 关注新技术:WebAssembly, PWA, Service Worker。