React 面试真正会问的问题

作者 Aaron Cao · 更新于

React 面试真正会问的问题
首先会考 Hooks 相关问题:useState、useEffect 依赖项,以及过期闭包。接着是渲染相关:协调机制、为什么列表需要 key,以及如何用 memo、useMemo 和 useCallback 控制重渲染。大多数流程还会加一道现场编程题,常见的是“获取数据并过滤列表”或“带防抖的搜索框”。

首先会考 Hooks 相关问题:useState、useEffect 依赖项,以及过期闭包。接着是渲染相关:协调机制、为什么列表需要 key,以及如何用 memo、useMemo 和 useCallback 控制重渲染。大多数流程还会加一道现场编程题,常见的是“获取数据并过滤列表”或“带防抖的搜索框”。

哪些 React 概念最常被考到?

React 的知识面非常广,很多题库把每个角落都当作同等重要,但事实并非如此。这一节聚焦真正决定大多数面试结果的概念,方便你按照真实的考察分布来练习。以下四类问题最为集中:

  • Hooks 机制:hooks 的使用规则、useEffect 依赖数组里该放什么、清理函数(cleanup function),以及 effect 或回调读到旧 state 值的过期闭包问题。
  • 渲染:什么会触发重渲染、协调(reconciliation)如何对比树结构,以及为什么列表需要稳定的 key。
  • 状态设计:状态提升、受控与非受控输入的区别,以及什么时候该用 context、什么时候该用外部状态库。
  • 性能:React.memo、useMemo、useCallback,以及它们何时是噪音、何时真正有用。

面试官会追问每个概念背后的原因。只背出“key 需要唯一”拿不到分;能说清楚 React 在列表重新排序时如何使用 key 才是关键。

现场编程练习会考什么?

大多数 React 面试环节都包含现场搭建一个小组件。以下这些练习题在不同公司之间高度一致:

  • 从 API 获取列表数据,渲染出来,并加上文本过滤功能。
  • 给搜索输入框加上防抖,并取消过期的请求。
  • 搭建一个带校验的表单,使用受控输入。
  • 写一个计数器或计时器,并正确清理它的 effect。
  • 从重复的逻辑里提取出一个自定义 hook。

举例来说,应聘中级前端岗位的工程师可能需要搭建“获取数据并过滤”的列表,随后会被追问加载状态、错误状态,以及组件在请求过程中被卸载会发生什么。真正决定胜负的是这些延伸问题,基础练习只是入场门槛。

在限时且伴随追问的条件下反复练习,才能把这些变成本能反应;模拟面试页面介绍了如何进行有面试官追问的限时训练。

高级岗位的 React 问题长什么样?

高级岗位的面试会从机制类问题转向判断力类问题。你会被问到状态架构:哪些数据放在组件 state 里、哪些该放进 store、服务端状态和 UI 状态有什么区别,以及缓存该放在哪一层。渲染性能问题会更具体:如何定位一次卡顿交互的根源、该用记忆化(memoization)还是重构,以及如何解读 profiler 的火焰图。

如果团队在 React 之上使用了某个框架,就会涉及服务端渲染和 hydration:什么是 hydration、为什么会出现不匹配,以及把工作移到服务端能带来什么好处。测试相关问题更关注策略——组件级测试和端到端测试分别该测什么,而不是某个测试库的 API 细节。

关于面试形式,以及前端面试流程通常如何编排这些环节,可参见面试类型汇总

该怎么练习,才能在真实面试中用得上?

看教程只能建立“眼熟”,建立不了“能回想”,而面试考察的正是被人看着时的回想能力。真正有效的办法是按面试的真实形式反复练习:从空文件开始搭建这些标准练习题,边写边讲解思路,并在被打断提问时不丢失思路。相邻技术栈的题库,包括 React 面试仍会从中开场的纯 JavaScript 基础题,都收录在题库汇总页面。

说句实话:React 面试几乎总是在共享编辑器里进行,或者你的屏幕本身就是可见的,屏幕上的任何内容面试官都能看到。AI 助手应该用在准备和练习阶段,而不是共享屏幕的面试现场本身。如果是合规的现场使用场景,SubcueAI 的悬浮窗只在你本机运行,不会有机器人加入通话;练习场景的配置方法见教程页面。

常见问题

还需要了解 class 组件吗?

至少要能读懂。仍有大量生产代码在使用 class,所以最多会被问到生命周期方法,以及它们如何对应到 hooks。涉及新代码的问题几乎都基于函数组件。

Hooks 相关问题到底会问多深?

比函数签名深得多。面试官会问依赖数组为什么存在、什么是过期闭包以及如何修复、清理函数什么时候执行,以及为什么 state 更新会被批处理。一个亲手调试过过期闭包的真实故事,比背下每个内置 hook 都更有说服力。

React 面试会涉及 Next.js 问题吗?

如果团队使用 Next.js,就会涉及:路由、服务端数据获取,以及 hydration 基础知识。使用纯 React 的团队很少要求这些,而且无论如何,核心 React 问题才是决定面试结果的关键。

面试中还会问 Redux 吗?

更多是作为状态管理的讨论,而不是 API 问答。你需要比较组件 state、context 和外部状态库,并说明各自适用的场景。能讲清楚取舍,比记住某个具体库更重要。

相关问题

← 更多关于 按岗位与主题分类的面试问题