Skip to main content

系统设计面试框架

1. 理解问题并确定设计范围

danger

❌ 不要像“吉米”一样:

  • 吉米总是第一个举手、快速回答问题。
  • 虽然在学校很出色,但在系统设计面试中这种习惯非常危险。
  • 系统设计不是问答竞赛,没有唯一正确答案。
info

✅ 正确做法:先问清楚、慢慢答:

🎯 为什么要提问?

  • 系统设计考察的是理解需求、分析场景、做出合理假设的能力。
  • 如果你一上来就给方案,容易答非所问,设计方向跑偏。
  • 提问本身就是展现你架构思维的第一步。
tip
  • 别急着出答案,先确认问题范围和条件。
  • 提问不仅不扣分,反而是高分项。
  • 假设必须写清楚,为后续设计做铺垫。
  • 系统设计的成败往往不在于最终方案,而在于思路清晰、结构完整、权衡合理。
  • 问题清单
问题分类示例问题
功能范围我们要设计哪些具体功能?是否支持发帖、评论、点赞等?
用户规模当前有多少日活用户(DAU)?预计增长如何(3个月/6个月/1年)?
技术栈公司已有的技术组件/服务有哪些?可以复用吗?
产品形态是移动端、Web端,还是都有?
数据结构内容是纯文本?还是包含图片、视频等媒体?
交互逻辑Feed是按时间排序?还是有权重算法?
社交关系一个用户最多有多少好友?
性能要求QPS 多高?是否要求实时性?一致性等级如何?
  • 示例:设计 News Feed 系统
对话角色问题
候选人是移动端还是网页端?或都有?
面试官都有。
候选人需要实现哪些核心功能?
面试官发帖和查看朋友的动态。
候选人Feed 是按时间倒序还是按权重排序?
面试官暂时按时间倒序。
候选人一个用户最多有多少朋友?
面试官5000。
候选人每天活跃用户是多少?
面试官1000 万 DAU。
候选人Feed 内容是纯文本还是带图片视频?
面试官有图片和视频。

2. 提出高层级设计并获得认同

3. 深入设计

4. 总结