如何做System design面试
2017-03-15 本文已影响340人
yangweigbh
通常System design的问题都是开放性的,重要的是communication,需要面试者首先通过问问题,弄清楚系统的constraint是什么,系统输入是什么,然后画出类图,告诉面试官你的idea。
需要了解的知识点:
-
并发:thread,deadlock,starvation。并行算法,一致性。
-
网络:IPC,TCP/IP
-
抽象:需要了解操作系统,文件系统,数据库的工作原理。
-
不同系统的性能: 了解RAM,disk,SSD,network的性能
-
估算:估算不同方案的性能,从而选出最优的
-
可用性和稳定性:处理异常情况,如何处理网络失败。
如何准备:
-
做模拟面试:找同事给你出design的问题
-
真正的设计一个系统
-
做估算
-
阅读open source系统的代码,看看他们如何做设计
-
了解操作系统和数据库的原理,可以借鉴解决问题的方法
Refer:
http://www.palantir.com/2011/10/how-to-rock-a-systems-design-interview/