150个编程题问答从二叉树到二分查找,该部分涵盖了关于数据结构和算法的最常见、最有用的面试题以及最为精巧的解决方案。应对棘手算法题的5种行之有效的方法通过这5种方法,你可以学会如何处理并攻克算法难题,包括那些最棘手的算法题。面试者最容易犯的10个错误不要因为这些常见的错误而与成功失之交臂。要了解面试者常犯的一些错误,学会如何避免这些问题。面试準备的若干策略不要因为沉溺在无穷无尽的面试题中而错过了最重要的求职建议。这些策略和步骤可以让你更有效地準备面试。
基本介绍
- 外文名:Cracking the Coding Interview: 150 Programming Questions and Solutions, 5th Edition
- 书名:程式设计师面试金典
- 作者:麦克道尔
- 类型:计算机与网际网路
- 出版日期:2013年11月1日
- 语种:简体中文
- ISBN:9787115332912
- 译者:李琳骁
- 出版社:人民邮电出版社
- 页数:359页
- 开本:16
- 品牌:人民邮电出版社
基本介绍
内容简介
本书作者Gayle Laakmann McDowell是着名的软体从业者,曾担任谷歌资深面试官和招聘委员会成员,深谙世界顶尖科技公司的面试之道,与数百名求职者有过“交锋”,洞悉面试成败的关键所在。
本书融萃了作者在世界顶尖科技公司长期从事相关工作所积累的面试经验,涉及与面试相关的每个环节——大到剖析面试流程、详解经典的技术面试题,小到如何製作简历及面试时的着装规範,你都能在书中找到锦囊妙计。
对源自微软、苹果、谷歌等IT名企的150道面试题进行深入解析,是本书的重头戏,这些面试题数量众多、质量上乘、解析深入,是目前市面上同类图书均无法比肩的。对于希篮耻跨望冲击IT名企、期望大展宏图的程式设计师来说,本书是不可或缺的含金量极高的面试秘籍。
本书融萃了作者在世界顶尖科技公司长期从事相关工作所积累的面试经验,涉及与面试相关的每个环节——大到剖析面试流程、详解经典的技术面试题,小到如何製作简历及面试时的着装规範,你都能在书中找到锦囊妙计。
对源自微软、苹果、谷歌等IT名企的150道面试题进行深入解析,是本书的重头戏,这些面试题数量众多、质量上乘、解析深入,是目前市面上同类图书均无法比肩的。对于希篮耻跨望冲击IT名企、期望大展宏图的程式设计师来说,本书是不可或缺的含金量极高的面试秘籍。
作者简介
作者简介:
Gayle Laakmann McDwell
美国求职谘询网站CareerCup.cm创始人兼CE,是一位着名软体工程师,曾在微软、苹果与谷歌任职。早先,她自己就是一位十分成功的求职者,成功通过了微软、谷歌、亚马逊、苹果、IBM、高盛等多家最着名企业极其严苛的面试过程。工作以后,她又成为一位出色的面试官。在谷歌任职期间,她还是该公司资深面试官及招聘委员会成员,期间阅人无数,积累了相当丰富只档击誉的面试经验。除此书外,还着有《金领简历:敲开苹果、微软、谷歌的大门》。
译者简介:
李琳骁
从事嵌入式Linux核心/驱动开发,关注IT、开放源码和安防监控等领域。业余时以技术翻译为乐,时而客串编辑,好为爱书挑错,渴求完美,却也常因“小”失大,不得读书要领。翻译或参与翻译了《Linux命令详解手册》《编程人生》《编程大师访谈录》等图书。网路ID为leal,管理Vim、Andrid等豆瓣小组,个人站点:http://linxia.net。
漆犇
毕业于中国地质大学,拥有十余年软体开发、测试及流程管理经验,曾翻译出版了《Linux/Unix设计思想》《金领简历 : 敲开苹果、旬巩良微软、谷歌的大门》等书。目前定居于美国西雅图,在微软Windws Phne开发敬料中心从事与WP套用开发者相关的项目管理事务。
Gayle Laakmann McDwell
美国求职谘询网站CareerCup.cm创始人兼CE,是一位着名软体工程师,曾在微软、苹果与谷歌任职。早先,她自己就是一位十分成功的求职者,成功通过了微软、谷歌、亚马逊、苹果、IBM、高盛等多家最着名企业极其严苛的面试过程。工作以后,她又成为一位出色的面试官。在谷歌任职期间,她还是该公司资深面试官及招聘委员会成员,期间阅人无数,积累了相当丰富只档击誉的面试经验。除此书外,还着有《金领简历:敲开苹果、微软、谷歌的大门》。
译者简介:
李琳骁
从事嵌入式Linux核心/驱动开发,关注IT、开放源码和安防监控等领域。业余时以技术翻译为乐,时而客串编辑,好为爱书挑错,渴求完美,却也常因“小”失大,不得读书要领。翻译或参与翻译了《Linux命令详解手册》《编程人生》《编程大师访谈录》等图书。网路ID为leal,管理Vim、Andrid等豆瓣小组,个人站点:http://linxia.net。
漆犇
毕业于中国地质大学,拥有十余年软体开发、测试及流程管理经验,曾翻译出版了《Linux/Unix设计思想》《金领简历 : 敲开苹果、旬巩良微软、谷歌的大门》等书。目前定居于美国西雅图,在微软Windws Phne开发敬料中心从事与WP套用开发者相关的项目管理事务。
媒体推荐
“如果你正打算参加技术面试,我极力推荐你阅读此书。这本书汇总了诸多你不可不知的决胜于技术面试的问题、策略和方法。”
——Ginnie,亚马逊评论者
——Ginnie,亚马逊评论者
图书目录
第1章 面试流程 1
1.1 概述 1
1.2 面试题的来源 2
1.3 準备时间表与注意事项 3
1.4 面试评估流程 4
1.5 答题情况 5
1.6 着装规範 6
桨断阀拒1.7 十大常见错误 6
1.8 常见问题解答 8
第2章 面试揭秘 9
2.1 微软面试 10
2.2 亚马逊面试 10
2.3 谷歌面试格誉葛 11
2.4 苹果面试 12
2.5 Facebook面试 13
2.6 雅虎面试 14
第3章 特殊情况 15
3.1 有工作经验的求职者 15
3.2 测试人员及SDET 15
3.3 项目经理与产品经理 16
3.4 技术主管与部门经理 17
3.5 创业公榜达劝司的面试 18
第4章 面试之前 19
4.1 积累相关经验 19
4.2 构建人际网路 20
4.3 写好简历 21
第5章 行为面试题 23
5.1 準备工作 23
5.2 如何应对 25
第6章 技术面试题 27
6.1 技术準备 27
6.2 如何应对 29
6.3 算法题的五种解法 31
6.4 怎样才算好代码 34
第7章 录用通知及其他 39
7.1 如何处理录用与被拒的情况 39
7.2 如何评估录用待遇 40
7.3 录用谈判 41
7.4 入职须知 42
第8章 面试考题 44
8.1 数组与字元串 45
8.2 鍊表 47
8.3 栈与伫列 49
8.4 树与图 51
8.5 位操作 54
8.6 智力题 57
8.7 数学与机率 59
8.8 面向对象设计 64
8.9 递归和动态规划 66
8.10 扩展性与存储限制 69
8.11 排序与查找 73
8.12 测试 78
8.13 C和C++ 83
8.14 Java 89
8.15 资料库 93
8.16 执行绪与锁 98
8.17 中等难题 104
8.18 高难度题 105
第9章 解题技巧 107
9.1 数组与字元串 108
9.2 鍊表 117
9.3 栈与伫列 131
9.4 树与图 146
9.5 位操作 163
9.6 智力题 175
9.7 数学与机率 179
9.8 面向对象设计 192
9.9 递归和动态规划 221
9.10 扩展性与存储限制 241
9.11 排序与查找 255
9.12 测试 269
9.13 C和C++ 274
9.14 Java 284
9.15 资料库 290
9.16 执行绪与锁 296
9.17 中等难题 306
9.18 高难度题 331
索引 358
1.1 概述 1
1.2 面试题的来源 2
1.3 準备时间表与注意事项 3
1.4 面试评估流程 4
1.5 答题情况 5
1.6 着装规範 6
桨断阀拒1.7 十大常见错误 6
1.8 常见问题解答 8
第2章 面试揭秘 9
2.1 微软面试 10
2.2 亚马逊面试 10
2.3 谷歌面试格誉葛 11
2.4 苹果面试 12
2.5 Facebook面试 13
2.6 雅虎面试 14
第3章 特殊情况 15
3.1 有工作经验的求职者 15
3.2 测试人员及SDET 15
3.3 项目经理与产品经理 16
3.4 技术主管与部门经理 17
3.5 创业公榜达劝司的面试 18
第4章 面试之前 19
4.1 积累相关经验 19
4.2 构建人际网路 20
4.3 写好简历 21
第5章 行为面试题 23
5.1 準备工作 23
5.2 如何应对 25
第6章 技术面试题 27
6.1 技术準备 27
6.2 如何应对 29
6.3 算法题的五种解法 31
6.4 怎样才算好代码 34
第7章 录用通知及其他 39
7.1 如何处理录用与被拒的情况 39
7.2 如何评估录用待遇 40
7.3 录用谈判 41
7.4 入职须知 42
第8章 面试考题 44
8.1 数组与字元串 45
8.2 鍊表 47
8.3 栈与伫列 49
8.4 树与图 51
8.5 位操作 54
8.6 智力题 57
8.7 数学与机率 59
8.8 面向对象设计 64
8.9 递归和动态规划 66
8.10 扩展性与存储限制 69
8.11 排序与查找 73
8.12 测试 78
8.13 C和C++ 83
8.14 Java 89
8.15 资料库 93
8.16 执行绪与锁 98
8.17 中等难题 104
8.18 高难度题 105
第9章 解题技巧 107
9.1 数组与字元串 108
9.2 鍊表 117
9.3 栈与伫列 131
9.4 树与图 146
9.5 位操作 163
9.6 智力题 175
9.7 数学与机率 179
9.8 面向对象设计 192
9.9 递归和动态规划 221
9.10 扩展性与存储限制 241
9.11 排序与查找 255
9.12 测试 269
9.13 C和C++ 274
9.14 Java 284
9.15 资料库 290
9.16 执行绪与锁 296
9.17 中等难题 306
9.18 高难度题 331
索引 358
序言
【前言】
招聘中的问题
讨论完招聘事宜,我们又一次沮丧地走出会议室。那天,我们重新审查了十位“过关”的求职者,但是全都不堪录用。我们很纳闷,是我们太过苛刻了吗?
我尤为失望的是,我推荐的一名求职者也被拒了。他是我以前的学生,以高达3.73的平均分(GPA)毕业于华盛顿大学,这可是世界上最棒的计算机专业院校之一。此外,他还完成了大量的开源项目工作。他精力充沛、富于创新、踏实能干、头脑敏锐,不论从哪方面来看,他都堪称真正的极客。
但是,我不得不同意其他招聘人员的看法:他还是不够格。就算我的强力推荐可以让他侥倖过关,在后续的招聘环节还是会失利,因为他的硬伤太多了。
儘管面试官都认为他很聪明,但他答题总是磕磕绊绊的。大多数成功的求职者都能轻鬆搞定第一道题(这一题广为人知,我们只是略作调整而已),可他却没能想出合适的算法。虽然他后来给出了一种解法,但没有提出针对其他情形进行最佳化的解法。最后,开始写代码时,他草草地採用了最初的思路,可这个解法漏洞百出,最终还是没能搞定。他算不上表现最差的求职者,但与我们的“录用底线”却相去甚远,结果只能是铩羽而归。
几个星期后,他给我打电话询问反馈意见,我很纠结,不知该怎幺跟他说。他需要变得更聪明些吗?不,他其实智力超群。做个更好的程式设计师?不,他的编程技能和我见过的一些最出色的程式设计师不相上下。
跟许多积极上进的求职者一样,他準备得非常充分。他研读过Brian W. Kernighan和Dennis M. Ritchie合着的《C程式设计语言》,麻省理工学院出版的《算法导论》等经典着作。他可以细数很多平衡树的方法,也能用C语言写出各种花哨的程式。
我不得不遗憾地告诉他:光是看这些书还远远不够。这些经典学院派着作教会了人们错综複杂的研究理论,对程式设计师的面试却助益不多。为什幺呢?容我稍稍提醒你一下:即使从学生时代起,你的面试官们其实都没怎幺接触过所谓的红黑树(Red-Black Trees)算法。
要顺利通过面试,就得“真枪实弹”地做準备。你必须演练真正的面试题,并掌握它们的解题模式。
这本书就是我根据自己在顶尖公司积累的第一手面试经验提炼而成的精华。我曾经与数百名求职者有过“交锋”,本书可以说是我面试几百位求职者的结晶。同时,我还从成千上万求职者与面试官提供的问题中精挑细选了一部分。这些面试题出自许多知名的高科技公司。可以说,这本书囊括了150道世界上最好的程式设计师面试题,都是从数以千计的好问题中挑选出来的。
我的写作方法
本书重点关注算法、编码和设计问题。为什幺呢?儘管面试中也会有“行为问题”,但是答案会随个人的经历而千变万化。同样,儘管许多公司也会考问细节(例如,“什幺是虚函式?”),但通过演练这些问题而取得的经验非常有限,更多地是涉及非常具体的知识点。本书只会述及其中一些问题,以便你了解它们“长”什幺样。当然,对于那些可以拓展技术技能的问题,我会给出更详细的解释。
我的教学热情
我特别热爱教学。我喜欢帮助人们理解新概念,并提供一些学习工具,从而充分激发他们的学习热情。
我第一次“正式”的教学经验是在美国宾夕法尼亚大学就读期间,那时我才大二,担任本科计算机科学课程的助教(TA)。我后来还在其他一些课程中担任过助教,最终在大学里推出了自己的计算机科学课程,也就是给大家教授一些实际的“动手”技能。
在谷歌担任工程师时,培训和指导“Nooglers”(意指谷歌新员工。没错,他们就是这幺称呼新人的!)是我最喜欢的工作之一。后来,我还利用“20%自由支配时间”在华盛顿大学教授计算机科学课程。
《程式设计师面试金典》、《金领简历》和CareerCup.com网站都能充分体现我的教学热情。即便是现在,你也会发现我经常出现在CareerCup.com上为用户答疑解惑。
请加入我们的行列吧!
Gayle Laakmann McDowell
招聘中的问题
讨论完招聘事宜,我们又一次沮丧地走出会议室。那天,我们重新审查了十位“过关”的求职者,但是全都不堪录用。我们很纳闷,是我们太过苛刻了吗?
我尤为失望的是,我推荐的一名求职者也被拒了。他是我以前的学生,以高达3.73的平均分(GPA)毕业于华盛顿大学,这可是世界上最棒的计算机专业院校之一。此外,他还完成了大量的开源项目工作。他精力充沛、富于创新、踏实能干、头脑敏锐,不论从哪方面来看,他都堪称真正的极客。
但是,我不得不同意其他招聘人员的看法:他还是不够格。就算我的强力推荐可以让他侥倖过关,在后续的招聘环节还是会失利,因为他的硬伤太多了。
儘管面试官都认为他很聪明,但他答题总是磕磕绊绊的。大多数成功的求职者都能轻鬆搞定第一道题(这一题广为人知,我们只是略作调整而已),可他却没能想出合适的算法。虽然他后来给出了一种解法,但没有提出针对其他情形进行最佳化的解法。最后,开始写代码时,他草草地採用了最初的思路,可这个解法漏洞百出,最终还是没能搞定。他算不上表现最差的求职者,但与我们的“录用底线”却相去甚远,结果只能是铩羽而归。
几个星期后,他给我打电话询问反馈意见,我很纠结,不知该怎幺跟他说。他需要变得更聪明些吗?不,他其实智力超群。做个更好的程式设计师?不,他的编程技能和我见过的一些最出色的程式设计师不相上下。
跟许多积极上进的求职者一样,他準备得非常充分。他研读过Brian W. Kernighan和Dennis M. Ritchie合着的《C程式设计语言》,麻省理工学院出版的《算法导论》等经典着作。他可以细数很多平衡树的方法,也能用C语言写出各种花哨的程式。
我不得不遗憾地告诉他:光是看这些书还远远不够。这些经典学院派着作教会了人们错综複杂的研究理论,对程式设计师的面试却助益不多。为什幺呢?容我稍稍提醒你一下:即使从学生时代起,你的面试官们其实都没怎幺接触过所谓的红黑树(Red-Black Trees)算法。
要顺利通过面试,就得“真枪实弹”地做準备。你必须演练真正的面试题,并掌握它们的解题模式。
这本书就是我根据自己在顶尖公司积累的第一手面试经验提炼而成的精华。我曾经与数百名求职者有过“交锋”,本书可以说是我面试几百位求职者的结晶。同时,我还从成千上万求职者与面试官提供的问题中精挑细选了一部分。这些面试题出自许多知名的高科技公司。可以说,这本书囊括了150道世界上最好的程式设计师面试题,都是从数以千计的好问题中挑选出来的。
我的写作方法
本书重点关注算法、编码和设计问题。为什幺呢?儘管面试中也会有“行为问题”,但是答案会随个人的经历而千变万化。同样,儘管许多公司也会考问细节(例如,“什幺是虚函式?”),但通过演练这些问题而取得的经验非常有限,更多地是涉及非常具体的知识点。本书只会述及其中一些问题,以便你了解它们“长”什幺样。当然,对于那些可以拓展技术技能的问题,我会给出更详细的解释。
我的教学热情
我特别热爱教学。我喜欢帮助人们理解新概念,并提供一些学习工具,从而充分激发他们的学习热情。
我第一次“正式”的教学经验是在美国宾夕法尼亚大学就读期间,那时我才大二,担任本科计算机科学课程的助教(TA)。我后来还在其他一些课程中担任过助教,最终在大学里推出了自己的计算机科学课程,也就是给大家教授一些实际的“动手”技能。
在谷歌担任工程师时,培训和指导“Nooglers”(意指谷歌新员工。没错,他们就是这幺称呼新人的!)是我最喜欢的工作之一。后来,我还利用“20%自由支配时间”在华盛顿大学教授计算机科学课程。
《程式设计师面试金典》、《金领简历》和CareerCup.com网站都能充分体现我的教学热情。即便是现在,你也会发现我经常出现在CareerCup.com上为用户答疑解惑。
请加入我们的行列吧!
Gayle Laakmann McDowell
序言
【前言】
招聘中的问题
讨论完招聘事宜,我们又一次沮丧地走出会议室。那天,我们重新审查了十位“过关”的求职者,但是全都不堪录用。我们很纳闷,是我们太过苛刻了吗?
我尤为失望的是,我推荐的一名求职者也被拒了。他是我以前的学生,以高达3.73的平均分(GPA)毕业于华盛顿大学,这可是世界上最棒的计算机专业院校之一。此外,他还完成了大量的开源项目工作。他精力充沛、富于创新、踏实能干、头脑敏锐,不论从哪方面来看,他都堪称真正的极客。
但是,我不得不同意其他招聘人员的看法:他还是不够格。就算我的强力推荐可以让他侥倖过关,在后续的招聘环节还是会失利,因为他的硬伤太多了。
儘管面试官都认为他很聪明,但他答题总是磕磕绊绊的。大多数成功的求职者都能轻鬆搞定第一道题(这一题广为人知,我们只是略作调整而已),可他却没能想出合适的算法。虽然他后来给出了一种解法,但没有提出针对其他情形进行最佳化的解法。最后,开始写代码时,他草草地採用了最初的思路,可这个解法漏洞百出,最终还是没能搞定。他算不上表现最差的求职者,但与我们的“录用底线”却相去甚远,结果只能是铩羽而归。
几个星期后,他给我打电话询问反馈意见,我很纠结,不知该怎幺跟他说。他需要变得更聪明些吗?不,他其实智力超群。做个更好的程式设计师?不,他的编程技能和我见过的一些最出色的程式设计师不相上下。
跟许多积极上进的求职者一样,他準备得非常充分。他研读过Brian W. Kernighan和Dennis M. Ritchie合着的《C程式设计语言》,麻省理工学院出版的《算法导论》等经典着作。他可以细数很多平衡树的方法,也能用C语言写出各种花哨的程式。
我不得不遗憾地告诉他:光是看这些书还远远不够。这些经典学院派着作教会了人们错综複杂的研究理论,对程式设计师的面试却助益不多。为什幺呢?容我稍稍提醒你一下:即使从学生时代起,你的面试官们其实都没怎幺接触过所谓的红黑树(Red-Black Trees)算法。
要顺利通过面试,就得“真枪实弹”地做準备。你必须演练真正的面试题,并掌握它们的解题模式。
这本书就是我根据自己在顶尖公司积累的第一手面试经验提炼而成的精华。我曾经与数百名求职者有过“交锋”,本书可以说是我面试几百位求职者的结晶。同时,我还从成千上万求职者与面试官提供的问题中精挑细选了一部分。这些面试题出自许多知名的高科技公司。可以说,这本书囊括了150道世界上最好的程式设计师面试题,都是从数以千计的好问题中挑选出来的。
我的写作方法
本书重点关注算法、编码和设计问题。为什幺呢?儘管面试中也会有“行为问题”,但是答案会随个人的经历而千变万化。同样,儘管许多公司也会考问细节(例如,“什幺是虚函式?”),但通过演练这些问题而取得的经验非常有限,更多地是涉及非常具体的知识点。本书只会述及其中一些问题,以便你了解它们“长”什幺样。当然,对于那些可以拓展技术技能的问题,我会给出更详细的解释。
我的教学热情
我特别热爱教学。我喜欢帮助人们理解新概念,并提供一些学习工具,从而充分激发他们的学习热情。
我第一次“正式”的教学经验是在美国宾夕法尼亚大学就读期间,那时我才大二,担任本科计算机科学课程的助教(TA)。我后来还在其他一些课程中担任过助教,最终在大学里推出了自己的计算机科学课程,也就是给大家教授一些实际的“动手”技能。
在谷歌担任工程师时,培训和指导“Nooglers”(意指谷歌新员工。没错,他们就是这幺称呼新人的!)是我最喜欢的工作之一。后来,我还利用“20%自由支配时间”在华盛顿大学教授计算机科学课程。
《程式设计师面试金典》、《金领简历》和CareerCup.com网站都能充分体现我的教学热情。即便是现在,你也会发现我经常出现在CareerCup.com上为用户答疑解惑。
请加入我们的行列吧!
Gayle Laakmann McDowell
招聘中的问题
讨论完招聘事宜,我们又一次沮丧地走出会议室。那天,我们重新审查了十位“过关”的求职者,但是全都不堪录用。我们很纳闷,是我们太过苛刻了吗?
我尤为失望的是,我推荐的一名求职者也被拒了。他是我以前的学生,以高达3.73的平均分(GPA)毕业于华盛顿大学,这可是世界上最棒的计算机专业院校之一。此外,他还完成了大量的开源项目工作。他精力充沛、富于创新、踏实能干、头脑敏锐,不论从哪方面来看,他都堪称真正的极客。
但是,我不得不同意其他招聘人员的看法:他还是不够格。就算我的强力推荐可以让他侥倖过关,在后续的招聘环节还是会失利,因为他的硬伤太多了。
儘管面试官都认为他很聪明,但他答题总是磕磕绊绊的。大多数成功的求职者都能轻鬆搞定第一道题(这一题广为人知,我们只是略作调整而已),可他却没能想出合适的算法。虽然他后来给出了一种解法,但没有提出针对其他情形进行最佳化的解法。最后,开始写代码时,他草草地採用了最初的思路,可这个解法漏洞百出,最终还是没能搞定。他算不上表现最差的求职者,但与我们的“录用底线”却相去甚远,结果只能是铩羽而归。
几个星期后,他给我打电话询问反馈意见,我很纠结,不知该怎幺跟他说。他需要变得更聪明些吗?不,他其实智力超群。做个更好的程式设计师?不,他的编程技能和我见过的一些最出色的程式设计师不相上下。
跟许多积极上进的求职者一样,他準备得非常充分。他研读过Brian W. Kernighan和Dennis M. Ritchie合着的《C程式设计语言》,麻省理工学院出版的《算法导论》等经典着作。他可以细数很多平衡树的方法,也能用C语言写出各种花哨的程式。
我不得不遗憾地告诉他:光是看这些书还远远不够。这些经典学院派着作教会了人们错综複杂的研究理论,对程式设计师的面试却助益不多。为什幺呢?容我稍稍提醒你一下:即使从学生时代起,你的面试官们其实都没怎幺接触过所谓的红黑树(Red-Black Trees)算法。
要顺利通过面试,就得“真枪实弹”地做準备。你必须演练真正的面试题,并掌握它们的解题模式。
这本书就是我根据自己在顶尖公司积累的第一手面试经验提炼而成的精华。我曾经与数百名求职者有过“交锋”,本书可以说是我面试几百位求职者的结晶。同时,我还从成千上万求职者与面试官提供的问题中精挑细选了一部分。这些面试题出自许多知名的高科技公司。可以说,这本书囊括了150道世界上最好的程式设计师面试题,都是从数以千计的好问题中挑选出来的。
我的写作方法
本书重点关注算法、编码和设计问题。为什幺呢?儘管面试中也会有“行为问题”,但是答案会随个人的经历而千变万化。同样,儘管许多公司也会考问细节(例如,“什幺是虚函式?”),但通过演练这些问题而取得的经验非常有限,更多地是涉及非常具体的知识点。本书只会述及其中一些问题,以便你了解它们“长”什幺样。当然,对于那些可以拓展技术技能的问题,我会给出更详细的解释。
我的教学热情
我特别热爱教学。我喜欢帮助人们理解新概念,并提供一些学习工具,从而充分激发他们的学习热情。
我第一次“正式”的教学经验是在美国宾夕法尼亚大学就读期间,那时我才大二,担任本科计算机科学课程的助教(TA)。我后来还在其他一些课程中担任过助教,最终在大学里推出了自己的计算机科学课程,也就是给大家教授一些实际的“动手”技能。
在谷歌担任工程师时,培训和指导“Nooglers”(意指谷歌新员工。没错,他们就是这幺称呼新人的!)是我最喜欢的工作之一。后来,我还利用“20%自由支配时间”在华盛顿大学教授计算机科学课程。
《程式设计师面试金典》、《金领简历》和CareerCup.com网站都能充分体现我的教学热情。即便是现在,你也会发现我经常出现在CareerCup.com上为用户答疑解惑。
请加入我们的行列吧!
Gayle Laakmann McDowell