系统设计
校招考察频度:★ 高频(重点常考·大厂分水岭) 复习主线:系统设计的核心是“在现实资源约束下做 Trade-off(技术取舍)”。校招面试核心聚焦点:高性能优化(Little’s Law 容量估算、多级缓存架构、连接池化、无状态扩展)、高可用稳定性(限流算法、熔断降级三态机、重试防风暴与接口幂等、多活容灾)、分布式系统底座(CAP/BASE 权衡、Raft 共识两阶段提交、分布式唯一 ID 选型)。
系统设计面试考的不是死记硬背复杂架构图,而是需求澄清与权衡能力。
分类考频地图
| 模块 | 核心页面 | 校招考频星级 | 重点考查要点 |
|---|---|---|---|
| 高可用稳定性 | 高可用总览、重试与幂等、熔断与降级、限流算法实战 | ★ 高频(生死线) | 接口幂等 5 大落地方案、指数退避抖动防重试风暴、Sentinel/Resilience4j 熔断半开状态机、漏桶 vs 令牌桶及 Redis+Lua 限流 |
| 高性能架构 | 高性能总览、缓存架构设计、池化技术、水平扩展与负载均衡 | ★ 高频(核心常考) | 多级缓存(本地+分布式+CDN)、连接池(HikariCP)调优与排查、四层(LVS)vs 七层(Nginx)负载均衡与会话保持 |
| 分布式系统底座 | 分布式总览、分布式 ID 与一致性哈希、一致性模型与 CAP、Raft 共识算法 | ★ 高频 | Snowflake 雪花算法时钟回拨排查、一致性哈希虚拟节点数据倾斜治理、CAP/BASE 落地、Raft 选主与多数派日志复制 |
两条主线
性能与可用性, 取舍是设计的核心
- 高性能:单位时间处理更多请求、响应更快。手段:缓存、异步、池化、水平扩展
- 高可用:故障时服务不中断。手段:冗余、限流、熔断、降级、重试、容灾
两者经常冲突:追求极致性能(不设限、不重试)会牺牲可用性;过度防御(处处同步、层层重试)会拖慢性能。面试加分点就是主动说出权衡。
面试方法论
- 澄清需求:QPS 多少、数据量多大、读多还是写多、一致性要求。先问清楚再设计
- 容量估算:从 QPS 和 RT 推导并发数和机器数(见性能指标与压测篇的 Little’s Law)
- 分层设计:接入层(LB/CDN)→ 应用层(无状态、可扩展)→ 数据层(缓存/分库分表)
- 画图说话:请求链路图、数据流图,边画边讲
- 说清取舍:每个方案给代价(一致性 vs 性能、成本 vs 冗余)
高频考点地图
| 考点 | 归属 | 必考指数 |
|---|---|---|
| 缓存设计(分层/更新/穿透击穿雪崩) | 高性能 | ★ 高频(必考) |
| 消息队列选型(Kafka vs RabbitMQ) | 高性能 | ★ 高频(必考) |
| 水平扩展与负载均衡(L4 vs L7) | 高性能 | ★ 高频(必考) |
| 限流算法(漏桶/令牌桶/分布式限流) | 高可用 | ★ 高频(必考) |
| 熔断与降级(三态机/兜底策略) | 高可用 | ★ 高频(必考) |
| 重试与幂等(指数退避/唯一键防重) | 高可用 | ★ 高频(必考) |
| 分布式 ID 与一致性哈希 | 分布式 | ★ 高频(必考) |
| 一致性模型与 CAP/BASE | 分布式 | ★ 高频(必考) |
| 监控三支柱与全链路追踪 | 高可用 | ☆ 中频 |
| Raft 多数派共识算法 | 分布式 | ☆ 中频 |
面试追问
- 系统设计的核心是什么? 权衡:性能与可用性、一致性与成本。先澄清需求再设计
- 先问什么问题? QPS、数据量、读写比、一致性要求、可用性目标(几个 9)。需求不清的设计都是空中楼阁
- 设计题的通用框架? 需求澄清 → 容量估算 → 分层架构 → 关键路径 → 权衡说明
- 高性能和高可用冲突怎么办? 主动说取舍:如限流牺牲部分吞吐换稳定性,重试增加延迟换可靠性
- 画图重要吗? 重要。请求链路和数据流图能让面试官跟上思路,边画边讲比干说强