关于 tech-presentation-interview
面向准备技术展示面试的候选人,帮助选择项目并组织演讲、校准技术深度和练习问答。重点在呈现个人决策、权衡与失败经验,而非只罗列系统组件。
主要功能
- 01评估并筛选展示项目
- 02规划 25–45 分钟叙事结构
- 03选择深入讲解的组件
- 04按听众调整技术细节
- 05练习追问与失败分析
适用场景
- 01从职业经历中挑选展示项目
- 02准备技术展示及白板图示
- 03针对不同面试官调整讲解
- 04排练技术追问和复盘
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ curiositech/ some_claude_skills --skill tech-presentation-interview安装后在 Claude Code 中输入/tech-presentation-interview确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.claude-plugin/plugin.jsonreferences/project-narrative-template.mdwhiteboard-diagrams.md详细介绍
技术演示面试
技术演示轮是一次逆向系统设计:你不是在白板上设计一个假想系统,而是展示一个你亲自构建的真实系统。这一轮能考察其他轮次都无法考察的三项能力:对系统的真正深入理解、在压力下传达复杂想法的能力,以及真实的所有权,而非继承而来的知识。
适用场景
适用于:
- 从职业经历中挑选要展示的项目
- 为 25-45 分钟的技术演示设计具有叙事弧线的结构
- 把握讲解深度——哪些组件要深入讲解,哪些可以略过
- 准备逐步展开的白板/虚拟白板图示
- 练习应对尖锐的追问
- 根据不同的听众组成(研究人员、工程师、经理)调整演示内容
不适用于:
- 设计你尚未构建的系统(使用
ml-system-design-interview) - 撰写简历或梳理职业经历中的故事(使用
cv-creator或career-biographer) - 协调多轮面试(使用
interview-loop-strategist) - 练习编程题或行为面试中的 STAR 故事
- 准备会议演讲(形式和评估标准都不同)
项目选择
最常见的失败原因是选错项目。请使用以下决策树:
flowchart TD
A[List your top 5 projects] --> B{Did YOU make key<br/>technical decisions?}
B -->|No, I inherited it| SKIP[Skip this project]
B -->|Yes| C{Can you explain<br/>alternatives you rejected?}
C -->|No, I just used<br/>what was standard| SKIP
C -->|Yes, I evaluated<br/>tradeoffs| D{Are there interesting<br/>failure modes or<br/>unexpected challenges?}
D -->|It went smoothly| WEAK[Weak choice --<br/>no drama = no depth]
D -->|Yes, things broke<br/>or surprised us| E{Can you fill 30+ min<br/>of technical depth<br/>on 2-3 components?}
E -->|No, it was<br/>straightforward| WEAK
E -->|Yes| F{Is it relevant to<br/>the target role?}
F -->|Not really| BACKUP[Keep as backup --<br/>use if nothing<br/>better qualifies]
F -->|Yes, strong match| PICK[Strong candidate --<br/>select this project]
选择标准评分表
为每个候选项目按 1-5 分评分:
| 标准 | 权重 | 评估内容 |
|---|---|---|
| 个人所有权 | 5x | 你的决策,而非团队共识或继承而来的架构 |
| 技术复杂度 | 4x | 不明显的权衡、规模挑战、算法深度 |
| 有意思的失败 | 4x | 出过的问题、意外情况、方向调整、经验教训 |
| 与职位的相关性 | 3x | 与目标团队所构建的内容有多少重叠 |
| 可量化的影响 | 2x | 可引用的指标(延迟、吞吐量、收入、准确率) |
| 时间新近度 | 1x | 越近越好,但优秀的 5 年前项目胜过平庸的近期项目 |
门槛:总分 > 60 = 强烈推荐。40-60 = 若没有更好的选择,也可以接受。< 40 = 另选一个项目。
叙事弧线框架
每场出色的演示都遵循这一结构。偏离结构会让听众失去兴趣。
flowchart LR
CTX["Context<br/>2 min"] --> PROB["Problem<br/>3 min"]
PROB --> WHY["Approach & Why<br/>5 min"]
WHY --> ARCH["Architecture Deep Dive<br/>10 min"]
ARCH --> RES["Results & Impact<br/>3 min"]
RES --> CHANGE["What I Would Change<br/>2 min"]
CHANGE --> QA["Q&A<br/>15+ min"]
阶段详情
1. 背景(2 min) -- 铺垫背景。用户是谁?业务是什么?这件事为什么重要?
- 用一句话介绍公司/团队
- 用一句话说明用户遇到的问题
- 用一句话说明规模(请求数/秒、数据量、用户数)
- 不要以“I built a service that...”开头——要从问题开始
2. 问题(3 min) -- 难点是什么?不是你构建了什么,而是为什么这件事并非轻而易举。
- 造成矛盾的约束(延迟与准确性、成本与可靠性)
- 现有解决方案为何行不通
- 如果判断失误会怎样(后果 = 利害关系)
3. 方法与原因(5 min) -- 展示决策过程,而不仅仅是最终决定。
- 你考虑过的 2-3 种替代方案,以及你拒绝每种方案的原因
- 推动你做出选择的关键洞察或约束
- 你的优化目标(以及你明知会牺牲什么)
4. 架构深入解析(10 min) -- 深入讲解 2-3 个组件,而不是逐一介绍每个方框。
- 先在白板上展示 3 框概览(参见
references/whiteboard-diagrams.md) - 选出 2-3 个技术上有意思的组件,深入讲解
- 对每个深入讲解的组件:说明它的作用、这样设计的原因,以及修改后会导致什么问题
- 循序渐进地展开:仅在相关或被问及时补充细节
5. 结果与影响(3 min) -- 用量化指标说明成果。
- 前后指标对比(延迟、吞吐量、准确性、成本、开发者工时)
- 业务影响(收入、用户数、客户满意度)
- 团队影响(采用情况、开发者体验、运维负担)
6. 如果重来,我会做哪些改变(2 min) -- 最重要的 2 分钟。
- 回顾之后,你会推翻的 1-2 个具体技术决策
- 当初做出原决定的原因(当时看来是合理的)
- 哪些经验改变了你的想法
- 与你所有的成功相比,这部分更能建立可信度
7. 问答(15+ min) -- 真正的评估在这里发生。
- 参见下方的“应对深入追问”部分
深度把握
最忌讳的是面面俱到,却只停留在表面。选出 2-3 个层次深入讲解。
| 组件类型 | 略讲(1-2 句话) | 中等深度(2-3 min) | 深入讲解(5+ min) |
|---|---|---|---|
| 标准基础设施(负载均衡器、CDN) | 几乎总是略讲 | 仅在使用自定义配置时 | 除非这就是项目本身,否则不深入讲解 |
| 数据存储层 | 若使用标准 SQL/NoSQL,则略讲 | 若涉及分片、复制或混合方案 | 若你设计了存储引擎,则深入讲解 |
| ML 模型架构 | 若使用现成方案,则略讲 | 若经过微调或修改 | 若采用自定义架构或新颖方法,则深入讲解 |
| 数据管道 | 若使用标准 ETL,则略讲 | 若涉及实时处理或复杂转换 | 若解决了棘手的数据质量问题,则深入讲解 |
| API/接口设计 | 若采用标准 REST/GraphQL,则略讲 | 若涉及复杂的版本管理或契约 | 若协议设计是核心挑战,则深入讲解 |
| 监控/可观测性 | 通常略讲 | 若异常检测是核心内容 | 若这就是系统本身,则深入讲解 |
经验法则:在你做出非显而易见决策的部分深入讲解。在你以标准方式使用行业标准工具的部分略讲。
应对深入追问
问答环节是面试官区分实干者与旁观者的地方。针对以下提问模式做好准备:
“详细说说 X”
- 这是邀请,不是陷阱。深入一层,讲解实现方式。
- 结构:“X 的关键挑战在于[约束]。我们采用[方法]解决,因为[原因]。棘手之处在于[非显而易见的细节]。”
- 如果确实记不清某个细节:“我需要核实具体细节,但设计原则是[原则],实现遵循了[模式]。”
“为什么不使用 [alternative]?”
- 不要贬低替代方案。先肯定它的优势。
- 结构:“我们考虑过 [alternative]。它很适合 [use case]。我们选择 [our approach],是因为在我们的场景中,[specific constraint] 使 [alternative] 不太合适。具体来说,[concrete reason with numbers if possible]。”
- 如果你当时没有考虑过:“这是个不错的选择,我当时没有评估过。根据我现在的了解,关键权衡是 [tradeoff]。我认为对于我们的约束,[assessment]。”
“这看起来过度设计了”
- 不要急于辩解。重申促使你采用复杂方案的约束。
- 结构:“我理解这种看法。复杂性是由 [specific requirement] 所驱动的。如果没有 [the complex part],我们就会遇到 [concrete failure mode]。话虽如此,如果 [requirement] 有变化,我会通过 [specific simplification] 来简化方案。”
“你会做哪些不同的选择?”
- 绝对不要回答“什么都不会”。这是最重要的问题。
- 准备 2~3 项具体的技术改动,并说明理由。
- 结构:“以我现在的认识,我会改变 [specific decision]。当时,[why it was rational]。此后,[what changed -- new tooling, learned lesson, scale changed]。新的方案会是 [specific alternative]。”
“故障模式是什么?”
- 描述实际发生过的故障,而不是假设情况。
- 结构:“主要故障模式是 [X]。我们遇到它的频率是 [frequency]。发生时,[impact]。我们的缓解措施是 [approach]。剩余风险是 [what's still unprotected]。”
受众调整
根据现场听众调整内容深度:
| 受众 | 强调 | 弱化 |
|---|---|---|
| 研究人员 / 科学家 | 新颖方法、评估方法、消融研究 | 基础设施细节、部署运维 |
| 后端 / 系统工程师 | 规模、可靠性、性能权衡、故障处理 | ML 模型内部细节、业务背景 |
| ML 工程师 | 模型架构、训练流水线、数据挑战、服务基础设施 | 业务影响、团队协作 |
| 工程经理 | 决策过程、团队协调、技术风险管理 | 底层实现细节 |
| 混合听众 | 先从整体讲起,通过问答了解每位听众希望深入的方向 | 不要预先针对某一类听众优化内容 |
反面模式
演示集锦
新手:只展示成功,不提失败或权衡。每个决策都堪称最佳。系统从第一天起就表现出色。指标只升不降。 专家:主动讨论哪些做法行不通、哪些结果出乎意料,以及自己会做哪些改变。把失败视为认真投入的证明,而不是令人尴尬的事。分享成功与不足的具体指标。 识别方法:被问到“你会做哪些不同的选择?”时,回答含糊(“也许应该加强测试”)或缺乏说服力(“说实话,我对最终结果挺满意的”)。演示过程中也没有自然提及任何失败经历。
团队贡献归属不清
新手:事事都用“我们”。“我们设计了架构。”“我们选择了 Kafka。”“我们解决了延迟问题。”听不出哪些是 TA 具体完成的,哪些是团队协作完成的,哪些完全由队友负责。 专家:始终清楚地说明职责归属:“我主导了服务层的设计,与数据团队合作构建流水线,我的队友 Sarah 负责模型训练基础设施。服务层是我主要的贡献,所以接下来我重点介绍这一部分。”用“我”说明自己主导的决策,用“我们”说明真正的协作,并点出队友各自的贡献。 识别方法:面对追问时,无法详细解释具体的技术决策。被问到“为什么选 Kafka 而不是 RabbitMQ?”时,只回答“这是团队的决定”,或者给出泛泛的教科书式对比,而不是团队实际进行的评估。
架构旅游
新手:对每个组件都浅尝辄止。“然后我们有一个缓存、一个队列、一个数据库、一个负载均衡器、一个模型服务、一个特征存储……”每个组件都只讲 1-2 句话。还没讲到任何有意思的内容,时间就用完了。白板看起来像一张错综复杂的地铁线路图。 专家:画出 3 个方框的概览,明确表示“我会重点讲两个发生了有趣工程实践的组件”,然后深入讲解。花 5 分钟讲解一个组件,说明其中的权衡、考虑过的替代方案、故障模式以及学到的经验。面试官听完后能透彻地理解这个组件。 判断方法:演讲超时。所有组件的介绍都停留在表面。白板上有 15 个以上的方框,却没有任何深入展开的部分。如果被要求深入讲解任何一个组件,候选人都无法补充超出已说内容的信息。
排练流程
- 独自演练(至少 3 次):对着空房间进行演讲并计时。目标:结构化部分用时 20-25 分钟,为问答留出 15-20 分钟。
- 录下自己:观看录制内容。记录填充词、对未讲清楚的部分含糊带过的情况,以及思路中断的时刻。
- 与同伴模拟面试(至少 2 次):向一位技术背景的朋友进行演讲,让对方扮演刁钻的提问者。记录哪些问题让你应答不顺。
- 问答压力测试:请人从刁钻问题列表中快速连问 10 个问题。练习在压力下保持镇定。
- 时间门槛:如果排练时结构化演讲超过 25 分钟,就删减内容。正式演讲肯定会更长。
参考文件
| 文件 | 适用场景 |
|---|---|
references/project-narrative-template.md | 从头开始组织项目演讲;梳理叙事脉络;准备问答内容;参考 ML 流水线演讲的完整示例 |
references/whiteboard-diagrams.md | 规划演讲中要画的内容;渐进式披露策略;实体和虚拟白板技巧;ML 系统的常见图示模式 |