亲爱的读者,

让我们先来介绍一下。

我不是招聘人员。我是一名软件工程师。正因如此,我知道被要求当场拿出精彩的算法然后在白板上编写出完美的代码是什么感觉。我之所以知道,是因为我被要求做过同样的事情——在 Google、Microsoft、Apple 和 Amazon 以及其他公司的面试中。

不仅如此,我也曾站在桌子的另一边,要求我的候选人们也这样做。我曾经为了找到那些我认为有可能通过面试的工程师,而翻看过成堆的简历。我曾经在他们解决或试图解决具有挑战性的问题时,对他们进行评估。我也曾经在 Google’s Hiring Committee 中争论过,是否某个候选人的表现足以获得这份工作。我熟悉整个招聘流程,因为我经历过其中的每一步,一遍又一遍。

而你,读者,可能正在为明天、下周或明年的面试做准备。我在这是为了帮助你巩固对计算机科学基础的理解,然后学习如何应用这些基础知识来破解编码面试。

第 6 版 Cracking the Coding Interview 在第 5 版的基础上进行了更新,增加了 70% 的内容:附加问题、修订后的答案、新章节介绍、更多的算法策略、所有问题的提示以及其他内容。请务必访问我们的网站 CrackingTheCodinglnterview.com,与其他求职者联系并发现新资源。

我为你和你将要发展的技能感到高兴。充分的准备将有助于你拓宽知识范围、提升沟通技巧。无论付出多大的努力,这都是值得的!建议你仔细阅读这些入门章节,在这些章节我记录下了一些重要的见解,或许最终能影响你的结果是 “hire”,还是 “no hire”。

同时要牢记,面试是很难的!在 Google 搞面试的这几年里,我注意到有一些面试官会问“简单”的问题,而另外一些面试官会问稍难的问题。但是你猜怎么着?简单的问题并不会让你更容易获得 offer。获得 offer 并不是要求你能完美地解决问题(很少有求职者能够做到!),而是要求你能给出比其他的求职者更好的回答。所以,当你遇到棘手的问题时,不要紧张——其他人可能都认为它很难。做不到完美也没有关系。

Study hard, practice-and good luck!

Gayle L. McDowell 创始人/CEO, CareerCup.com Cracking the PM InterviewCracking the Tech Career 作者