# 1. Svelte 5 的 Runes($state/$derived/$effect)与旧版 $: 语法的差异与迁移要点? A runes 只能写在 .svelte 组件文件中,模块文件不能使用 B 旧版 $: 语法比 runes 更灵活,支持动态创建响应式变量 C $derived 声明派生值,仅在其依赖变化时重新计算 ✓ 正确答案 D 迁移时必须一次性重写所有组件,不能渐进转换
# 2. Svelte 的编译时特性如何实现"无运行时"优势,代价是什么? A Svelte 组件在运行时依赖虚拟 DOM 进行差异更新 B Svelte 把模板编译为直接操作 DOM 的代码,运行时开销很小 ✓ 正确答案 C Svelte 完全没有任何运行时辅助代码 D 编译时特性对调试体验没有任何影响
# 3. Svelte 5 的七大核心 runes($state/$derived/$effect/$props/$bindable/$mutable/$host)各自的职责? A $derived 声明的值可以像普通变量一样赋值修改 B $bindable 用于在服务端创建全局可变状态 C $props 用于声明组件的输入属性,解构后保持响应式 ✓ 正确答案 D $host 用于替代 $state 声明普通组件状态
# 4. SvelteKit 的路由、服务端加载与表单操作(form actions)设计? A load 函数无法访问服务端私密资源 B +page.server.ts 中的 load 函数在浏览器端执行 C form actions 只在启用 JavaScript 时才能工作 D use:enhance 让表单在无 JS 时原生提交、有 JS 时增强为异步提交 ✓ 正确答案
# 5. Svelte 的 store 体系与 runes 的对比,全局状态如何组织? A runes 无法在 .svelte.js 模块中实现全局共享状态 B 组件模板中使用 $store 语法会自动订阅并在组件销毁时退订 ✓ 正确答案 C store 只能在单个组件文件内定义和使用 D derived store 可以对自身进行赋值修改
# 6. runes 如何在 .svelte.js/.svelte.ts 中实现跨组件响应式逻辑复用(store 替代)? A .svelte.js 模块中不能使用任何 runes B runes 只能写在 .svelte 组件文件中 C 模块级 $state 信号可以充当全局共享状态,等价替代 store 单例 ✓ 正确答案 D 模块级信号在 SSR 场景无需考虑请求间隔离
# 7. Svelte 5 的渐进迁移,legacy 模式与 runes 模式共存时的边界? A legacy 与 runes 模式无法在同一个应用中共存 B 启用 runes 后所有 store 都必须重写为模块信号 C runes 模式下 $: 语法被彻底禁用,无法运行 D 迁移时可以在单个组件内逐步混用新旧语法,最终统一到 runes ✓ 正确答案
# 8. Svelte 5 的 snippets(#snippet 与 @render)替代 slot 的模板复用与类型安全,以及 children 属性传递的边界? A {@render} 用于定义 snippet,{#snippet} 用于调用渲染 B snippet 定义后只能在组件内渲染一次 C slot 支持向父组件回传渲染参数 D snippet 可以接收参数并在渲染时传入具体值 ✓ 正确答案
# 9. Svelte 编译器的依赖收集机制,编译期如何分析变量赋值与读取生成更新代码,与脏检查/订阅相比的收益? A Svelte 在运行时对组件树执行脏检查以发现变化 B Svelte 的更新机制与 Angular 一样需要整树扫描 C 编译器分析模板读取与赋值语句,为赋值生成精确的 DOM 更新代码 ✓ 正确答案 D Svelte 的依赖收集发生在浏览器运行时
# 10. Svelte 5 与 React/Vue 响应式实现的本质差异,编译期信号 vs 运行时 proxy,调试体验与性能剖面如何对比? A React 通过直接修改可变对象实现精确更新 B Svelte 5 运行时依赖虚拟 DOM 做差异更新 C 三者更新粒度与调试工具完全一致 D Vue 的响应式基于运行时 Proxy 代理对象并在读取时收集依赖 ✓ 正确答案
# 11. Svelte 5 的 hydration 与岛屿架构,服务端渲染组件与客户端交互组件如何分层,与 Next.js/Remix 的形态差异? A Svelte 5 无法做部分水合(islands) B Next.js 的 "use client" 在运行时决定组件边界 C SvelteKit 默认对整棵组件树进行水合 ✓ 正确答案 D Remix 完全不需要服务端参与渲染
# 12. Svelte 编译产物(无虚拟 DOM)与信号式运行时的性能差异在什么场景可感知? A 无虚拟 DOM 的实现在任何场景都数倍领先于虚拟 DOM B 性能差异与使用场景没有任何关系 C Svelte 的首屏产物体积通常比 React 应用更大 D 高频列表更新时,精确 DOM 更新优于 diff 与重建 ✓ 正确答案
# 13. 编译时响应式 vs 运行时响应式,性能与调试差异? A 运行时响应式的每步读写没有额外开销 B 编译时响应式的调试体验与源码完全一致,无需 sourcemap C 运行时响应式无法动态创建响应式对象 D 编译时响应式在构建期确定依赖,运行时开销小但动态场景受限 ✓ 正确答案
# 14. Svelte 5 的组件事件与 props,新旧 API 对比? A createEventDispatcher 是 Svelte 5 推荐的新事件机制 B Svelte 5 使用 $props() 解构声明组件的输入属性 ✓ 正确答案 C 回调 props 无法进行 TypeScript 类型检查 D $props 声明的属性不能设置默认值
# 15. Svelte 5 的过渡与动画,内置指令? A transition 指令只能用于元素进入动画,离开动画需自己实现 B flip 指令用于列表元素位置变化时的移动动画 ✓ 正确答案 C Svelte 动画必须引入第三方动画库才能实现 D 过渡函数只能使用内置的几种,不能自定义
# 16. Svelte 5 的 SSR 与 islands? A islands 模式会水合整棵组件树以保证交互完整 B 部分水合可以减少客户端 JS 体积并加快 TTI ✓ 正确答案 C SSR 渲染的输出不包含 HTML 内容 D Svelte 5 只支持全量水合一种模式
# 17. Svelte 5 的 $state 代理语义,数组/Map/class 的深层响应式与 .raw 跳过代理的取舍? A $state 默认对数组、Map 等容器做深层响应式代理,原生方法调用会被追踪 ✓ 正确答案 B $state.raw 创建的状态同样对内部字段做深层代理 C 数组的索引赋值不会被 $state 追踪 D class 实例总是被深度代理且无法跳过
# 18. Svelte 的过渡动画与微交互实现相比 React/Vue 的优势? A flip 指令可以实现列表元素位置变化的移动动画 ✓ 正确答案 B Svelte 的过渡动画必须搭配 React 才能使用 C Svelte 没有内置的过渡指令,全部需要手写 D Svelte 动画会阻断响应式更新流程