面试文档构建规范(V4)#
本文件是 docs/interview/M*.md 系列面试文档的构建规范。每篇文档必须自包含——读一篇就够,不跳转到其他文档。
一、简历 Bullet Points(原文)#
以下五个 Bullet Point 是简历原文,M1-M5 各对应一条:
BP1 · 分层自适应调查引擎: 告警经规则引擎预处理(去重、时间窗聚合、拓扑级联关联)收敛至根因候选集;随后按确定性三级递进——Tier 1 已知故障通过 Runbook 匹配与前置条件校验直接处置,Tier 2 相似故障通过向量检索限定 3 轮定向验证历史根因,Tier 3 未命中时进入 ReAct Agentic Loop 深度调查。各级未命中自动递进至下一级,并继承已有证据。
BP2 · 假设驱动式调查机制: Tier 3 采用两阶段推理:LLM 先生成 3-5 条根因假设并按可能性排序,再在 ReAct Loop 中逐条调用工具定向取证,每轮输出结构化假设状态与置信度,达标即终止,避免非必要推理。
BP3 · Runbook 冷启动与自增长闭环: 初期导入通用 Runbook 实现冷启动;后续 Tier 3 调查经人工确认后,由 LLM 自动从证据链中提炼前置条件与处置步骤,生成结构化 Runbook 经审核入库,持续扩充 Tier 1 覆盖率。
BP4 · LLM 修复操作的安全治理: 将修复操作按资源域建模为参数受限的结构化工具,以调用白名单工具替代生成自由 shell 命令,消除命令注入与越权风险;高风险操作可通过飞书移动端一键审批,超时自动降级。
BP5 · 事务化修复与验证闭环: 为修复方案创建补偿事务,预生成补偿操作;执行前进行 CAS 漂移检测,失败自动补偿回滚;执行后通过三级递进门禁(命令成功→服务健康→指标恢复)逐级验证,形成执行-验证-回滚的自校验闭环。
二、模块清单与来源映射#
| 编号 | 模块名 | 对应代码 | 吸收旧文档 |
|---|---|---|---|
| M0 | 项目全景与架构串讲 | 整体 | 01-Q1(5 层架构)、03-Q1(编排流程)、04(容错概览)、08-Q1(Harness 定位)。M0 必须包含模块间端到端链路图:M1→M2→M3→M4→M5 构成故障处理主线(告警入口 → 三级递进调查 → Runbook 积累 → 安全执行修复 → 事务化验证闭环),M6(Incident 状态机) 贯穿全程驱动状态流转,M7(RAG) / M8(队列 Worker) / M9(Benchmark) 是支撑层。面试开场”讲讲你的系统架构”直接用这张图。 |
| M1 | 分层自适应调查引擎 | app/preprocessing/, app/topology/, app/investigation/engine.py, app/investigation/graph.py, app/investigation/tier1.py, app/investigation/tier2.py | 01(告警风暴治理→预处理层)、03(Agent 编排→Tier 路由) |
| M2 | 假设驱动式调查机制 | app/investigation/tier3.py, app/investigation/hypothesis.py, app/agents/, app/agents/subagents/ | 03(Plan-Exec-Replan/Deep 模式)、08(Harness 并行编排/预算熔断) |
| M3 | Runbook 冷启动与自增长闭环 | app/runbooks/, data/topology_rules.yaml | 新增模块,无旧文档 |
| M4 | LLM 修复操作的安全治理 | app/remediation/model.py, app/remediation/policy.py, app/tools/meta.py, app/services/aiops_service.py | 07-Q1~Q3(资源建模/白名单)、08-Q6(参数级权限) |
| M5 | 事务化修复与验证闭环 | app/remediation/transaction.py, app/remediation/saga.py, app/remediation/regression.py, app/remediation/closed_loop.py, app/remediation/locks.py | 07-Q4~Q16(CAS/Saga/门禁/审批/对齐开源/飞书审批) |
| M6 | Incident 状态机与生命周期 | app/incidents/state_machine.py, app/incidents/models.py, app/incidents/repository.py, app/incidents/signature.py | 新增模块,无旧文档 |
| M7 | RAG 混合检索管线 | app/rag/, app/services/rag_service.py, app/services/rag/ | 02(RAG 检索管线全部)、05-部分(BM25 迁移) |
| M8 | 后台队列、Worker 与并发控制 | app/queue/, app/db/, scripts/run_*.sh | 04(Worker 崩溃恢复/DLQ/Fail-open)、05(限流并发控制) |
| M9 | Benchmark 方法论与质量保证 | tests/, scripts/eval_*, scripts/loadtest.py | 00(压测方法与数据)、06(Benchmark 构建方法论)、09(集成调试) |
旧文档(01-*.md ~ 09-*.md + LOADTEST_INTERVIEW_QA.md)在全部新文档完成后废弃。CONTEXT_ENGINEERING_INTERVIEW.md 独立保留。
三、统一文档结构#
每篇 M{N}-{名称}.md 必须包含以下板块,顺序固定:
# M{N} · {模块名}
> **简历 Bullet Point**: {对应的简历原文,M0/M6-M9 无 bullet point 的写一句话定位}
---
## 开场钩子
### 场景
用一个真实开发中遇到的事故/意外/反直觉发现引入这个模块。结构:
**出了什么事**(具体、有画面感)→ **发现了什么问题**(根因分析)→ **引出这个模块要解决什么**。
让面试官有代入感,自然追问。不要编故事——从真实 git 历史和开发过程中提取。
### 面试官切入
> "你提到了 {钩子里的关键词}——能展开讲讲吗?"
开场钩子的目的是**掌握面试节奏**:你用故事引出一个关键词,面试官大概率沿这个词追问,
正好接到你准备好的"模块运作流程"和"面试问答"里。
钩子来源不限于线上事故——V4 新增模块(M3 Runbook、M6 Incident 状态机等)如果没有事故历史,
可以从"V3 遗留问题驱动 V4 重设计"或"设计过程中的反直觉发现"来构造,同样有画面感。
---
## 一、模块运作流程
### 1.1 一句话定位
这个模块解决什么问题、为什么需要它(不超过 3 句)
### 1.2 全景流程图(文字版)
用文字描述端到端流程,标清入口 → 中间节点 → 出口
### 1.3 分步详解
按流程顺序,每步讲清:
- **做什么**:这一步的输入输出
- **怎么做**:核心逻辑(伪代码级,不贴大段源码)
- **为什么这么做**:设计决策的理由
### 1.4 数据流 trace(具体输入走一遍)
拿一条具体的输入,端到端走一遍本模块涉及的流程。各模块自选合适的例子:
- M1-M5:一条告警(如 `MySQL replica lag > 10s on db-slave-02`)
- M7(RAG):一条检索 query
- M8(队列):一条任务消息从入队到消费
- M9(Benchmark):一条测试用例从构造到出分
每一步标清:
- **输入**:这一步收到什么数据(字段级)
- **处理**:做了什么变换
- **输出**:产出什么交给下一步
让读者看完能回答"一条真实请求经过这个模块时,数据长什么样、怎么变的"。
### 1.5 技术选型决策表(仅涉及选型的模块需要)
本模块用到的关键技术组件,每个列出:
- **选了什么**
- **备选方案**(至少 1 个)
- **为什么选它**(核心理由,1-2 句)
- **什么情况下换**(边界条件)
不是每个模块都有选型决策——如果本模块没有技术选型(纯逻辑 / 纯机制),跳过此节。
M0(项目全景)必须有一个**汇总级**选型表覆盖全局关键组件。
### 1.6 口述脚本
面试时怎么用 1-2 分钟讲清这个模块。
标出节奏、转折、留钩子引导追问的位置。
---
## 二、踩坑实录
每个坑按统一格式:
### 坑 {N}:{一句话标题}
- **现象**:出了什么问题
- **根因**:为什么会这样
- **修法**:怎么修的
- **教训**:抽象成通用工程原则
至少 3 个坑。
#### 什么算踩坑
✅ **要的**——工程实践中的认知陷阱、设计决策的反直觉后果、技术选型的隐性代价、
依赖/环境/协议层面"看起来应该对但实际不对"的坑。例:
- LangGraph 的 recursion_limit 是 super-step 数不是工具调用数,导致 Tier 3 深度调查提前截断
- pgvector 的 IVFFlat 索引在小数据量下召回率低于暴力搜索,冷启动阶段反而更慢
- 百炼调 DeepSeek-V4 的真实限流瓶颈是 TPM 不是 RPM,本地令牌桶参数全配错
- Alertmanager 的 group_wait 语义与自建聚合窗口的交互导致双重延迟
❌ **不要的**——代码层面的 bug(early-return 写错、变量拼错、忘了 await、条件判断反了)。
这些是代码错误,不是工程踩坑。
---
## 三、量化评估(仅可量化的模块需要)
如果本模块的效果可以量化验证,按以下结构写清楚:
### 3.1 评估数据集构建
- **数据来源**:从哪里来的(生产日志采样 / 手工构造 / 开源数据集 / 历史 Incident 回放)
- **规模与分布**:多少条、覆盖哪些场景、正负例比例
- **标注方式**:谁标的、标注标准是什么、有没有交叉验证
### 3.2 评估方法
- **怎么跑**:用什么脚本/工具、跑在什么环境
- **对照组**:和什么 baseline 对比(关掉某层 / 替换某组件 / 纯人工)
- **可复现性**:别人拿到代码能不能一键跑出同样结果
### 3.3 结果与解读
- **核心指标**:列出关键数字(准确率 / 召回率 / 延迟 / 降噪率 / token 成本等)
- **数据来源标注**:每个数字标明来源(`scripts/eval_xxx.py` 输出 / 压测报告 / 日志统计)
- **局限性**:这组数据能说明什么、不能说明什么
不是每个模块都能量化——纯机制 / 纯治理类模块(如 M4 安全治理、M6 状态机)可以跳过此板块,
或改为定性验证(如红队测试通过率、非法迁移拒绝率)。
M9(Benchmark 方法论)跳过此板块——整篇 M9 就是量化评估的展开,不需要再套一层 meta-evaluation。
---
## 四、面试问答
### 基础题(必问级)
#### Q1: {问题}
**答:** 结论先行 → 关键细节 → 代码级证据
> **追问 1:** {面试官大概率追问}
> **答:** ...
> **追问 2:** ...
> **答:** ...
### 进阶题(区分度)
#### Q{N}: {问题}
...
### 压力题(面试官挑战设计决策)
#### Q{N}: {问题}
...
每个模块至少 6 道题,含追问链,覆盖基础/进阶/压力三档。
回答风格:**结论先行 → 关键细节 → 生产经验**。
---
## 五、前沿概念与延伸
### 5.1 {概念/范式名}
**是什么**:一句话定义
**为什么要这么做**:这个概念要解决的核心问题
**这么做的理由**:相比其他方案的优势
**举例说明**:用本项目或业界案例具象化
**延伸问答**:
> 面试官:"你还知道其他 {同类} 吗?什么情况下用哪个?"
> 答:对比 + 选型决策
每个模块至少 2 个前沿概念,紧扣该模块涉及的技术方向。
每个概念必须包含上述四项(为什么 / 理由 / 举例 / 延伸问答)。
---
## 六、诚实边界
这个模块没做什么、为什么没做、真实局限在哪里。
面试时被问"有什么不足"直接用这段。plaintext四、构建原则#
-
自包含:读一篇搞定一个模块,不依赖其他文档。同一个概念在不同模块都用到的,在每篇里各自讲清楚,不写”详见 M{X}”。
-
从源码生成:每篇基于对应代码和 git 历史重新提取,不搬运旧文档的内容。旧文档只作为”有哪些点需要覆盖”的参考清单。
-
面试导向:所有内容服务于面试表达。开场钩子掌控节奏,流程讲清”怎么说”,踩坑讲清”为什么这么做”,问答覆盖面试官真实追问路径,前沿概念展示技术视野,技术选型表应对”为什么不用 XXX”。
-
踩坑是工程坑不是代码 bug:见第二板块的 ✅/❌ 定义。
-
数据要可追溯:所有出现在文档中的数字(降噪率、响应时间、覆盖率)必须注明来源——压测脚本、日志统计、还是合理估算。不编造数据。
-
逐篇交付:一篇做完、审完,再做下一篇。建议顺序 M0 → M1 → M2 → M3 → M4 → M5 → M6 → M7 → M8 → M9。
五、文件命名#
docs/interview/M0-项目全景与架构串讲.md
docs/interview/M1-分层自适应调查引擎.md
docs/interview/M2-假设驱动式调查机制.md
docs/interview/M3-Runbook冷启动与自增长闭环.md
docs/interview/M4-LLM修复操作的安全治理.md
docs/interview/M5-事务化修复与验证闭环.md
docs/interview/M6-Incident状态机与生命周期.md
docs/interview/M7-RAG混合检索管线.md
docs/interview/M8-后台队列Worker与并发控制.md
docs/interview/M9-Benchmark方法论与质量保证.mdplaintext旧文件 01-*.md ~ 09-*.md + LOADTEST_INTERVIEW_QA.md 在全部新文档完成后统一删除。
六、各模块推荐覆盖的前沿概念方向#
供构建每篇文档第五板块时参考,不限于此列表:
| 模块 | 推荐前沿概念方向 |
|---|---|
| M0 | AIOps 成熟度模型、Event-Driven Architecture |
| M1 | Alert Correlation(基于图 vs 基于 ML)、Tiered Escalation Pattern |
| M2 | ReAct / Reflexion / Tree-of-Thought、Hypothesis-Driven Debugging |
| M3 | Runbook-as-Code / Automated Runbook Generation、Knowledge Flywheel |
| M4 | LLM 安全(Prompt Injection/Tool Poisoning)、Intent-Action Separation |
| M5 | Saga Pattern / Compensating Transaction、CAS 与乐观并发控制 |
| M6 | 有限状态机 vs Statechart、Event Sourcing |
| M7 | Hybrid Retrieval(Dense+Sparse+RRF)、Parent-Child Chunking |
| M8 | Backpressure / Consumer Group、Redis Streams vs Kafka |
| M9 | LLM 评测方法论(RAGAS/DeepEval)、混沌工程与故障注入 |
七、按面试场景速查(新文档完成后更新)#
占位:全部 M0-M9 完成后,在此补充类似旧 README 的速查索引。