如何做System design面试

通常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/

你可能感兴趣的:(如何做System design面试)