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

请解释 React 中 diff 算法的基本概念及其工作原理,包括它是如何比较虚拟 DOM 树的。

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

考察说明

考察对 React 核心 diff 机制的理解,包括其目的、假设和基本过程。

回答思路

  1. 【回答框架 1】React 的 diff 算法是一种用于比较虚拟 DOM 树差异的算法,目的是最小化实际 DOM 操作。它基于三个假设:不同元素类型产生不同的树;开发者通过 key 提示哪些子元素在不同渲染下保持稳定;同级比较按深度优先进行。
  2. 【回答框架 2】算法从根节点开始逐层比较,如果节点类型不同,则直接重建子树;如果类型相同,则更新属性。对于子节点列表,使用 key 来匹配新旧节点,以复用相同的组件实例。
  3. 【回答框架 3】该算法将复杂度从 O(n^3) 降低到 O(n),通过同层比较和最小化操作来提升性能。但它不保证完全匹配最优解,而是通过启发式策略在性能和准确性之间取得平衡。
  4. 【关键点 1】diff 算法基于三个假设:类型不同则重建、key 标识稳定节点、同级深度优先比较。
  5. 【关键点 2】使用 key 可以优化列表渲染的 diff 效率,避免不必要的重建。
  6. 【关键点 3】算法时间复杂度为 O(n),通过同层比较和最小化操作提升性能。
  7. 【易错点 1】如果不使用 key 或使用随机 key,可能导致组件状态错乱和性能下降。
  8. 【易错点 2】diff 算法只能比较同层级节点,跨层级移动节点性能较差。