如何答好面试中的系统设计题?

原帖地址:知乎专栏

很多考察内容

比如面向对象,接口设计,设计模式,数据库表,分布式。

首先在性能耗在什么地方之前不要优化。所谓杞人忧天,你不是百度或者facebook的流量,根本考虑不到很多细节,大多数直接用云计算平台,直接帮你做了。但面试中还是会考察

这里就针对Scalability,有一些常见的优化技术,我就把他们列出 7脉神剑。

1. Cache:缓存,万金油,哪里不行优先考虑
2. Queue:消息队列,常见使用Linkedin的kafka
3. Asynchronized:批处理+异步,减少系统IO瓶颈
4. Load Balance: 负载均衡,可以使用一致性hash技术做到尽量少的数据迁移
5. Parallelization:并行计算,比如MapReduce
6. Replication:提高可靠性,如HDFS,基于位置感知的多块拷贝
7. Partition:数据库sharding,通过hash取摸