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