# 1. React 测试(Testing Library、Vitest Browser Mode) A Vitest Browser Mode 与 jsdom 环境完全相同 B Testing Library 依赖组件内部实现断言 C Browser Mode 比 jsdom 更快 D Testing Library 用用户视角查询与交互,jsdom 适合逻辑测试、Browser Mode 测真实浏览器行为,两者分层使用 ✓ 正确答案
# 2. TanStack Router 类型安全路由的能力边界 A TanStack Router 的类型安全只覆盖路径参数 B 类型安全与运行时校验完全无关 C TanStack Router 通过代码生成让路径、search、loader 数据全链路类型化,依赖 TS 与 schema 双写 ✓ 正确答案 D TanStack Router 适合所有规模项目
# 3. View Transitions API 在 SPA 路由切换的过渡编排与 prefers-reduced-motion 可访问性的工程实践 A 通过命名视图编排共享元素过渡,prefers-reduced-motion 时禁用动画,无 API 浏览器自动回退 ✓ 正确答案 B View Transitions 的动画与可访问性无关 C reduced-motion 用户也应看到完整动画 D 过渡期间不需要管焦点
# 4. React Router v8 在 SPA/数据路由(loader/action) A 数据路由用 loader 获取、action 提交并自动 revalidate,SPA 下在客户端执行,组件不再手写加载三件套 ✓ 正确答案 B loader 只能在 SSR 中执行 C action 返回的数据需要用 useLoaderData 读取 D SPA 模式不支持 <Form>
# 5. React Hook Form(RHF,uncontrolled + ref) A RHF 用非受控 ref 注册 + 独立表单 store,输入不触发 React 渲染,Controller 桥接受控场景 ✓ 正确答案 B RHF 每次按键都会触发 React 重渲染 C RHF 不能与 Zod 集成 D RHF 的所有字段变化都会重渲染整个表单
# 6. React Router v8 的 URL 状态(searchParams)在表单状态恢复与刷新重入的工程取舍 A 筛选分页等可分享状态放 searchParams 可恢复可回溯,草稿与敏感数据应留在本地状态 ✓ 正确答案 B 所有表单状态都应放进 URL C searchParams 不能传给 loader D URL 状态适合存放 token 等敏感信息
# 7. React Router v8(Remix 演进)的 loader/action 模式与嵌套路由 A 嵌套路由的 loader 串行执行 B 嵌套路由并行执行各层 loader、数据按层归属,v7 起 Remix 数据能力并入 React Router 形成框架模式 ✓ 正确答案 C 父布局在子路由切换时会卸载 D action 提交后不会重跑 loader
# 8. Conform(Progressive enhancement first、原生 FormData API) A Conform 依赖受控 state 管理表单值 B Conform 的表单在无 JS 时完全不可用 C Conform 以 FormData 为核心、渐进增强优先,无 JS 可原生提交,与服务端校验单一来源 ✓ 正确答案 D Conform 与 React 19 form action 不兼容
# 9. Formik 受控模式与现代取舍 A Formik 是受控模式,状态可预测但大表单每次输入整表重渲染,现代选型大表单偏向 RHF/Conform ✓ 正确答案 B Formik 采用非受控模式避免重渲染 C Formik 的校验只能在提交时运行 D Formik 不能与 Yup 集成
# 10. React 19 RCE 漏洞(CVE-2025-55182 等,19.0.1/19.1.2/19.2.1 修复) A React 19 曾存在 RCE 类漏洞(如 CVE-2025-55182),应升级修复版本并坚持用户内容转义与消毒原则 ✓ 正确答案 B RCE 漏洞只影响服务端渲染 C dangerouslySetInnerHTML 是安全的,可以放心使用 D 安全漏洞与依赖版本无关
# 11. React 19 RSC + next/form 在渐进增强(PWA/Slow Network) A 无 JS 时 next/form 的表单完全不可用 B 渐进增强需要客户端校验兜底 C RSC + form action 让表单无 JS 时原生提交、有 JS 时流式增强,慢网络下首交更快且功能不丢 ✓ 正确答案 D 表单的 name 属性在渐进增强中无关紧要
# 12. React Hook Form 在非受控 + Controller 模式与 React 19 受控提交的取舍 A Controller 让 RHF 的所有字段都变成受控 B RHF 管输入性能与校验、form action 管提交语义,可组合使用,受控字段值需手动合并进 FormData ✓ 正确答案 C React 19 form action 能解决字段级输入性能 D RHF 不能调用 Server Actions
# 13. React Router v8 与 Remix v3 在 file-based 路由、loader/action 与 SSR 的合并路线取舍 A Remix 与 React Router 共享 loader/action 数据内核,Remix 提供全栈 SSR 开箱能力,Router 保持库形态自组 ✓ 正确答案 B Remix 与 React Router 是两套完全无关的数据模型 C v8 的 file-based 路由不支持类型生成 D SPA 下 loader 只能在服务端执行
# 14. React Router v8 的数据加载 API(loader/action)与 TanStack Router 的 type-safe loader 在工程边界 A 两者的 loader 类型安全程度完全相同 B React Router 的 loader 不支持数据校验 C TanStack 靠代码生成强制 loader 数据与 search 类型贯通,React Router 靠约定 + 手动标注,选型看类型优先级与工具链成本 ✓ 正确答案 D TanStack 不需要 schema 定义 search
# 15. Next.js 15 的 App Router(app/)的 RSC、Server Actions 与 'use client' 边界与现代组件分层 A App Router 默认服务端渲染组件,'use client' 下移到交互叶子,Server Actions 处理变更,形成服务端外壳 + 客户端叶子分层 ✓ 正确答案 B App Router 的组件默认都是客户端组件 C 客户端组件可以直接 import 服务端组件 D 'use client' 文件中的导出不会进入客户端包
# 16. react-hook-form 7 与 TanStack Form 在 uncontrolled input、订阅与 Zod schema 校验的现代取舍 A TanStack Form 是受控表单库 B TanStack Form 每次输入都重渲染整个表单 C RHF 不支持 Zod 校验 D 两者都基于非受控 + 字段级订阅,差异在 API 形态与类型安全,选型看生态与团队偏好 ✓ 正确答案
# 17. Valibot 与 Zod 4 在 bundle size(tree-shake 友好) A Zod 4 与 Zod 3 体积完全相同 B Valibot 按校验器独立导出、tree-shake 彻底,Zod 4 模块化后体积大降但仍依赖按需导入,选型看体积与生态 ✓ 正确答案 C Valibot 的体积优势与构建配置无关 D Zod 4 无法按需导入
# 18. React 19 的 form Actions 与 Progressive Enhancement 在没启用 JS 时的表单提交工程价值 A 无 JS 时 form action 的表单完全失效 B 无 JS 时表单退化为原生 POST 到同一端点,服务端渲染返回结果,功能可用性不依赖 JS ✓ 正确答案 C 渐进增强只需要客户端校验 D 无 JS 场景不需要服务端校验兜底
# 19. Next.js 15 的 useFormStatus/useFormState 与 react-hook-form 在大型表单的边界 A useFormStatus 提供字段级校验能力 B RHF 管字段层(值、校验、联动),form action 体系管提交层(pending、结果),大型表单组合使用 ✓ 正确答案 C 两者必须二选一不能组合 D RHF 的 isSubmitting 与 useFormStatus 的 pending 语义完全相同
# 20. TanStack Form 在多实例表单、字段级订阅与跨组件状态共享的现代工程价值 A TanStack Form 的表单状态是全局单例 B 多实例表单无法隔离状态 C 字段订阅会导致整个表单重渲染 D 每个 useForm 实例状态隔离,字段级订阅只重渲染订阅组件,context 支持跨组件共享 ✓ 正确答案
# 21. React Router v8 的 revalidate 机制(afterAction 自动 refetch loader) A action 提交后 loader 永远不会自动重跑 B revalidate 只能手动调用 C action 失败也会触发 revalidate D action 成功后自动 revalidate 本路由及祖先 loader,可用 shouldRevalidate 控制范围 ✓ 正确答案
# 22. 现代 React 生态(Codemod、ESLint React Hooks 插件、react-compiler) A Codemod 能保证迁移后的行为完全等价 B Codemod 批量迁移、ESLint 插件治理规则、Compiler 自动优化,三者协同构成自动化工程文化 ✓ 正确答案 C eslint-plugin-react-hooks 只检查 useState 用法 D Compiler 能覆盖所有代码的优化
# 23. Final Form 与 React Hook Form 在大型表单性能、订阅与可恢复性的取舍(现代 React 19 时代) A Final Form 每次输入重渲染整个表单 B 两者都实现低重渲染(Field 订阅 vs ref 注册),Final 维护趋缓、RHF 紧跟 React 19 生态,新项目优先 RHF ✓ 正确答案 C RHF 不支持表单状态持久化 D Final Form 是受控方案
# 24. React Router v8 的 data router 在加载阶段如何配合 Suspense 边界做 streaming——加载器抛出的 deferred promise 何时被路由器消费,何时由组件层 fallback 接管 A 路由器在关键数据就绪后完成导航,慢数据由组件层 Await/Suspense 消费并流式填充 ✓ 正确答案 B deferred promise 完全由路由器在导航阶段消费 C loader 返回 deferred 后组件无法读取数据 D 所有数据都应该用 deferred 包装
# 25. React Router v8 的 framework 模式(route module + action + loader) A framework 模式的路由模块只能导出组件 B framework 模式不支持类型生成 C library 模式内置 loader/action D framework 模式以 route module 约定集中 UI、loader、action 与错误,内置数据流,新项目优先 ✓ 正确答案
# 26. React Hook Form 8(beta)与 TanStack Query 在受控/非受控、字段级订阅与异步校验的协作模式上有哪些演进——表单状态与远端缓存的去重与冲突解决应如何在客户端 + Server Action 组合下设计 A 表单状态与 Query 缓存应该各自独立重复存储 B RHF8 与 Query 无法协作 C RHF 管输入状态、Query 管远端缓存,初始值来自缓存、提交后失效/更新缓存,以服务端版本号解决冲突 ✓ 正确答案 D 异步校验请求不应该走缓存