# 1. 重构的"安全网"(safety net)中测试覆盖是重构的基石 A 重构不需要测试,只要代码正确即可 B 安全网与行为不变无关 C 覆盖率只影响开发速度 D 测试覆盖能在重构改变行为时报警,是重构安全、敢动的基石 ✓ 正确答案
# 2. 重构的"机会主义重构"(opportunistic refactoring)与"专项重构"(dedicated refactoring) A 两者完全相同 B 机会主义重构会破坏功能 C 专项重构不需要测试 D 机会主义重构随功能顺带小步改善,专项重构独立立项系统处理,按改动规模与风险选择 ✓ 正确答案
# 3. 重构的"测试覆盖门槛"中建议 80%+ 单测覆盖,但 legacy 不可强求 A 所有代码必须立即达到 80% 覆盖 B 覆盖率与重构安全无关 C 覆盖率越低越好 D 建议 80%+ 覆盖作为安全网,但 legacy 应渐进补齐而非一开始强求 ✓ 正确答案
# 4. 重构的"童子军军规"(Boy Scout Rule)中每次 commit 之前更干净 A 每次改动时顺手把经过的代码改得比之前更干净,让改善成为常态 ✓ 正确答案 B 每次改代码都要把整段代码重写 C 童子军军规要求禁止修改任何代码 D 它只适用于新项目
# 5. 重构行为等价的进阶验证中除单元测试外,差分测试(differential testing)、黄金 master 快照、生产流量回放如何验证重构前后行为一致? A 单元测试覆盖所有行为差异 B 流量回放无需真实数据 C 三种方法完全相同 D 差分测试、黄金快照、生产流量回放分别用随机/代表/真实输入验证重构前后行为一致,覆盖单测难以覆盖的场景 ✓ 正确答案
# 6. 类型系统与静态分析作为重构安全网中强类型、编译器与 lint 如何降低重构风险,动态语言如何弥补? A 编译器无法帮助重构 B lint 只有在动态语言中才有用 C 强类型与编译器能捕捉签名/类型不匹配,动态语言需以类型标注、测试、lint 弥补 ✓ 正确答案 D 静态语言不需要测试
# 7. 重构的"识别信号"(identify signal)中 smell、hotspot、metric 综合判断 A 只需看 smell 即可 B hotspot 与 metric 无关 C smell 指结构问题、hotspot 指变更热点、metric 指量化指标,综合判断聚焦高价值区域 ✓ 正确答案 D 识别信号无法指导优先级
# 8. 重构的"测试验收"(test acceptance)中所有测试通过 + 行为不变 A 重构后只要有测试通过即可,无需关心行为 B 测试验收只用于新功能 C 行为不变是无需验证的 D 验收标准是"所有测试通过且行为不变",证明重构只改结构不改功能 ✓ 正确答案
# 9. 重构的提交粒度中一次重构应包含多少个「编译-测试-提交」循环,如何用「每个提交可独立回滚」作为拆分标准? A 一次重构应只提交一次 B 拆成多个"编译-测试-提交"小循环,以"每个提交可独立回滚"为拆分标准 ✓ 正确答案 C 提交粒度与回滚无关 D 提交越频繁越差
# 10. 重构的"行为验证矩阵"中单元测试、快照测试、契约测试与差分测试在重构验证中的分工与选择? A 单元测试打底,快照覆盖输出、契约保障接口、差分验证等价,按目标组合使用 ✓ 正确答案 B 只用单元测试即可验证所有行为 C 四种测试互不相关 D 契约测试不能用于重构
# 11. 重构类 PR 的评审策略中如何验证行为不变而非逐行读 diff,评审者重点应看什么? A 必须逐行读取整个 diff B 重构 diff 无需评审测试 C 重点看配套测试、重构步骤意图、是否夹带行为变更及结构是否改善,而非逐行读 diff ✓ 正确答案 D 行为变更可以混在重构中
# 12. 重构的"验证指标"(validation metric)中可度量、可观测 A 验证指标可以完全主观 B 验证指标应可度量、可观测,才能客观对比基线、验证重构改善 ✓ 正确答案 C 指标只需可度量,无需可观测 D 指标无法指导重构决策
# 14. 重构失败的回滚中如何保护? A 重构失败只能重写整个系统 B 通过小步独立提交、分支隔离、测试安全网和 CI,失败时可精确回滚到安全提交 ✓ 正确答案 C 回滚与提交粒度无关 D 重构失败无法退出
# 15. 重构的度量中复杂度与可维护性? A 圈复杂度只统计代码的行数 B 圈复杂度反映独立路径数,可维护性指数综合体积、复杂度等指标,适合做重构前后的趋势对比 ✓ 正确答案 C 可维护性指数越高说明代码越难维护 D 度量指标可以完全替代代码评审
# 16. 重构的自动化中 IDE 重构与工具? A 自动重构只能重命名符号,不能提取方法 B 自动重构会随机改变代码行为 C 自动重构不需要测试配合 D IDE 自动重构基于解析树同步更新所有引用点,比手工修改更安全高效,但语义级重构仍需人工决策 ✓ 正确答案
# 17. 重构后的性能验证中回归基准? A 重构只改变结构,不可能影响性能 B 用重构前的回归基线对比同口径的延迟(重点 P99)、吞吐与资源指标,控制变量验证性能无退化 ✓ 正确答案 C 性能验证只需看平均延迟 D 基准测试无需预热即可直接对比
# 18. 重构后的文档同步中内部接口变化时注释、ADR 与架构图如何同步更新? A 文档可以等重构全部完成后再统一补写 B 注释与接口文档随重构同步更新,重构推翻旧设计决策时应新增 ADR 记录而非改写历史 ✓ 正确答案 C ADR 记录后永远不能新增 D 架构图不需要随重构更新