前端/移动开发面试题更新 2026-08-05

请说明 React Fiber 架构的核心设计思想,并对比其与旧版 Stack 协调器在任务调度、组件树遍历和渲染中断恢复方面的差异,以及这些改进带来的性能优势。

前端/移动开发性能优化技术原理方案权衡React

考察说明

考察对 React 核心渲染机制的理解,以及能否对比新旧架构的优化点。

回答思路

  1. 【回答框架 1】React Fiber 是 React 16 引入的协调引擎重写,核心是可中断的增量渲染。它通过将渲染工作分解为称为 Fiber 的单元,并使用协作式调度器(如 requestIdleCallback 或基于优先级)在浏览器空闲时执行这些工作单元,从而避免长时间占用主线程。
  2. 【回答框架 2】旧版 Stack 算法采用递归调用遍历组件树,整个过程不可中断,一旦开始就会同步执行完整个渲染树,导致大型组件更新时阻塞主线程,出现卡顿。Fiber 将遍历方式改为链表结构,每个 Fiber 节点包含 return、child、sibling 指针,支持双向移动,从而可以部分执行并随时暂停、恢复或丢弃。
  3. 【回答框架 3】Fiber 引入了优先级概念,不同更新类型(如用户输入、动画、数据请求)具有不同优先级。调度器根据优先级决定先处理哪个更新,可以打断低优先级任务,保证高优先级任务(如输入响应)及时执行,同时利用时间切片分配渲染时间,实现流畅的用户界面。
  4. 【回答框架 4】优化方面,Fiber 支持任务的拆分和合并,通过 requestIdleCallback 或稳定调度器在浏览器空闲时段渐进式渲染;还支持错误边界、渲染阶段提交阶段的分离,以及并发模式(如 Suspense)等新特性,这些在 Stack 中难以实现。
  5. 【关键点 1】Fiber 的核心是可中断、可恢复的分片渲染,通过链表结构实现遍历。
  6. 【关键点 2】旧算法递归不可中断,Fiber 基于优先级调度,保证交互流畅。
  7. 【关键点 3】Fiber 通过时间切片和空闲调度避免主线程长时间阻塞。
  8. 【易错点 1】不要混淆 Fiber 与浏览器原生 Fiber 概念,这里指的是 React 的内部实现。
  9. 【易错点 2】不要误以为 Fiber 总是同步立即完成渲染,它按优先级分片执行。
  10. 【易错点 3】不要认为 requestIdleCallback 是所有环境都支持,React 内部有 polyfill。