# 1. ADR(Architecture Decision Record)的核心结构中标题、状态、上下文、决策、后果五部分如何编写?为什么 ADR 是不可变(immutable)的? A ADR 内容不可变,但状态字段可流转;决策变更应新建 ADR 并将旧 ADR 标记为 Superseded ✓ 正确答案 B 决策被推翻时直接修改原 ADR 的决策内容,保持文档同步 C ADR 一旦创建就永远不能做任何修改,包括状态字段 D ADR 只是一种临时草稿,过期后直接删除即可
# 2. ADR 与 RFC/设计文档的边界中什么粒度的决策需要 ADR?什么需要完整设计文档?如何避免 ADR 膨胀为设计文档? A 所有技术决策都应写成完整设计文档,ADR 没有存在的必要 B ADR 记录决策结论与理由并保持轻量,详细设计放设计文档并以链接关联 ✓ 正确答案 C ADR 应包含完整代码实现,方便直接参考 D 设计文档可以替代 ADR,不再需要记录决策状态
# 3. ADR 的生命周期管理中 Proposed → Accepted → Deprecated → Superseded 的状态流转?被取代的 ADR 如何链接到新决策? A 被新决策取代的 ADR 应标记为 Superseded 并链接到新 ADR,同时保留原内容 ✓ 正确答案 B 决策被推翻后应直接删除原 ADR C Accepted 状态的 ADR 永远不会失效 D 状态字段不参与版本管理,可以随意修改
# 4. ADR 在团队中的采纳策略中如何说服团队写 ADR?如何避免"事后补写"的形式主义? A 将 ADR 绑定到决策过程与合入评审,要求包含备选方案与理由,避免事后补写 ✓ 正确答案 B 制定严格要求,让所有开发单独写详细 ADR 作为文档 C ADR 只需在项目结束后补齐即可 D 只有架构师能写 ADR,普通工程师不参与
# 5. ADR 与 RFC 的适用场景差异,什么决策必须写 ADR 而什么不需要? A RFC 用于记录已定决策,ADR 用于征求反馈 B ADR 与 RFC 完全等价,可以互换使用 C 所有决策都必须写 ADR D 影响大、不可逆的架构决策应写 ADR,可逆的局部改动无需写 ✓ 正确答案
# 6. ADR 工具链中 adr-tools、MADR(Markdown ADR)、Log4brains 的选型与 CI 集成? A MADR 是 Markdown 格式的 ADR 模板,adr-tools 提供命令管理,二者可配合使用并与 CI 集成 ✓ 正确答案 B 所有 ADR 工具都必须付费使用 C adr-tools 是重量级可视化平台,Log4brains 是纯 shell 脚本 D ADR 只能存于专属数据库中,不能放入 git 仓库
# 7. ADR 的评审与治理中谁有权 Accept/Reject?跨团队 ADR 的协调机制? A 团队级 ADR 由负责人评审,跨团队影响应由架构委员会协调并明确作用域 ✓ 正确答案 B 任何工程师都可以随意 Accept 任何 ADR C 跨团队 ADR 不需要评审,直接合并即可 D ADR 一旦被 Reject 就永久删除
# 8. ADR 与代码的关联中如何在代码注释、PR 描述和 Wiki 中引用 ADR 编号? A 不需要在代码中引用 ADR,看代码即可理解 B ADR 编号只能用于内部,不得出现在 PR 中 C 每个代码文件都必须引用 ADR D 在关键决策相关代码注释、PR 描述和 Wiki 中规范引用 ADR 编号,形成追溯链 ✓ 正确答案
# 9. 如何避免 ADR 沦为"事后记录",决策过程与备选方案如何留痕? A ADR 只记录最终结论即可 B ADR 在决策完成后一次性补全是最佳实践 C 备选方案应删除,避免混淆 D ADR 应记录背景、备选方案及否决理由,并在决策过程中创建而非事后补写 ✓ 正确答案
# 10. ADR 的价值中决策背景、方案与权衡? A ADR 的作用是替代需求文档 B ADR 只是应付评审的文档,没有实际价值 C ADR 只记录代码实现细节 D ADR 的价值在于记录决策背景、方案与权衡,沉淀可追溯的组织知识 ✓ 正确答案
# 11. ADR 的度量中如何评估 ADR 的实际价值(减少重复讨论、加速新人入职)? A ADR 的价值完全无法度量,无需评估 B 只需要统计 ADR 的数量,数量越多越好 C 可通过重复讨论次数、新人理解架构时间、决策覆盖率等软硬指标结合评估 ✓ 正确答案 D ADR 的价值必须量化成金额才能接受
# 12. 大型组织中 ADR 的层级中全局 ADR(组织级)vs 局部 ADR(团队级)的治理? A 所有 ADR 都应由架构委员会统一评审 B 组织级 ADR 约束全局、由架构委员会治理,团队级 ADR 约束本团队,冲突时组织级优先 ✓ 正确答案 C 团队级 ADR 可以覆盖组织级 ADR 的约束 D 大型组织不需要区分 ADR 层级
# 13. ADR 的失效检测中决策被推翻后如何更新或标记废弃? A 决策被推翻后立即删除原 ADR B 将失效 ADR 标记为 Deprecated/Superseded 并记录原因与新决策链接,通过评审与代码关联检测失效 ✓ 正确答案 C 失效 ADR 无需处理,保持原样 D 只需修改 ADR 的决策内容,无需更新状态
# 14. ADR 的模板与评审流程? A 模板应包含状态、上下文、决策、备选方案、关联等关键字段,评审从 Proposed 到 Accepted 显式流转 ✓ 正确答案 B ADR 模板越复杂越好,字段越多越严谨 C ADR 不需要评审,直接创建即可生效 D 模板中的备选方案可以省略
# 15. ADR 的维护中过期与更新? A 过期的 ADR 直接删除即可 B ADR 一旦发布就无需任何维护 C 通过定期评审与代码关联识别过期 ADR,用新建 ADR + 状态流转保持一致性 ✓ 正确答案 D 过期 ADR 应保持原样,不做任何标记
# 16. ADR 与架构治理中决策的可追溯? A ADR 只是个人备忘,与架构治理无关 B 可追溯性会拖慢开发,应避免使用 ADR C 架构治理不需要记录决策 D ADR 通过编号、状态与双向链接实现决策的向前/向后/横向可追溯,支撑架构治理 ✓ 正确答案
# 17. ADR 的工具与集成中 adr-tools 等工具如何管理决策记录,ADR 与 Issue/PR/文档站点的集成如何保证决策可追溯? A adr-tools 是纯 GUI 工具,无法集成 CI B adr-tools 以 Markdown 管理 ADR,通过集成 Issue/PR/文档站点与 CI 校验实现端到端可追溯 ✓ 正确答案 C 集成会破坏 ADR 的版本管理 D ADR 无法与文档站点集成