# 1. Solid 的细粒度响应式原理(信号+派生+effect),与 React 重新渲染的差异? A Solid 组件在信号变化时会整体重新执行 B Solid 的更新粒度精确到模板表达式,无需 diff 整棵组件树 ✓ 正确答案 C Solid 依赖虚拟 DOM 完成差异更新 D 信号写入会触发所有 effect 无条件重跑
# 2. Solid 的依赖追踪,createMemo 如何缓存派生值,effect 的订阅与清理时机如何管理? A memo 的依赖变化后会被立即重新计算 B createMemo 每次读取都会重新执行计算函数 C createEffect 不会自动收集依赖,需要手动声明 D onCleanup 注册的清理函数在 effect 重跑前与组件卸载时执行 ✓ 正确答案
# 3. Solid Store(createStore)的代理与不可变更新,为什么 Store 的字段级订阅比信号更节省内存,在大型表单/树状数据中如何取舍? A createStore 在创建时会一次性代理包装对象的每一层 B Store 的订阅粒度可精确到字段路径,比信号更节省依赖与内存 ✓ 正确答案 C Store 与信号(createSignal)不能在同一应用中共存 D Store 更新必须整体替换整个对象
# 4. Solid 与 Signals 生态对比,Preact Signals、Million 等框架/库与 Solid 的细粒度实现与生态成熟度差异? A Million 定位为独立的全功能框架 B Preact Signals 完全抛弃了虚拟 DOM 机制 C Solid 编译 JSX 为细粒度更新表达式,无虚拟 DOM ✓ 正确答案 D Solid 的组件库生态规模已超过 React
# 5. Solid 的 Store 与 Signals,细粒度订阅的取舍? A 嵌套表单场景用 Store 的字段级订阅更合适 ✓ 正确答案 B Store 更新必须整体替换整个数据对象 C 信号(createSignal)同样支持字段级订阅 D 树状结构化数据应优先拆分为大量独立信号
# 6. Solid 的 createResource 与 Suspense,异步资源加载、refetching 与错误处理在数据获取层的工程价值? A Suspense 组件不会渲染任何占位内容 B createResource 的结果是普通可变对象 C source 信号变化会自动触发资源重新获取 ✓ 正确答案 D 资源请求失败无法被捕获或降级
# 7. Solid 中 createSignal/createMemo/createEffect 的依赖追踪机制? A 依赖关系在信号写入时通过全量扫描收集 B memo 不会缓存计算结果,每次读取都重算 C 读取信号时会把当前观察者(effect/memo)注册为该信号的依赖 ✓ 正确答案 D effect 重跑前不会执行任何清理逻辑
# 8. Solid 的 Show/For/Index 控制流组件为何比 map 更高效? A For 组件不提供 keyed 语义,只能按索引复用 B JSX 中直接 map 在数据变化时会整体重建列表 DOM 并重新收集依赖 ✓ 正确答案 C Show 组件每次条件变化都会重建模板表达式 D Index 组件以数据值作为复用 key
# 9. Show/For/Index 控制流组件相比 JSX map 的优势与 keyed 语义差异? A map 能保持响应式依赖不被重建 B Index 组件以数据值作为 key 实现实例复用 C Show 组件不支持 else/fallback 分支 D For 组件以数据项标识为 key 复用组件实例,数据移动时状态跟随 ✓ 正确答案
# 10. SolidStart 的 server functions 与路由数据加载如何实现"零序列化开销"的服务端集成? A createServerFn 编译为 RPC 调用,数据在服务端获取后直达客户端 ✓ 正确答案 B SolidStart 无法流式传输加载数据 C server functions 的代码在浏览器端执行 D server function 内部不能访问服务端密钥
# 11. batch/untrack/on 三个响应式工具函数的适用场景,什么时候需要手动合并更新、跳过依赖追踪或指定依赖? A batch 会抑制所有订阅者的更新通知 B batch 会让每次信号写入立即触发一次更新 C on 只能声明一个依赖信号 D untrack 包裹的信号读取不会注册依赖 ✓ 正确答案
# 12. Solid Context(createContext + Provider)与 React Context 的差异,为什么 Solid 中 Context 更新不会触发子树整体重渲染? A Solid 中 context 内传递信号时,消费方按读取的字段建立依赖 ✓ 正确答案 B React 的 context 更新只影响读取特定字段的表达式 C Solid 的 context 值变化会触发整个消费子树重新渲染 D Solid 的 createContext 没有 Provider 支持
# 13. SolidStart 与 Solid 生态的现状与适用场景? A SolidStart 提供 SSR、岛屿渲染与 server functions 等全栈能力 ✓ 正确答案 B Solid 生态规模在组件库与招聘市场上已超过 React C SolidStart 不支持路由与数据加载 D SolidStart 是运行在 React 之上的上层框架
# 14. Solid 细粒度更新在大型表单/列表场景的实战收益与调试成本? A Solid 更新大型列表时会整体重建 DOM 树 B Solid 需要像 React 一样手动 memo 优化组件 C Solid 的调试方式与 React 完全一致 D Solid DevTools 提供依赖追踪与组件数据的检查能力 ✓ 正确答案
# 15. SolidStart 的 Islands 与 Astro 的差异,客户端水合粒度与"零 JS 默认"策略的实现区别? A SolidStart 默认完全不做任何水合 B Astro 的岛屿只能使用 React 框架 C Astro 默认输出零 JS 的静态 HTML,仅显式标注的岛屿被水合 ✓ 正确答案 D Astro 的岛屿水合会覆盖整个页面
# 16. Solid 与 React 的渲染模型对比,组件只执行一次? A React 组件函数只执行一次 B Solid 组件函数在每次信号变化时重新执行 C Solid 组件只执行一次,更新由信号驱动的表达式完成 ✓ 正确答案 D Solid 组件体内的重逻辑会随每次更新重复执行
# 17. Solid 的 ErrorBoundary,错误边界、fallback 与错误重抛机制的设计? A ErrorBoundary 可以捕获事件处理器内的所有错误 B fallback 渲染后无法重置或重试 C ErrorBoundary 只能捕获渲染期与生命周期中的错误并渲染 fallback ✓ 正确答案 D 错误边界一旦捕获错误就不能再抛出给上层