# 1. TanStack Query v5 useSuspenseQuery/useSuspenseInfiniteQuery 的工程价值 A 它仍然需要手动判断 isLoading 分支 B 它不能在 SSR 场景使用 C 它让组件在数据未就绪时直接挂起,由 Suspense 边界处理加载态 ✓ 正确答案 D 它必须配合 useInfiniteQuery 使用
# 2. Query 的 SSR Streaming 与 dehydrate/hydrate 的工程价值 A 让客户端重新请求一次服务端数据 B 把服务端缓存序列化并传输到客户端复用,避免重复请求 ✓ 正确答案 C 仅用于打包体积优化 D 替代 SSR 本身
# 3. Query v5 的服务器状态缓存、queryKey、staleTime/gcTime A 两者含义完全相同 B staleTime 决定数据新鲜度,gcTime 决定缓存保留时长 ✓ 正确答案 C gcTime 决定数据新鲜度,staleTime 决定缓存保留时长 D 两者都不影响缓存行为
# 4. TanStack Router 的 router.invalidate 与 loaderDeps 依赖跟踪的工程价值 A 仅用于类型标注 B 替代 router.invalidate C 声明 loader 的响应式依赖,依赖变化时自动重新执行 loader ✓ 正确答案 D 控制 loader 的并发数
# 6. gcTime/staleTime/refetchOnWindowFocus 的策略组合 A staleTime 应始终大于 gcTime B refetchOnWindowFocus 只在窗口聚焦时刷新已过期数据 ✓ 正确答案 C 三者互不相关 D gcTime 越小刷新越频繁
# 7. Query 的 networkMode: 'offlineFirst' 在 PWA 的工程价值 A 永远不发起网络请求 B 离线时优先使用缓存,缓存缺失才等待网络恢复 ✓ 正确答案 C 只在在线时缓存 D 与默认模式完全相同
# 8. Query Key Factory 模式与类型安全 A 集中管理 key 构造并保证失效与使用一致,避免拼写错误 ✓ 正确答案 B 提升请求速度 C 替代 staleTime D 仅在 SSR 生效
# 9. 无限查询 getNextPageParam 与游标设计,基于游标 vs 基于页码的分页策略与缓存键设计 A 实现更简单 B 数据增删时不会导致后续页内容偏移 ✓ 正确答案 C 缓存键更简单 D 无需服务器配合
# 10. TanStack Router 的 defaultPreloadStaleTime 与缓存策略的工程应用 A 替代 gcTime B 控制预取并发数 C 定义预取数据在多久内视为新鲜,决定导航时是否复用 ✓ 正确答案 D 仅用于 SSR
# 11. TanStack Router 与 TanStack Query 的 loader 数据获取集成 A 通过全局变量 B 通过 localStorage C 通过 Router 的 routeContext 注入 ✓ 正确答案 D 无法传递
# 12. TanStack Query 的 queryClient.getQueryData 与 SSR 序列化协作 A 总是发起网络请求 B 同步返回缓存中的数据,不存在则返回 undefined ✓ 正确答案 C 仅用于 mutation D 异步返回 Promise
# 14. Optimistic Update、Infinite Query、Suspense Query A 先更新缓存再请求,失败时回滚 ✓ 正确答案 B 永远优先使用服务端数据 C 禁用缓存 D 只用于无限查询
# 15. queryKey factory pattern (https://tkdodo.eu/blog/effective-react-query-keys) 的工程价值 A 让 key 的创建、使用、失效保持一致并具备类型安全 ✓ 正确答案 B 加快网络请求 C 替代服务端 D 仅用于调试
# 16. offline mutation 队列与 networkMode 恢复重放,离线操作持久化与网络恢复后的冲突解决策略 A 只需按顺序执行即可 B 操作应幂等并服务端做冲突校验 ✓ 正确答案 C 只能丢弃离线操作 D 不需要持久化
# 17. TanStack Start 客户端导航、预取(preload)与 Query 缓存的协作 A 与 Query 缓存协作,预取后导航即数据就绪 ✓ 正确答案 B 预取会覆盖所有缓存 C 不支持 SSR D 每次导航都全量刷新