一、每道题的回答层次
任何问题都按以下五层准备。面试时先回答前两层,面试官继续追问再逐层展开。
第一层:一句话结论
先直接回答问题,不从历史背景开始。
它是什么 / 两者核心区别 / 最终应该怎么选第二层:关键点
通常列 3~5 个关键点:
- 核心职责或作用。
- 主要流程或数据结构。
- 优点和代价。
- 适用场景。
- 常见风险。
第三层:底层原理
回答“为什么能工作”:
- 数据如何存储。
- 请求如何流转。
- 状态如何变化。
- 并发如何控制。
- 故障后如何恢复。
第四层:边界与取舍
回答“什么时候不能用”:
- 性能上限。
- 一致性和可用性取舍。
- 极端并发和故障场景。
- 版本差异。
- 替代方案。
第五层:项目落地
回答“你实际怎么用”:
- 业务规模和约束。
- 为什么选择该方案。
- 参数如何设置。
- 如何监控和验证。
- 出过什么问题,怎么复盘。
二、不同题型怎么往下追问
概念题
是什么 → 解决什么问题 → 怎么实现 → 有什么代价 → 在哪里使用对比题
核心区别 → 原理差异 → 性能差异 → 适用场景 → 如何选型不要只背表格,要给出选择依据。
原理题
入口 → 核心对象 → 状态变化 → 正常流程 → 异常流程调优题
现象 → 指标 → 定位 → 根因 → 修复 → 验证 → 防复发系统设计题
需求与规模 → 核心链路 → 数据模型 → 容量估算
→ 高可用与一致性 → 降级容灾 → 监控验证项目题
背景 → 个人职责 → 难点 → 候选方案 → 取舍
→ 落地细节 → 量化结果 → 复盘三、常见追问维度
为什么
- 为什么这样设计?
- 为什么不用另一个方案?
- 为什么这个参数是这个值?
怎么做
- 核心流程是什么?
- 关键类、数据结构或协议是什么?
- 失败后如何恢复?
会怎样
- 并发量增加十倍会怎样?
- 节点宕机或网络分区会怎样?
- 数据量变大后瓶颈在哪里?
怎么证明
- 看什么指标?
- 如何压测?
- 如何确认优化没有牺牲正确性?
怎么落地
- 项目中什么时候使用过?
- 遇到什么问题?
- 参数和容量怎么确定?
四、回答易错点
- 只给定义,没有说明解决的问题。
- 只讲正常流程,不讲失败路径。
- 只讲优点,不讲代价和边界。
- 只背组件名,不知道调用链和数据流。
- 把团队成果全部描述成个人成果。
- 编造 QPS、延迟或优化比例。
- 用“绝对不会”“一定安全”描述分布式系统。
- 忽略 JDK、Spring Boot、MySQL 等版本差异。
五、复习标记
可以在问题标题后自行增加复习状态,但不要修改标题文字,以免破坏总索引链接:
> [!note] 掌握程度
>
> - [ ] 能在 30 秒内快答
> - [ ] 能画出核心流程
> - [ ] 能回答两个追问
> - [ ] 能结合项目案例