# 1. SolidStart 在 Solid Signals 协同 SSR 的现代工程价值 A Solid 的细粒度响应式使得客户端更新无需整棵虚拟 DOM 协调 ✓ 正确答案 B Solid 依赖虚拟 DOM 的 diff 算法来更新页面 C SolidStart 不支持流式渲染 D Solid 的信号状态无法在服务端复用
# 2. SvelteKit/SolidStart/Qwik City 现代 SSR 元框架的工程取舍 A Qwik 通过序列化状态并延迟加载代码,在交互时才执行所需逻辑 ✓ 正确答案 B Qwik 仍然需要在加载时执行全量水合 C Qwik 依赖虚拟 DOM 进行 diff D Qwik 与 React 使用完全相同的运行时
# 3. Nuxt 3 + Nitro 与 Next.js 16 在边缘 SSR 工程取舍 A Nitro 只能部署到 Node.js B Nitro 不支持流式响应 C Nitro 通过预设(preset)支持部署到多种边缘运行时 ✓ 正确答案 D Nitro 是 Next.js 的专用服务端引擎
# 4. HTMX 与"HTML over the wire"超媒体驱动 UI 的边界 A 它要求在客户端维护复杂的状态管理 B 它通过服务端返回 HTML 片段并替换 DOM 局部区域来驱动 UI ✓ 正确答案 C 它不支持与服务端进行任何交互 D 它必须以虚拟 DOM 的方式渲染
# 5. SSG 构建时预渲染与数据预取(getStaticProps、getStaticPaths) A 二者都在客户端运行时执行 B getStaticProps 在构建时执行数据预取,getStaticPaths 生成动态路由的路径 ✓ 正确答案 C getStaticPaths 负责渲染静态 HTML 内容 D 二者只能用于客户端组件
# 6. Vercel Edge Functions 与 Cloudflare Workers 在边缘 SSR 的工程取舍 A Cloudflare Workers 更开放,支持多种框架并通过适配器部署 ✓ 正确答案 B 两者都完全绑定特定平台,无法迁移 C Vercel Edge Functions 与任何框架都无集成 D Workers 不支持 KV 等存储
# 7. 请求作用域状态在 SSR 的隔离,AsyncLocalStorage、React cache() 与 Next headers()/cookies() 如何避免请求间串数据,以及模块级可变状态的泄漏风险? A AsyncLocalStorage 通过异步上下文为每个请求隔离状态 ✓ 正确答案 B React cache() 提供的是全局记忆化缓存 C 模块级可变状态是安全的数据共享方式 D Next headers() 可以在任意组件中运行时读取
# 8. 水合(Hydration)树一致性策略(leaf-first/selective/partial) A 它允许优先水合用户交互的高优先级部分,低优先级后台处理 ✓ 正确答案 B 它对整棵树一次性完成水合 C 它只在服务端渲染,不涉及客户端 D 它完全不绑定事件监听
# 9. React 19 的 Selective Hydration 在多 Suspense 边界的优先级 A 所有 Suspense 边界必须同时水合 B 水合只能在服务端完成 C 用户正在交互的 Suspense 边界会被优先水合 ✓ 正确答案 D Suspense 边界与优先级调度无关
# 10. CSR、SSR、SSG、ISR 的对比与场景 A 所有页面都应使用 CSR B SSR 完全不产生服务器计算成本 C SSG 最适合动态数据密集的应用 D ISR 在 SSG 基础上结合了增量重新验证,兼顾速度与更新 ✓ 正确答案
# 11. SSR(服务端 HTML 渲染 → 客户端 Hydration → 交互就绪) A 服务端渲染输出后页面立即具备完整交互能力 B 客户端水合在服务端 HTML 上重建组件树并绑定事件 ✓ 正确答案 C 水合不需要客户端执行任何组件逻辑 D SSR 的首屏与交互就绪是同一时刻
# 12. SSR 注水数据序列化的安全(serialize-javascript 转义 </script>、防止 JSON 注入 XSS、XSS 上下文隔离) A serialize-javascript 会转义 `</script>` 等危险序列以阻止 JSON 注入 ✓ 正确答案 B 直接把 JSON 放进 script 标签是安全的 C 注水数据不需要任何转义 D 只在服务端执行,不会产生 XSS 风险
# 13. ISR 的 stale-while-revalidate 语义与回源并发(cache stampede)的 single-flight/锁治理 A 缓存过期时直接返回 500 B ISR 过期时先返回旧版本,后台重新生成,并用 single-flight 合并并发重建 ✓ 正确答案 C 所有请求都强制回源重新渲染 D cache stampede 是安全特性,无需处理
# 14. Next.js 15 默认 Turbopack 与可选 next dev --webpack 在团队迁移的工程价值 A Turbopack 是 JavaScript 编写的打包器 B Next.js 15 默认启用 Turbopack,并保留 next dev --webpack 作为回退 ✓ 正确答案 C Turbopack 不支持 HMR D 迁移到 Turbopack 后无法自定义任何配置
# 15. Astro 的 Islands 架构与零 JS 默认 A 默认静态零 JS,只有标记为交互的岛屿才加载脚本 ✓ 正确答案 B 页面所有组件必须加载 JS 才能渲染 C 一个页面只能使用一种框架 D 岛屿之间天然共享状态
# 16. Nuxt 4 的 Nitro 引擎与混合渲染 A Nitro 只能部署到 Node.js B 通过 route rules 可按路由配置 SSG、SWR、SSR、SPA 等渲染模式 ✓ 正确答案 C 混合渲染要求所有页面使用同一种模式 D Nitro 不支持 Edge 部署
# 17. SSR 的 useId 与服务端-客户端 ID 一致性 A useId 基于随机数生成 ID B useId 只在客户端可用 C useId 基于组件树位置生成稳定 ID,保证服务端与客户端一致 ✓ 正确答案 D useId 生成的 ID 无法避免冲突
# 18. Streaming SSR 的分块渲染与选择性 Hydration A 流式 SSR 会把整个页面一次性渲染完成 B 选择性水合与流式渲染无关 C 流式 SSR 先发送 shell 与就绪块,随后按 Suspense 边界补发并选择性水合 ✓ 正确答案 D 流式渲染只能用于静态页面
# 19. 流式 SSR 与 CDN/反向代理缓冲的协作(X-Accel-Buffering、proxy_buffering off 与分块传输) A 需关闭 proxy_buffering 或设置 X-Accel-Buffering: no 才能让流式不被缓冲吞掉 ✓ 正确答案 B 反向代理默认不缓冲响应,流式天然生效 C chunked 传输会破坏流式渲染 D 流式 SSR 与 CDN 无关
# 20. Hydration 期间的交互阻塞(INP 恶化)与选择性水合(selective hydration)调度的优化 A 水合只发生在服务端,不影响客户端 B 水合占用主线程会阻塞交互并恶化 INP,选择性水合可优先水合用户交互的边界 ✓ 正确答案 C 水合开销与 INP 无关 D 选择性水合会降低所有交互的优先级
# 21. Resumability(Qwik)的 lazy boundary 与 Serializable QRL 工程价值 A Qwik 仍需在页面加载时执行全量水合 B QRL 只能在客户端生成 C QRL 把事件处理器序列化为 URL,交互时才加载对应代码 ✓ 正确答案 D Qwik 的 lazy boundary 与代码加载无关
# 22. Server-only 模块与 Client-only 模块的打包边界 A 服务端代码可以随意进入客户端 bundle B 通过 import 'server-only' 可让服务端模块在客户端被引用时报错,强制边界 ✓ 正确答案 C 打包边界只影响体积,不影响安全 D 客户端也可以访问数据库密钥
# 23. RSC Payload 的工作机制与浏览器调试 A RSC Payload 是纯 HTML,不含组件引用 B RSC Payload 无法在浏览器中调试 C RSC Payload 只在客户端生成 D RSC Payload 序列化 Server Components 并引用 Client Component 模块,客户端据此重建组件树 ✓ 正确答案
# 24. Partial Hydration 与 Islands 架构 A 两者都要求对整棵组件树水合 B Partial Hydration 会加载全部 JS C Islands 架构无法使用任何框架 D Islands 是 Partial Hydration 的一种实现,只对独立交互组件水合 ✓ 正确答案
# 25. React Compiler 1.0 在国际化/可访问性的工程价值 A 它编译期自动记忆化,减少不必要的重渲染,惠及 i18n 与 a11y ✓ 正确答案 B 它需要开发者手动为每个组件写 memo C 它只作用于服务端 D 它无法与国际化框架协作
# 26. Next.js 15 App Router 的 Server Components 与 Client Components 边界 A 默认所有组件都是 Client Components B Server Components 数据无法访问数据库 C Client Component 可以任意导入 Server Component 并传函数 D 通过 "use client" 声明交互边界,Server 与 Client 之间只能传递可序列化 props ✓ 正确答案
# 27. Next.js 15 的 Server Actions 在表单提交与数据库操作的工程价值 A 表单可直接绑定 Server Action,在其服务端逻辑中做数据库操作并 revalidate ✓ 正确答案 B Server Actions 在客户端执行 C 使用 Server Actions 仍需手写 fetch 与 API 路由 D Server Actions 无法访问数据库
# 28. Nuxt 3 在 Vue 生态的 SSR/SSG/SPA 多模式部署的工程实践 A Nuxt 3 只能使用 SSR 一种模式 B SPA 模式无法部署到静态托管 C 通过 ssr 选项与 routeRules 可在同一应用内混合 SSR/SSG/SPA ✓ 正确答案 D routeRules 只能用于鉴权
# 29. Nuxt 3 的 Nitro 引擎在多平台部署(Node、Deno、Bun、Workers) A Nitro 通过 preset 把同一应用编译到 Node、Deno、Bun、Workers 等多平台 ✓ 正确答案 B Nitro 只能部署到 Node.js C 不同平台需要维护多份代码 D Nitro 不支持边缘运行时
# 30. Astro 5+ 在内容驱动型站点的多框架集成(React、Vue、Svelte) A Astro 只能使用一种框架 B Astro 可在 .astro 文件中混用 React、Vue、Svelte 等组件作为岛屿 ✓ 正确答案 C Astro 不支持内容集合 D Astro 只能做纯静态站点,无法 SSR
# 31. SolidStart 在 Solid.js 生态的 SSR 与流式渲染的现代应用 A SolidStart 只支持纯静态渲染 B SolidStart 的流式渲染会导致水合不一致 C SolidStart 通过 Suspense 流式下发数据,且与细粒度 Signal 状态天然一致 ✓ 正确答案 D SolidStart 不支持 SSR
# 32. TanStack Start(Alpha)在全栈 TanStack 生态的 SSR 工程价值 A 它是 TanStack 生态的全栈框架,与 TanStack Router/Query 深度集成,实现端到端类型安全 ✓ 正确答案 B 它只能做纯 CSR C 它已完全稳定且生态成熟 D 它不支持服务端数据加载
# 33. Next.js 15 的 fetch 缓存与重新验证(revalidate)的工程策略 A Next.js 15 默认总是缓存所有 fetch 请求 B revalidate 只能使用时间驱动 C fetch 缓存无法关闭 D 通过 revalidateTag/revalidatePath 可实现按需重新验证,配合时间 revalidate 平衡性能与新鲜度 ✓ 正确答案
# 34. Nuxt 3 的 useFetch 与 useAsyncData 在 SSR 数据获取的边界 A useFetch 无法处理接口数据 B useAsyncData 只能在客户端使用 C useFetch 是 useAsyncData 对 fetch 的封装,二者都支持 SSR 预取与客户端复用 ✓ 正确答案 D 二者不能设置 key 去重
# 35. Astro 5+ 的 Server Islands(按需 SSR 组件群岛) A 它要求整页都是 SSR B 它只能在客户端水合 C 它让静态页面中的动态区域按需在服务端渲染 ✓ 正确答案 D 它不支持个性化内容
# 36. Astro 的 client:load/client:idle/client:visible 指令的 Islands 边界 A 所有岛屿都必须在页面加载时立即水合 B 静态内容也默认加载 JS C client:idle 表示立即加载 D client:visible 在元素进入视口时才加载水合该岛屿 ✓ 正确答案
# 37. 边缘渲染(Cloudflare Workers、Vercel Edge、Deno Deploy) A 边缘渲染只能在用户本地执行 B 边缘渲染无任何运行时限制 C 边缘渲染把代码部署到全球 PoP 就近处理请求,降低延迟但受运行时约束 ✓ 正确答案 D 边缘渲染需要完整 Node.js 环境
# 38. ISR 增量静态再生成与按需重新验证 A ISR 只能由时间驱动,无法按需刷新 B 按需重新验证通过 revalidatePath/revalidateTag 在事件发生后立即失效页面 ✓ 正确答案 C 按需重新验证只能用于 SPA D ISR 页面无法被缓存
# 39. Speculation Rules API 的 eagerness/target_hint 与 INP 替代 FID的现代取舍 A INP 只衡量首次输入延迟 B INP 衡量会话中所有交互的输入到下一帧延迟并取最差,取代 FID 成为响应性指标 ✓ 正确答案 C FID 与 INP 完全等价 D INP 与交互无关
# 40. 请求记忆化(request memoization),React/Next 的 cache 函数与 fetch 去重在单次请求内避免重复请求的机制与跨请求失效边界? A 请求记忆化只在单次请求内去重,跨请求持久缓存由 Data Cache 承担 ✓ 正确答案 B React cache() 是持久化的跨请求缓存 C fetch 去重会跨请求生效 D 请求记忆化没有作用域限制
# 41. Astro 5+ 的 View Transitions 在多页应用的视觉连续性工程实践 A 它要求整套应用改为 SPA 才能工作 B 它通过轻量客户端路由与 View Transitions API 为 MPA 提供视觉连续性,并渐进增强 ✓ 正确答案 C 它不支持状态保持 D 它依赖重型前端框架
# 42. Remix 的 useLoaderData 与 useFetcher 在数据流的现代应用 A useFetcher 用于发起非导航的数据请求,不改变 URL ✓ 正确答案 B useLoaderData 用于发起 POST 请求 C 二者都只能读取导航数据 D useFetcher 无法用于表单提交
# 43. SvelteKit 的 load 函数在 SSR 数据获取的现代实践 A load 返回的数据无法在水合时复用 B load 函数只能在客户端执行 C +page.server.js 的 load 只在服务端执行,可访问数据库 ✓ 正确答案 D +page.server.js 与 +page.js 的 load 行为完全相同
# 44. Astro 5+ 的 Content Collections 在类型化内容的工程应用 A 它无法在构建期校验内容 B 它只能存储纯字符串 C 它通过 schema 定义内容类型并生成类型安全校验 ✓ 正确答案 D 它要求内容必须来自数据库
# 45. SSR 中的数据预取、序列化传输与客户端注水同步 A 客户端水合时通常重新请求所有数据 B 水合无法使用服务端数据 C 序列化数据与服务端渲染无关 D 服务端预取数据序列化后传给客户端,水合时复用同一份数据保证一致 ✓ 正确答案
# 46. SSR 内存泄漏(请求级状态隔离)与全局变量污染 A 请求级状态应通过 AsyncLocalStorage 等机制隔离,避免污染与泄漏 ✓ 正确答案 B 模块级可变状态在并发请求下是安全的 C 内存泄漏与全局变量无关 D SSR 进程不会复用,不存在污染
# 47. CDN 缓存与 SSR 缓存策略 A SSR 页面永远不能缓存 B 静态资源长缓存、HTML 短缓存或按需失效,动态内容不缓存或极小 TTL,可分层缓存兼顾性能 ✓ 正确答案 C 缓存键与 Cookie 无关 D CDN 缓存会增加回源压力
# 48. Cloudflare Durable Objects 协同边缘 SSR 在会话状态的工程价值 A DO 提供最终一致性,适合 KV 场景 B DO 无法跨 PoP 工作 C DO 单对象串行处理请求,保证单会话强一致,适合边缘 SSR 会话状态 ✓ 正确答案 D DO 与 KV 的语义完全相同
# 49. 同一路由应运行在 Edge SSR 还是 Node SSR,如何把冷启动、CPU/内存上限、数据库距离、流式响应能力、区域合规和 p95 TTFB 放进可重复的选型基准,而不是只比较函数启动速度 A 只需比较函数启动速度即可 B 数据库距离与选型无关 C Edge 永远优于 Node D 应建立可重复基准,综合冷启动、CPU/内存上限、数据库距离、流式能力、合规与 p95 TTFB 等维度 ✓ 正确答案
# 50. 请设计 Cloudflare Workers + Durable Objects + R2 的登录会话与用户文件架构,Durable Object 如何保证单会话串行一致性,R2 如何保存大对象,跨区域故障和对象迁移时怎样恢复会话指针 A R2 负责会话强一致,DO 负责存大对象 B DO 单对象串行处理保证会话强一致,R2 保存大对象,会话指针指向 R2 对象键便于迁移恢复 ✓ 正确答案 C 会话数据应直接存进 R2 D DO 无法跨区域迁移