Skip to content

系统设计

高性能与高可用两条主线,面试方法论。

Updated View as Markdown
For humans

系统设计

校招考察频度:★ 高频(重点常考·大厂分水岭) 复习主线:系统设计的核心是“在现实资源约束下做 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 选主与多数派日志复制

两条主线

性能与可用性, 取舍是设计的核心

  • 高性能:单位时间处理更多请求、响应更快。手段:缓存、异步、池化、水平扩展
  • 高可用:故障时服务不中断。手段:冗余、限流、熔断、降级、重试、容灾

两者经常冲突:追求极致性能(不设限、不重试)会牺牲可用性;过度防御(处处同步、层层重试)会拖慢性能。面试加分点就是主动说出权衡。

面试方法论

  1. 澄清需求:QPS 多少、数据量多大、读多还是写多、一致性要求。先问清楚再设计
  2. 容量估算:从 QPS 和 RT 推导并发数和机器数(见性能指标与压测篇的 Little’s Law)
  3. 分层设计:接入层(LB/CDN)→ 应用层(无状态、可扩展)→ 数据层(缓存/分库分表)
  4. 画图说话:请求链路图、数据流图,边画边讲
  5. 说清取舍:每个方案给代价(一致性 vs 性能、成本 vs 冗余)

高频考点地图

考点归属必考指数
缓存设计(分层/更新/穿透击穿雪崩)高性能★ 高频(必考)
消息队列选型(Kafka vs RabbitMQ)高性能★ 高频(必考)
水平扩展与负载均衡(L4 vs L7)高性能★ 高频(必考)
限流算法(漏桶/令牌桶/分布式限流)高可用★ 高频(必考)
熔断与降级(三态机/兜底策略)高可用★ 高频(必考)
重试与幂等(指数退避/唯一键防重)高可用★ 高频(必考)
分布式 ID 与一致性哈希分布式★ 高频(必考)
一致性模型与 CAP/BASE分布式★ 高频(必考)
监控三支柱与全链路追踪高可用☆ 中频
Raft 多数派共识算法分布式☆ 中频

面试追问

  1. 系统设计的核心是什么? 权衡:性能与可用性、一致性与成本。先澄清需求再设计
  2. 先问什么问题? QPS、数据量、读写比、一致性要求、可用性目标(几个 9)。需求不清的设计都是空中楼阁
  3. 设计题的通用框架? 需求澄清 → 容量估算 → 分层架构 → 关键路径 → 权衡说明
  4. 高性能和高可用冲突怎么办? 主动说取舍:如限流牺牲部分吞吐换稳定性,重试增加延迟换可靠性
  5. 画图重要吗? 重要。请求链路和数据流图能让面试官跟上思路,边画边讲比干说强
Navigation

Type to search…

↑↓ navigate↵ selectEsc close