作为面试官,观察到的一些面试中常见的错误经验总结
梦星河
最近看到不少小伙伴在 System Design 面试(Meta 称作 Product Architecture Design)中遇到挑战,作为曾经在Meta做过一年半的面试官,楼主总结了一些常见的错误,希望能帮助大家更好地准备!
📌 1. Requirement Gathering
❌ 常见错误:
📌 2. Non-Functional Requirements
❌ 常见错误:只CAP、Latency、Scalability。
❌ 常见错误:计算过于细致,浪费时间。
楼主大多数不太care这些计算,除非这些计算能够影响关键技术选型时进行估算(如数据库、缓存策略)。
📌 4. API Design
❌ 常见错误:
📌 5. High-Level Design(高层架构设计)
❌ 常见错误:
📌 6. Data Model & Schema Design
❌ 常见错误:
📌 7. Key Component Design
🔹 Cache
❌ 只提 Memcached/Redis。
不少的小伙伴在提出cache的时候,往往就提到使用memcache或者redis,但 没有说明为什么选择他们,另外往往没有提到TTL,尤其是TTL比较关键的时候,另外cache server crash这也是一个关键问题
🔹 Queue
❌ 给出错的的detail回答
提到message queue的时候,不少小伙伴就提到Apache kafka和Amazon SQS,楼主往往就会问小伙伴一些detail的问题,比如SQS 是否支持多个 Consumer,怎么保证Kafka消息的ordering,为什么选择SQS不选择Kafka等等
🔹 数据库(DB)
❌ 数据库选择说服力不够
当小伙伴们做数据库选择的时候,楼主往往会问为什么选择MySQL而不用PostgreSQL, vice versa, 楼主最常听见的回答是这个我比较熟悉
🔹 WebSocket
❌ 只提 WebSocket,不解释为何不用 Long Polling。另外对于Websocket,不要的小伙伴直接把它放到了load balance后面
🔹 Failure Foreseen
在面试中,面试官经常期待小伙伴们能够foreseen design会带来的一些failure,能够提出解决方案
💡 先写这么多,很多还没有设计,希望这篇总结能帮到大家,祝各位 System Design 面试顺利!🔥另外楼主正在准备面试中,想看面经。看在楼主写的比较多的份上求大米,多谢了!
📌 1. Requirement Gathering
❌ 常见错误:
- 不问背景问题:
- 忘记问Why
- 忘记了解我们的Customer
- 忽略 E2E Workflow:
📌 2. Non-Functional Requirements
❌ 常见错误:只CAP、Latency、Scalability。
- 关于CAP,这些小伙伴们都比较了解,就不再赘述了,
- 下面的一些non-function requirements希望小伙伴们也能关注一下:
- Privacy
- Legal
- Security and Fraud
- Monitoring and Operation
❌ 常见错误:计算过于细致,浪费时间。
楼主大多数不太care这些计算,除非这些计算能够影响关键技术选型时进行估算(如数据库、缓存策略)。
📌 4. API Design
❌ 常见错误:
- 直接列出所有 API,浪费时间
- 只选 REST,没有分析为什么不用 GraphQL/gRPC。
- 忽略一些现实问题
📌 5. High-Level Design(高层架构设计)
❌ 常见错误:
- 缺少关键组件
- 讲解过于细节,导致失去节奏控制。
📌 6. Data Model & Schema Design
❌ 常见错误:
- 关键的data model缺失。
- Data model的数据库选择不匹配
- 缺少关键的Schema
- 忽略现实设计
📌 7. Key Component Design
🔹 Cache
❌ 只提 Memcached/Redis。
不少的小伙伴在提出cache的时候,往往就提到使用memcache或者redis,但 没有说明为什么选择他们,另外往往没有提到TTL,尤其是TTL比较关键的时候,另外cache server crash这也是一个关键问题
🔹 Queue
❌ 给出错的的detail回答
提到message queue的时候,不少小伙伴就提到Apache kafka和Amazon SQS,楼主往往就会问小伙伴一些detail的问题,比如SQS 是否支持多个 Consumer,怎么保证Kafka消息的ordering,为什么选择SQS不选择Kafka等等
🔹 数据库(DB)
❌ 数据库选择说服力不够
当小伙伴们做数据库选择的时候,楼主往往会问为什么选择MySQL而不用PostgreSQL, vice versa, 楼主最常听见的回答是这个我比较熟悉
🔹 WebSocket
❌ 只提 WebSocket,不解释为何不用 Long Polling。另外对于Websocket,不要的小伙伴直接把它放到了load balance后面
🔹 Failure Foreseen
在面试中,面试官经常期待小伙伴们能够foreseen design会带来的一些failure,能够提出解决方案
💡 先写这么多,很多还没有设计,希望这篇总结能帮到大家,祝各位 System Design 面试顺利!🔥另外楼主正在准备面试中,想看面经。看在楼主写的比较多的份上求大米,多谢了!
已获得 39 大米


+2
共19条回复
✨ 您正在体验新版论坛UI

