《程序员面试金典(第5版)》简介:
本书是原谷歌资深面试官的经验之作,层层紧扣程序员面试的每一个环节,全面而详尽地介绍了程序员应当如何应对面试,才能在面试中脱颖而出。第1~7 章主要涉及面试流程解析、面试官的幕后决策及可能提出的问题、面试前的准备工作、对面试结果的处理等内容;第8~9 章从数据结构、概念与算法、知识类问题和附加面试题4 个方面,为读者呈现了出自微软、苹果、谷歌等多家知名公司的150 道编程面试题,并针对每一道面试题目,分别给出了详细的解决方案。
本书适合程序开发和设计人员阅读。
《程序员面试金典(第5版)》摘录:
怎样才算好代码 至此,你也许明白了,许多公司都想找能写出“优美、整洁”代码的人才。但这到底意味着什么,怎样才能在面试中展现出这方面的能力呢?般说来,好代码具备如下特性。 正确:代码应当正确处理所有预期输入 ( expected input)和和非法输入( unexpected inbut 高效:不管是从空间上还是从时间上来衡量,代码都要尽可能地高效运行。所谓的 “高效”不仅是指在极限情况下的渐近效率 ( asymptotic efficiency,大O记法),同时也包括实际运行的效率。也就是说,在计算O时间时,你可以忽略某个常量因子,但在实际环境中,该常量因子可能有很大影响。简洁:代码能写成10行就不要写成100行。这样开发人员才能尽快写好代码。 易读:要要确保其他开发人员能读懂你的代 码,并弄清楚来龙去脉。易读读的代码会有适 当注释,实现思路也简单易懂。这就意味 着,那些包含诸多位操作的花俏的代码不见 得就是“好”代码。 可维护:在产品生命周期内,代码经过适当 修改就能应对需求的变化。此外,无论对于 原开发人员还是其他开发人员,代码都应该 易于维护。 力求实现上述特性必须找到一个平衡点。比如,有些情况下,我们往往要牺牲一定的效率好让代码更易维护,有时则要反其道行之。 在面试中,写代码时应该好好考虑这些要素。下文就前面的清单给出更具体的描述。
《程序员面试金典(第5版)》目录:
目 录
第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
· · · · · ·