系统设计面试,对于有经验跳槽的软件工程师来说,是必考的。而对于应届毕业生来说,也有可能考到,主要是用于区分其他面试者,或者是加面。在系统设计面试中的表现,可以反映出你处理复杂系统的能力,面试公司甚至以此为据为你提供相应的职位和薪酬。
然鹅,对于很多出入职场的人来说(工作经验0-3年),想要完美回答系统设计问题,几乎是不可能的。那么为什么面试还要考呢?事实上,系统设计的面试,面试官并不希望得到一个100%bug free的回答,而是希望通过这个面试看到你有一定的基本sense, 如知道什么是scability, 什么是reliability。因此,你可以在系统设计中做不到"bug free",但是你绝对不可以答非所问,甚至连面试官在说什么都不知道。
以下是个人整理的系统设计面试资料,希望能有帮助。
Grokking the System Design Interview
这套课程是Educative的付费的全英文视频课程,其中有几节是免费的。课程包括很多系统设计实例,如Dropbox, Twitter, Facebook Messenger, Uber 等系统设计。是一套值得推荐的课程。
网址:http://t.cn/EInHDXQ
九章算法《系统设计班》
这是可以找到的极少数的全中文课程。课程需付费。由硅谷在职工程师授课。课程中的4S系统设计面试分析法,可以运用到几乎所有的系统设计面试题中。课程保护丰富的系统设计实例,如google 三驾马车、Facebook Messenger, Uber, Yelp, 短网址等系统设计。此外,课程配套有online judge 在线评测题库,可以直接在线编程。
网址:http://t.cn/EInQPJg
System Design for Tech Interviews
这是一套英文网络课程,知名度没有前面的两个课程高。里面的面试实例相对少一点。如果有额外的时间,可以补充看看。
网址:
Intro to:Architecture and Systems Designs
来自前Facebook工程师的关于如何处理系统设计问题的 Youtube教程。
网址:http://t.cn/EzFLeYN
Designing Data-intensive Applications
这是一本书籍,是学习如何设计规模(design pattern)的另一个好资源。它讨论了 数据库(mySQL和noSQL)是如何工作的,什么时候使用哪一个,各种处理规模技术的利弊等。amazon网上有卖。
一个关于日志和权衡的非常冗长的技术讨论。我还没有看完,但得到了同事的强烈认可。
网址:http://t.cn/RLftRL4
Github: 老外写的《系统设计入门》
这是别人翻译的一个github中文文档。在翻译前,应该是从上万github文档里面精选过的,值得一读。里面关于系统设计的理论非常全面、深入,而且有各种图例帮助理解,非常清晰。
网址:http://t.cn/RXVkSUL
Guihub: Freeman Zhang 的 System design 总结
这是一个github牛人的system design. 这个文档是全英文文档,主要是系统设计的相关理论性知识,比较完整、深入。系统设计实例相对较少。
网址:http://t.cn/R0Hn8lZ
Palantir 面试官教你如何准备系统设计
这是Palantir面试官写的系统设计考核的目的、内容、要点,有助于了解系统设计的面试内容。
英文网址:http://t.cn/RA8POpp
中文翻译:http://t.cn/EInQeY6
系统设计评分标准
如何评价你的系统设计面试表现的好不好,可以看看这个系统设计评分标准。
网址:http://t.cn/EInQd7Q
Twitter 工程师的系统设计面试攻略
这是一个在twitter工作的华人工程师写的系统设计面试攻略,仅仅是一篇文章,从方法论上指导了如何应对系统设计面试。
英文原文:http://t.cn/EIn8hPd
中文翻译:http://t.cn/EIn8hPd
《系统设计班》今日免费试听
系统设计高频题大总结
如何回答系统设计问题-4S分析法
高频题讲解-如何设计twitter/facebook
北京时间3月7日10:30-12:30(美西3/6周三18:30-20:30),长按图片报名
参加试听课,即可免费获取:
OOD&系统设计求职大礼包
价值¥249 九章求职讲座VIP 7天
价值¥249 LintCode VIP 15天