盖尔·拉克曼(GayleLaakmann),Google前员工,目前在宾夕法尼亚大学沃顿商学院攻读MBA.她也是在宾州大学获得计算机科学博士学位。她现在是CareerCup和Seattle Anti-Freeze两家公司的创始人兼CEO.她也是《Cracking the Coding Interview》一书的作者。本文就程序员的面试技巧问题对盖尔进行了采访,以下为采访稿。 您好,盖尔。能先自我简单介绍一下呢? 您好。我先是在微软和苹果实习的,后来在Google做了三年的工程师。在Google,我也是招聘委员会的成员,面试过120多位本土和国际的工程师,我参与了招聘会并审查过数百份简历。我很喜欢在Google工作,但我也想尝试创业。 所以,有了这些难得的经验和见识后,我在2005年成立了CareerCup.我们通过电子书和面试论坛来帮助人们准备技术类面试。 您能否简单介绍一下像微软、Google和亚马逊这类公司的面试过程?面试有几轮?哪些地方需要重点关注? 首先是有一位工程师通过电话面试你;(通过后)再参加有4-6名求职者的群面。至于需要关注的地方,大公司追求优秀的技术能力高于一切。你能否写出合格、整洁和有条理的代码?能否解决有挑战性的问题? 那学生/求职者该怎么掌握这些呢? 一定要实践!熟能生巧虽是老生常谈,但它的确有用。在纸上练习编程,然后照原样输入到电脑上。你会发现错误比你想象的要多的多! 你看到什么样的求职者才会说“哇!这就是我要找的人。” 我希望求职者是: 1.聪明的 2.能写合格的代码 3.关注编写整洁的代码 最后一条是最难的。作为一个面试官,我选人时主要看:当求职者拿到一个问题时,他们是仅在纸上写代码么?或者他们会定义相关的数据结构么? 求职者并不知道面试中所有问题的答案吧?他们怎么回答那些没有提示的问题呢? 一位优秀的面试官,会问那些难度非常高以致于你甚至都不会知道答案的问题。回答这类问题的最好办法是,先简化问题,做假设(比如:假设数组中只有整数);然后,解决简化后的问题;最后,归纳答案。 此外,面试官想知道你的想法,所以尽力说出你的方法,并解释你的操作过程。这将给他们留下对你技术和技能的良好印象。 在求职过程中,您认为GPA有什么样的作用?或者在面试中,纯粹看GPA么? 这个真的取决于公司。一般来说,想要得到初步面试机会,除了诸如经验和兴趣等其他东西之外,GPA也重要。 在他们面试你后,并且正决定是否用你时,GPA不应是阻碍。(否则,他们就没必要面试你了。) 我接触过一些非常聪明的人,但由于各种原因他们的GPA不好,我相信您也应该遇到过吧。您对他们有什么建议呢?你认为什么样的技能才能打动顶级公司? 这些公司真的不关心你的分数。他们看重的是:你是否聪明,你是否有强硬的技术和你是否能努力工作。 你要用其他途径来证明自己。比如:引用你做过的项目,或在开源项目中解决的问题。列举说明你在某一特别困难课程中的分数或班级排名。 在简历中列举你的奖项和参与的项目,保持更简历更新。如果你没有项目经验,竭尽全力去获取经验!这才是那些公司最最看重的东西。 在求职者去应聘Google这类公司前,请您给他们分享一些建议或注意事项。 练习诸如我们网站上的问题;先在纸上练习算法,然后按原样再输入到电脑中。 还有一件事要注意,关于你简历上的每个工作或项目,你必须能解释其中最艰难的挑战,你最喜欢它的哪部分?你最不喜欢哪部分?你学到了什么?