# 1. Vite 插件钩子(config/configResolved/transformIndexHtml/transform/handleHotUpdate/closeBundle)的执行时机与 enforce(pre/post)排序 A Vite 钩子分布在配置、转换、HTML、HMR 与构建结束各阶段,enforce: pre/post 调整链式钩子的执行顺序 ✓ 正确答案 B 所有 Vite 钩子都受 enforce 排序影响 C transformIndexHtml 在模块转换之后执行 D closeBundle 只在 dev 中触发
# 2. Rollup/Vite 虚拟模块的实现(resolveId 返回 \0 前缀约定、load 提供内容)与 this.resolve 的用途 A 虚拟模块必须对应真实文件 B 虚拟模块用 resolveId 拦截 id、load 提供内容,\0 前缀防止虚拟 id 泄漏进产物,this.resolve 在插件内按规则解析依赖 ✓ 正确答案 C \0 前缀会出现在产物 import 语句中 D this.resolve 只能解析相对路径
# 3. Webpack loader 的 pitch 机制与 remainingRequest 执行顺序,pitch 提前返回如何跳过后续 loader A loader 只按从左到右执行 B loader 先从左到右跑 pitch、再从右到左跑 normal,pitch 返回值会短路跳过剩余 loader,remainingRequest 用于转交剩余管线 ✓ 正确答案 C remainingRequest 与执行顺序无关 D pitch 阶段在模块内容读取之后
# 4. Babel 插件的 visitor 与 AST 变换基本流程(path/node/scope 的操作与遍历) A visitor 只在进入节点时执行 B Babel 插件经 visitor 在 enter/exit 两阶段遍历 AST,用 path 增删改节点、用 scope 管理绑定与名称冲突 ✓ 正确答案 C 替换节点可用字符串直接拼接 D scope 只用于类型检查
# 5. 蓝绿部署与金丝雀发布(Argo Rollouts、Spinnaker) A 蓝绿部署是渐进放量 B 蓝绿部署全量切换回滚快但资源双倍,金丝雀渐进放量风险低但需流量分配设施,前端用版本化产物加切流与监控验证落地 ✓ 正确答案 C 金丝雀部署不需要监控指标 D 前端无法做蓝绿部署
# 6. CI 缓存(actions/cache、Turbo 远程缓存、pnpm store)在构建加速的应用 A CI 缓存分依赖安装、任务产物与中间物三层,key 需含 lockfile hash 与平台信息,并治理错误命中与缓存污染 ✓ 正确答案 B 缓存 key 用时间戳最合适 C CI 缓存只有一种形态 D 缓存命中后无需验证产物
# 7. GitHub Actions 工作流与矩阵构建 A GitHub Actions 用 strategy.matrix 并行展开多维度组合,PR 最小矩阵、发布全矩阵分层,配合 conditions、超时与复用治理成本 ✓ 正确答案 B 矩阵不支持 include/exclude C 工作流无法跨仓库复用 D 矩阵组合越多越好
# 8. Dependabot/Renovate 在依赖自动 PR 与版本策略的工程价值 A Dependabot 与 Renovate 自动生成升级 PR,漏洞修复优先、按 schedule/group 治理噪声,升级必须过 CI 且关键依赖人工 review ✓ 正确答案 B 自动升级 PR 无需 CI 验证 C 所有升级都应自动合并 D Renovate 不支持自定义 schedule
# 9. GitHub Actions 的矩阵策略(matrix.os/node-version) A matrix 只能有一个维度 B 矩阵组合间缓存可以共享 key C fail-fast: false 会加速整个矩阵 D matrix 按 os、node-version 等维度展开组合并行验证,用 include/exclude 控制集合并分层(PR 精简、主干全矩阵)治理成本 ✓ 正确答案
# 10. 前端特性开关(Feature Flag)体系设计(客户端 SDK、开关评估、清理机制)与灰度发布的协作 A 特性开关上线后应长期保留 B 特性开关按类型设计并评估,客户端需默认值与防闪烁机制,功能稳定后清理,与部署灰度配合实现"部署发布解耦" ✓ 正确答案 C 客户端开关是安全的权限控制 D 开关评估只能在服务端进行
# 11. Docker 多阶段构建在前端产物(Node 编译 + Nginx 服务) A Docker 多阶段构建用 Node 编译、Nginx 运行,最终镜像只含产物,配合层缓存分离与 SPA 回退、缓存头配置 ✓ 正确答案 B 依赖安装层与源码层合并更能利用缓存 C 容器必须 root 运行 D 前端镜像应包含完整 node 环境
# 12. 构建产物 checksum 与部署可追溯 A checksum 只用于文件传输校验 B 产物 checksum 建立内容指纹,配合清单与镜像 tag 形成"源码-构建-产物-部署"追溯链,支撑验证、回滚与审计 ✓ 正确答案 C 回滚不需要保留历史产物 D 部署记录与可追溯无关
# 13. Vercel、Netlify、Cloudflare Pages 的部署集成 A 三家平台能力完全相同 B 所有平台都要求自建构建 C Cloudflare Pages 不支持回滚 D Vercel 深度绑定 Next.js SSR 生态、Netlify JAMstack 功能全、Cloudflare Pages 边缘性能与免费额度优,按框架与边缘需求选型 ✓ 正确答案
# 14. Container Registry 与 Artifact 供应链 A 制品供应链治理覆盖构建来源、签名、扫描与访问控制,准入策略要求未签名或含高危漏洞的镜像拒绝部署 ✓ 正确答案 B registry 无需访问控制 C 镜像无需签名即可部署 D SBOM 与镜像可追溯无关
# 15. CI 构建缓存(GitHub Actions actions/cache、CircleCI cache) A actions/cache 只支持精确 key 命中 B 缓存保存时机在两平台完全相同 C 缓存内容无需校验可信度 D GitHub actions/cache 与 CircleCI cache 都用 key/restore-keys 实现精确与降级命中,key 应含 lockfile hash 等稳定因子并治理命中率 ✓ 正确答案
# 16. GitHub Actions 的 concurrency/timeout/matrix 在 CI 成本治理的应用 A 每个 job 都应跑全矩阵 B concurrency 只影响排队不影响成本 C concurrency 取消冗余构建、timeout 兜底挂起 job、matrix 分层控制规模,三者组合治理 CI 成本 ✓ 正确答案 D 超时设置越久越好
# 17. SRI(Subresource Integrity)的原理(hash 校验)与在 CDN 第三方资源上的应用与失效场景 A SRI 校验不需要 CORS 头 B SRI 只能用于字体文件 C SRI 能防止所有 XSS D SRI 用 integrity hash 校验资源内容防篡改,第三方 CDN 资源必须启用,资源更新时需同步重算并监控加载失败 ✓ 正确答案
# 18. 前端静态产物的版本化部署与快速回滚机制(多版本保留、HTML 指向切换、CDN 刷新) A 回滚需要重新构建旧版本 B HTML 应使用长缓存 C 版本目录无需保留历史 D 版本化产物多版本共存,回滚即切换 HTML 入口指向旧版本目录,配合 HTML 短缓存与 CDN 刷新保证生效 ✓ 正确答案
# 19. AI 辅助代码审查(API 幻觉、安全漏洞、性能)的工程治理 A AI 审查适合模式类问题但存在 API 幻觉与语义盲区,应做第一遍粗筛、人工验证采纳、证据驱动修复 ✓ 正确答案 B AI 的 API 认知永远正确 C AI 建议应直接自动修复 D AI 审查可以替代人工判断
# 20. vitest --shard 在大测试集并行切片的工程价值 A 分片测试会重复运行相同文件 B vitest 无法并行运行 C vitest --shard 按文件分片配合多机并行线性缩短测试耗时,需治理片间负载均衡与共享资源隔离 ✓ 正确答案 D 分片与覆盖率汇总无关
# 21. Rspack 自定义 loader 的 JS 实现与 Rust(builtin-loader)实现的边界与迁移成本 A 所有 loader 都应迁移到 Rust 实现 B Rust loader 与 JS loader 的 API 完全相同 C JS loader 兼容 webpack API、builtin loader 性能最优但有 Rust 门槛,迁移应先确认瓶颈并做等价验证、渐进切换 ✓ 正确答案 D 迁移无需对比产物
# 22. raw loader(接收 Buffer)与内联资源导入(inline resource import)的应用场景 A raw loader 会把资源转为 data URL B raw loader/asset source 以字符串导入文件内容,内联导入语法(?raw、inline 前缀)按点选择处理方式,适合嵌入构建期数据与避免运行时 IO ✓ 正确答案 C raw 导入会自动优化体积 D 所有资源都应内联进 bundle
# 23. Rollup 插件与 Vite 插件的兼容边界(Rollup 兼容钩子与 Vite 独有钩子的差异) A Vite 复用 Rollup 兼容钩子(build 阶段一致),并增加 config、transformIndexHtml、handleHotUpdate 等独有钩子,dev/build 行为差异需用 apply 与回归测试治理 ✓ 正确答案 B renderChunk 在 Vite dev 模式生效 C Rollup 插件无需验证即可用于 Vite D Vite 插件体系与 Rollup 完全无关
# 24. Webpack compiler/compilation 钩子的开发方式与 Tapable 同步/异步钩子的实现原理 A 所有 Tapable 钩子都是同步的 B Webpack 插件在 compiler/compilation 生命周期钩子上注册,Tapable 按 Sync/Async/Waterfall/Bail 类型决定调用语义与短路/串并行 ✓ 正确答案 C emit 钩子在构建开始前触发 D tapAsync 与 tap 完全等价
# 25. esbuild 插件(onResolve/onLoad/setup)的开发流程及其在 Vite 依赖预构建中的作用与局限 A esbuild 插件只能用于生产构建 B onLoad 只能处理文件模块 C esbuild 插件在 setup 中注册 onResolve/onLoad 定制解析与加载,可经 esbuildOptions 注入 Vite 预构建,但 API 有限且不影响生产构建 ✓ 正确答案 D filter 越宽性能越好
# 26. Playwright 在 CI 中 E2E 测试与浏览器安装链路(playwright install --with-deps) A Playwright 会复用系统浏览器 B Playwright 按版本下载独立浏览器二进制,CI 用 install --with-deps 装系统依赖并缓存二进制,配合分片、重试与报告治理 E2E ✓ 正确答案 C 浏览器缓存 key 与版本无关 D E2E 失败无需重试与追踪
# 27. PostCSS 插件(AST walker/Declaration 处理)的开发与 Tailwind v4 @plugin 的协作 A PostCSS 插件遍历 AST(walkDecls 等)处理 Declaration 属性与值,Tailwind v4 用 @plugin 指令在 CSS 中加载插件参与处理链 ✓ 正确答案 B @plugin 只能加载 Tailwind 官方插件 C 插件可以依赖全局状态保证性能 D PostCSS 插件只能处理选择器
# 28. 工具链插件的调试手段(钩子日志、中间产物 dump)与单测策略 A 插件无需集成冒烟验证 B 插件调试只能靠打断点 C 快照测试能证明插件逻辑正确 D 工具链插件用钩子日志与中间产物 dump 定位问题,单测以 fixture 驱动、快照断言并覆盖错误路径与边界用例 ✓ 正确答案