URL 状态与状态机

共 51 题
#

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 有长度限制,压缩序列化牺牲可读性换取长度,超长时回退到短引用关联存储 ✓ 正确答案