# 1. storage 事件监听与 navigator.storage.estimate 在配额预警的工程价值 A storage 事件用于跨标签同步,estimate 估算配额用于配额预警 ✓ 正确答案 B estimate 无法估算已用空间 C 配额预警与服务端无关 D storage 事件只在同标签页触发
# 2. TanStack Router 在数据获取与缓存的工程价值 A loader 预取数据并写入 Query 缓存,导航后组件直接命中 ✓ 正确答案 B 它无法与 TanStack Query 集成 C loader 只能在导航后执行 D 它不缓存数据
# 3. TanStack Router 的 type-safe 路由 与 URL 状态/路由器的协作 A 它只能处理字符串路径 B 参数类型无法编译期校验 C 路径与 search 参数在编译期推导类型,避免拼错与类型错误 ✓ 正确答案 D 它与类型安全无关
# 4. URL state 与 useSearchParams 在数据获取与缓存的工程价值 A URL 参数无法被组件读取 B useSearchParams 不能更新 URL C URL 状态与缓存无关 D URL 参数可分享、可刷新保留,作为 queryKey 部分实现缓存对齐 ✓ 正确答案
# 5. Valtio 的 proxy 响应式 在跨标签/跨窗口的工程价值 A proxy 天然跨标签同步 B Valtio 无法配合 storage 同步 C 跨窗口无需同步状态 D proxy 负责单标签响应式,跨标签需借助 storage 事件或 BroadcastChannel 同步 ✓ 正确答案
# 6. URL 作为状态(query string、hash)在 SPA 的工程应用与边界 A URL 可以承载任何状态 B URL 适合可分享可回溯的请求状态,但不宜承载超大或敏感数据 ✓ 正确答案 C hash 只能用于服务端 D 敏感数据应放 URL 便于分享
# 7. nuqs(Next.js)与 useSearchParams 在 URL 状态管理的现代实践 A nuqs 提供 useQueryState 把 URL 参数当状态读写,封装序列化与类型安全 ✓ 正确答案 B nuqs 无法处理类型解析 C useSearchParams 比 nuqs 更类型安全 D nuqs 只能用于服务端
# 8. TanStack Router 的 URL 状态内置管理相较 React Router 的工程取舍 A TanStack Router 提供 type-safe 的 search 校验,React Router 更简单但类型较弱 ✓ 正确答案 B React Router 内置 schema 校验 C 两者类型安全程度相同 D TanStack Router 无法管理 URL 状态
# 9. URL 状态序列化(自定义编解码器)在复杂对象的工程实现 A URL 可以直接承载对象 B 所有对象都适合直接放 URL C 复杂对象需自定义编解码器序列化,注意长度与特殊字符转义 ✓ 正确答案 D 序列化无需版本兼容
# 10. URL 状态在 SSR 与 SEO 的友好性相较 store 的工程取舍 A URL 状态无法被服务端读取 B store 状态对 SEO 更友好 C URL 状态可被服务端读取与索引,影响内容的状态应放 URL,纯交互状态放 store ✓ 正确答案 D 所有状态都应放 URL
# 11. 跨标签页的 storage 事件与 BroadcastChannel 在多窗口协作的取舍 A 两者机制完全相同 B BroadcastChannel 支持标签页间直接双向消息,storage 事件是借助存储的间接同步 ✓ 正确答案 C storage 事件在本页也会触发 D BroadcastChannel 无法跨标签通信
# 12. XState v5 的 actor 模型与 createMachine/setup 现代写法相较 v4 的类型安全与组合性改进 A v5 与 v4 类型能力相同 B v5 用 createActor/setup 提供更强的类型安全与 actor 组合性 ✓ 正确答案 C v5 不支持 actor 嵌套 D setup 无法声明类型
# 13. 状态图(Statecharts)在多步骤表单/支付流程建模相较 useReducer 的可视化、可测试性与复杂状态组合优势 A Statecharts 支持层次/并行/守卫,可可视化与测试,适合复杂流程建模 ✓ 正确答案 B Statecharts 无法可视化 C 状态图不能建模多步骤流程 D useReducer 更适合复杂状态组合
# 14. Zag.js headless 组件状态机与 UI 库解耦的设计哲学与 Ark UI 生态的工程价值 A Zag.js 强制绑定特定 UI 样式 B Zag.js 把交互逻辑与 UI 解耦成 headless 状态机,Ark UI 提供可定制组件 ✓ 正确答案 C Ark UI 不使用状态机 D 两者不可分离
# 15. 层级状态(Hierarchical)与并行状态(Parallel)在复杂交互(编辑器、向导)中的应用 A 层级状态嵌套子状态,并行状态让多个区域独立进行 ✓ 正确答案 B 两者功能相同 C 并行状态无法嵌套 D 层级状态只能用于简单流程
# 16. XState 的守卫(guards)、动作(actions)与 context 更新在状态机事件处理中的分工,guard 条件分支、entry/exit action 与可测试性如何组织? A guards 判断分支,actions 执行副作用,assign 更新 context,职责分离可测试 ✓ 正确答案 B actions 用于判断条件 C guards 负责更新数据 D entry/exit 只在初始状态执行
# 17. nuqs 在 React 中 URL 状态作为 state 的类型安全同步 A 它无法读取 URL 参数 B 解析器不能声明类型 C 它把 URL 参数映射为类型安全的 state,读写时自动同步 URL ✓ 正确答案 D 它只支持读取不支持写入
# 18. URLSearchParams 与查询参数的状态管理 A 查询参数值可以是非字符串 B 它只能解析不能写 C URLSearchParams 提供查询参数读写 API,配合路由实现 URL 状态管理 ✓ 正确答案 D 它无法配合 history API
# 19. sessionStorage/IndexedDB/localStorage 在状态持久化的容量与同步差异的工程价值 A 三者容量相同 B localStorage 约 5MB 同步跨会话,IndexedDB 容量大异步 ✓ 正确答案 C sessionStorage 跨标签共享 D IndexedDB 是同步的
# 20. 跨标签页同步(BroadcastChannel、StorageEvent、SharedWorker) A 三者机制完全相同 B BroadcastChannel 适合实时消息,StorageEvent 适合持久化同步,SharedWorker 适合共享计算 ✓ 正确答案 C SharedWorker 实现最简单 D StorageEvent 支持实时双向消息
# 21. 路由库(React Router、TanStack Router) A React Router 成熟生态大,TanStack Router 类型安全与 URL 状态更强 ✓ 正确答案 B TanStack Router 更成熟 C React Router 不支持 loader D 两者功能完全一致
# 22. BroadcastChannel API 在多标签跨 tab 状态同步的工程价值 A 它必须写入 localStorage 才能同步 B 它通过 postMessage 向同通道标签页广播,实现实时状态同步 ✓ 正确答案 C 它只能在同标签内通信 D 它不支持监听消息
# 23. Zustand persist middleware 与 IndexedDB(idb-keyval)持久化的协作 A persist 只能使用 localStorage B persist 可通过 createJSONStorage 自定义为 idb-keyval,获得更大容量持久化 ✓ 正确答案 C idb-keyval 无法作为 persist 的 storage D persist 不支持异步存储
# 24. OPFS / SQLite (sql.js) 在大型客户端表的工程取舍 A 两者功能相同 B SQLite 是文件存储 C OPFS 适合大文件/二进制,SQLite 适合 SQL 查询与复杂关系数据 ✓ 正确答案 D OPFS 支持 SQL 查询
# 25. Zustand 的 persist 中间件在 localStorage 持久化的工程应用 A persist 只支持 IndexedDB B rehydrate 无法恢复状态 C persist 把状态存到 localStorage 并自动 rehydrate,支持 version 迁移 ✓ 正确答案 D persist 不支持部分持久化
# 26. Redux Persist 在应用状态序列化与迁移(migrations) A whitelist 用于忽略全部状态 B persistent 无法序列化状态 C persistReducer 持久化状态,version 与 migrate 处理版本迁移 ✓ 正确答案 D 迁移仅用于服务端
# 27. Jotai 的原子状态在持久化(atomWithStorage) A 它只能在初始化时写入 B 它无法读取 storage C 它创建持久化原子,自动读写 storage 并支持跨标签同步 ✓ 正确答案 D 它无法跨标签同步
# 28. 状态持久化的版本管理与迁移策略在大型应用的工程边界 A 存储带版本号,迁移函数把旧状态转换到新 schema,异常时降级默认值 ✓ 正确答案 B 迁移只需一次 C 版本管理只影响内存状态 D 损坏数据无需处理
# 29. IndexedDB(Dexie.js、idb)在前端大量数据持久化的工程应用 A IndexedDB 容量与 localStorage 相同 B IndexedDB 是同步的 C Dexie.js 无法查询数据 D IndexedDB 容量大异步,Dexie.js/idb 提供 Promise 化封装使其更易用 ✓ 正确答案
# 30. Cookies 在状态持久化与服务端共享的工程取舍 A Cookie 不会随请求发送 B Cookie 容量远大于 localStorage C Cookie 随请求自动发给服务端,适合会话状态,但容量小且需注意安全 ✓ 正确答案 D Cookie 无法设置 HttpOnly
# 31. URL 状态在分享链接与浏览器后退/前进按钮的工程价值 A URL 状态可分享复现且随浏览器历史后退/前进恢复 ✓ 正确答案 B URL 状态无法被分享 C 后退/前进不会影响 URL 状态 D 分享链接无法复现页面状态
# 32. URL 状态(useSearchParams/URLSearchParams)作为 React 状态管理相比 Redux/Zustand 在分享链接与 SSR 的工程价值 A Redux 状态同样可分享 B URL 状态无法用于 SSR C 两者服务端可读性相同 D URL 状态可分享且服务端可读利于 SSR/SEO,Redux/Zustand 是内存状态 ✓ 正确答案
# 33. searchParams schema 化(如 Zod 解析)与 React Router data API 的 type-safe loader 协作 A Zod 只能用于表单 B loader 无法读取 URL 参数 C schema 化无法校验参数 D 用 Zod 解析 searchParams 校验与推导类型,loader 返回类型安全数据 ✓ 正确答案
# 34. URL 状态与浏览器 History API(pushState/replaceState)在 SPA 深链接与后退恢复的取舍 A pushState/replaceState 更新 URL 支持深链接与后退,路由库封装了更好的管理 ✓ 正确答案 B pushState 会刷新页面 C replaceState 新增历史记录 D History API 无法实现深链接
# 35. TanStack Router 的 useSearch 与 validateSearch 在 URL 参数 schema 校验的现代工程价值 A useSearch 返回未校验的参数 B 两者都不支持类型推导 C validateSearch 无法校验类型 D validateSearch 用 schema 校验 URL 参数,useSearch 读取类型安全的结果 ✓ 正确答案
# 36. sessionStorage 在多标签隔离与浏览器关闭后清除在表单草稿的工程价值 A 它跨标签共享数据 B 它关闭浏览器后仍保留 C 它按标签隔离并随会话结束清除,适合临时草稿保存 ✓ 正确答案 D 它比 localStorage 更持久
# 37. IndexedDB 在大型状态(Redux Persist、Zustand persist) A 两者只能用 localStorage B IndexedDB 可作为 Redux Persist/Zustand persist 的 storage,支持大容量持久化 ✓ 正确答案 C IndexedDB 无法适配 persist D IndexedDB 容量小于 localStorage
# 38. URL 状态在 SSR 注水不一致的常见问题与 hydration mismatch 的处理边界 A 客户端应忽略服务端 URL 状态 B URL 状态天然不会导致 mismatch C hydration mismatch 无影响 D 服务端与客户端 URL 状态应一致,非确定性内容延后到客户端避免 mismatch ✓ 正确答案
# 39. nuqs 的 parseAsString/parseAsInteger/parseAsArrayOf 与类型推导在工程实践的边界 A 解析器无法推导类型 B parseAsArrayOf 无法处理数组 C 解析器声明参数类型并推导到状态,解析失败时返回默认值 ✓ 正确答案 D 解析失败会抛异常
# 40. URL 状态与 React Query 的 queryKey 在缓存键的协作与一致性边界 A URL 参数作为 queryKey 一部分,需保证其序列化与 queryKey 一致以命中同一缓存 ✓ 正确答案 B queryKey 变化不会触发新查询 C URL 参数与 queryKey 无关 D 同一 URL 可命中不同缓存
# 41. Remix/Next.js 的 URL 状态管理在 form action 后重定向保留搜索条件的工程价值 A 重定向会丢失所有 URL 状态 B URL 状态无法用于表单提交 C 搜索条件作为 URL 参数,重定向时携带以保留筛选上下文 ✓ 正确答案 D 保留搜索条件只能存 store
# 42. XState 的可视化调试(Stately Inspector、VSCode 插件)与 typegen 演进在工程协作的边界 A Stately Inspector 可视化状态机,typegen 自动生成类型,提升协作与类型安全 ✓ 正确答案 B typegen 无法生成类型 C 可视化调试只用于服务端 D typegen 与状态机无需同步
# 43. 状态机与事件溯源(Event Sourcing)结合实现时间旅行调试的工程模式 A 事件溯源无法重放状态 B 时间旅行调试无需事件记录 C 状态机与事件溯源无关 D 事件序列可重放重算状态,实现时间旅行调试与状态追溯 ✓ 正确答案
# 44. XState invoke/promise actor 在异步流程(API 调用、轮询)中的错误处理与重试策略 A invoke 只能处理同步 B onError 无法处理失败 C invoke 启动异步 actor,onDone/onError 处理结果,重试与轮询通过状态转移实现 ✓ 正确答案 D 轮询无法用状态机实现
# 45. window.history.state 在 SPA 中存储临时 UI 状态(Modal 打开、表单填写)的取舍 A 它会跨页面持久保存 B 它让状态随历史后退/前进恢复,但不持久、适合少量 UI 状态 ✓ 正确答案 C 它无法随历史恢复 D 它只能存字符串
# 46. URL 状态与浏览器 SEO、可访问爬虫与社交分享卡片(Open Graph 参数) A URL 状态对 SEO 无影响 B 内容相关状态放 URL 利于爬虫索引与 OG 分享卡片,避免无意义参数污染 ✓ 正确答案 C OG 标签与 URL 无关 D 所有 URL 参数都利于 SEO
# 47. useSyncExternalStore 在订阅 window.location 与 popstate 事件以同步 URL 状态的 React 19 协作 A 它订阅 popstate 事件,getSnapshot 读取 URL,URL 变化时组件自动更新 ✓ 正确答案 B 它只能订阅 React 内部状态 C 它无法监听 popstate D 它会导致 tearing
# 48. Jotai 在跨标签/跨窗口的工程价值 A Jotai 天然跨标签同步 B Jotai 无法配合 storage C 跨窗口无需同步 D Jotai 单标签管理原子状态,跨标签需借助 atomWithStorage 或 BroadcastChannel 同步 ✓ 正确答案
# 49. Zustand 与 URL 状态/路由器的协作 A 把 URL 参数映射到 store,store 变化时更新 URL,需避免双向同步循环 ✓ 正确答案 B URL 状态无需映射到 store C 双向同步不会产生循环 D 两者无法同步
# 50. 状态机测试(@xstate/test)基于模型测试(Model-based Testing)的覆盖路径生成与工程价值 A 状态机无法作为测试模型 B 它只能手写测试用例 C 它以状态机为模型自动生成覆盖状态/转移的测试路径 ✓ 正确答案 D 路径生成无需覆盖
# 51. URL 参数的编码长度边界与压缩序列化(如 gzip+base64 query)在分享链接场景的工程取舍,以及超长参数的回退策略? A URL 无长度限制 B 超长参数无需回退 C gzip+base64 提高可读性 D URL 有长度限制,压缩序列化牺牲可读性换取长度,超长时回退到短引用关联存储 ✓ 正确答案