购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3
技术相关面试题的准备

扫码或AR扫触发图(绿色区域)看视频

对于程序员来说,算法、数据结构和系统设计方面的问题在面试中常常会遇到,而且这些题目在面试中的比重越来越大,面试不再仅仅是针对简历的提问。很多面试者非常担心因为做不出这些题目而被淘汰,因此花费了很多时间来准备。

需要注意的是,在准备这些题目的时候,最好从应聘的职位和自己平时的工作出发,不要花太多时间。面试官出题的目的并不是为难面试者,而是考查面试者能否胜任该职位。不可否认,一些大公司喜欢使用难题来筛选面试者,但是面试并不是考试,并不能保证做出了所有的难题就能得到该职位。

本书从第03章开始会介绍一些关键的算法题和系统设计题,并给出容易理解的解法,目的是让面试者不会被常见题目卡住,即使遇到不会的题目也能从平时练习的题目中获得灵感,至少给出一个次优解。

除了本书的题目外,还建议大家使用一些网站和书籍辅助练习。

LeetCode

LeetCode是推荐最多的算法题练习网站,本书的算法题也都精选自LeetCode。我认为LeetCode有以下几个优点。

1.测试覆盖率高。在提交代码以后,LeetCode会跑很多测试来验证代码的正确性,而且很多题目的测试对于极端边界情况、复杂度和性能的要求都有全面的考虑。为了保证代码的正确性,做题目的时候要养成审题的习惯,仔细分析题目的条件范围,不要因为极端案例导致程序失败。

2.支持的语言比较多和新。LeetCode会定期更新支持的语言的版本,保证能够利用到最新的语言特性。

3.讨论内容丰富。Leet Code现在有中文和英文两个版本,每个版本下的评论都很丰富,通过阅读他人的评论可以加深我们对题目的理解,获得新的思路。

当然,LeetCode也有一些缺点,比如题目数量太多、不够精练,而与字符串相关的练习题偏少等。

《算法》第四版

这本由Robert Sedgewick和Kevin Wayne编写的算法书系统地介绍了各种常见的算法。我推荐它的原因是随着互联网的流行,与字符串相关的算法越来越重要,而这本书就专门把字符串列出讲解。

在硬件更新日新月异的情况下,很多因为硬件资源不足而发明出来的经典算法变得越来越不重要。在准备面试的时候应该把更多的精力留给和工作相关的算法,而不是只有面试时才会用到的算法,比如翻转二叉树。

High Scalability

这个网站会更新一些常见网站的系统设计,对于平时除了工作外很难接触到其他系统的程序员来说,它是一个了解不同系统如何设计的很好的网站。推荐面试者在面试前结合自己的分析和网站的结论做一些系统设计的练习。

《程序员面试金典》

这本书是由CareerCup创始人编写的,也是本书的灵感来源之一。这本书有更详细的面试场景的分析,以及更多的面试题的讲解。推荐阅读该书的第01~08章,这是该书的亮点部分。 D5u7E+z+mEYGr3zOPpT3QEC8cqWtPxzaXX98par2HD4op8E1wWpINH4UNrBtO5Fi

点击中间区域
呼出菜单
上一章
目录
下一章
×