市面上关于程序员面试的参考书也不少,但是我们认为这些书的关键问题在于它们大多是教你“怎么做”,但很少涉及“为什么这么做”。于是,读者往往会觉得书中的解法十分精妙,但是在面试的时候完全想不起来用哪种方法解决问题。其根本原因在于,这些参考书代替你做了最关键的一步:判断用什么方法解决当前的问题。 本书遵从大多数面试参考书的构成方式,结合实例,按照常见的数据结构、算法以及计算机基础知识进行章节划分,但是,本书着眼于如何进行“模式识别”,通过分析为什么这个问题被划分到这个章节,来教大家如何判断实际面试问题的类型,并且顺水推舟地得出解决问题的方法。每一章的“知识要点”介绍章节涉及的相关知识点,回顾通常出现在教材中的重点内容;“模式识别”给出一些实例,帮助大家总结解决相关问题的常见方法,并且通过分析问题中的关键信息,教授大家如何从题目中得到关于题型分类以及解题方法的蜘丝马迹。 本书收集的题目部分来自互联网上分享的面试经验、在线编程网站leetcode,以及面试参考资料Cracking the Coding Interview和Element of Programming Interview。如果你认真准备过面试,可能会对题目有似曾相识的感觉。但本书的关键不是教会你做一道题目,而是教会分析题目、解决题目的方法,从而学会解一类题目。具体的题目不是关键,从题目到方法的思维过程,是本书努力想传达的重点;最后,“工具箱”部分给出该章涉及的C++/Java类,它们的常见函数及使用方法,还提供一些标准库函数,以及相关参考资料或扩展阅读。 如果你有志于投身到滚滚的IT互联网浪潮中,无论你是一个学生,还是初级程序员,不论你以后是定位于架构师还是项目经理,你都需要一块敲门砖,那么这本书就是为你量身定做的。作为有着在国内外创业公司和一线公司经历的过来人,我们希望本书能给你职业生涯上添砖加瓦,帮助大家到达理想的彼岸。 最后,我们特别感谢Ruthia百忙之中抽空帮助设计封面。正如封面中锤子所象征的那样,每个人都需要付出持之以恒的努力才能获得成绩,在此与读者共勉。 由于水平有限,编写过程中难免产生疏漏。如果在阅读本书的过程中你有任何建议和问题,请联系我们:UltimateGuideToCodingInterview@gmail.com。