《程序员面试金典(第6版)》简介:

本书是原谷歌资深面试官的经验之作,层层紧扣程序员面试的每一个环节,全面而详尽地介绍了程序员应当如何应对面试,才能在面试中脱颖而出。内容主要涉及面试流程解析,面试官的幕后决策及可能提出的问题,面试前的准备工作,对面试结果的处理,以及出自微软、苹果、谷歌等多家知名公司的189道编程面试题及详细解决方案。第6版修订了上一版中一些题目的解法,为各章新增了介绍性内容,加入了更多的算法策略,并增添了对所有题目的提示信息。

《程序员面试金典(第6版)》摘录:

怎样才算好代码 至此,你也许明白了,许多公司都想找能写出“优美、整洁”代码的人才。但这到底意味着什么,怎样才能在面试中展现出这方面的能力呢?般说来,好代码具备如下特性。 正确:代码应当正确处理所有预期输入 ( expected input)和和非法输入( unexpected inbut 高效:不管是从空间上还是从时间上来衡量,代码都要尽可能地高效运行。所谓的 “高效”不仅是指在极限情况下的渐近效率 ( asymptotic efficiency,大O记法),同时也包括实际运行的效率。也就是说,在计算O时间时,你可以忽略某个常量因子,但在实际环境中,该常量因子可能有很大影响。简洁:代码能写成10行就不要写成100行。这样开发人员才能尽快写好代码。 易读:要要确保其他开发人员能读懂你的代 码,并弄清楚来龙去脉。易读读的代码会有适 当注释,实现思路也简单易懂。这就意味 着,那些包含诸多位操作的花俏的代码不见 得就是“好”代码。 可维护:在产品生命周期内,代码经过适当 修改就能应对需求的变化。此外,无论对于 原开发人员还是其他开发人员,代码都应该 易于维护。 力求实现上述特性必须找到一个平衡点。比如,有些情况下,我们往往要牺牲一定的效率好让代码更易维护,有时则要反其道行之。 在面试中,写代码时应该好好考虑这些要素。下文就前面的清单给出更具体的描述。