系统设计评分维度
可行解:
可行解往往是答案最重要的一部分,也是能够引出后续系统设计面试过程的重要一步,往往面试官会从这一可行解中找到可优化或者有缺陷的地方提出针对性的问题,是后续面试过程的基础;
特定问题:
面试者是否有分析并解决系统设计特定问题的能力;
分析问题:
对一个系统设计问题的分析过程往往比设计这个系统得到的结果更重要;
权衡(tradeoff):
永远不会有一个在任何场景下都表现最优秀的系统,系统设计的结论往往是权衡利弊的结果(可类比分布式系统设计中的 CAP 定律、不可能三角);
知识储备:
往往系统设计需要比较全面的知识储备,比如说:缓存、SQL/NoSQL 数据库、分布式基础知识、常见系统架构…
切记不能不坚定想法,在几个方案之间来回摇摆,要展现出 tradeoff 的能力
要点
- 问清楚需求再设计,不要一开始就设计一个巨牛的系统
- 不要做关键词大师,给面试官抛出一堆你自己都不太理解的”专业名词“
- 不要试图设计一个最牛的系统,要设计一个够用的系统
- 先设计一个能基本工作的系统,然后再逐步进行优化
- 系统设计没有标准答案,单纯背答案毫无意义,分析过程比结果更重要
- 要培养自己通过权衡利弊来设计系统的能力,要把自己的知识储备在分析问题的过程中进行展示