PHP程序员面试算法宝典
上QQ阅读APP看书,第一时间看更新

前言

计算机技术博大精深,日新月异,Hadoop、GPU计算、移动互联网、模式匹配、图像识别、神经网络、蚁群算法、大数据、机器学习、人工智能、深度学习等新技术让人眼花缭乱,稍有迟疑,就会被时代所抛弃。于是,很多IT从业者就开始困惑了,不知道从何学起,到底什么才是计算机技术的基石。其实,究其本质还是最基础的数据结构与算法知识:Hash、动态规划、分治、排序、查找等,所以无论是世界级的大型IT企业还是小公司,在面试求职者时,都会考察这些最基础的知识,无论研究方向是什么,这些基础知识都是必须熟练掌握的。

本书正是从这些基础知识点出发,讲解了求职过程中常见的数据结构与算法的真题,从而让求职者能轻松应对算法类的笔试面试题目。本书在写作风格上推陈出新,对于算法的讲解,不仅使用图文并茂的方式,而且还辅以示例讲解,目的就是使讲解更容易读懂。为了能够写出精品书籍,我们对每一个技术问题,都反复推敲,与算法精英一起反复论证可行性;对文字,我们咬文嚼字,字斟句酌,所有这些付出,只为让读者能够在读完本书后有所收获。

虽然市面上同类型书籍很多,但是,我们相信,我们能够写出更适合读者的高质量精品书籍。为了能够在有限的篇幅里面尽可能地展现“干货”,我们题目的选择上也下了很多工夫。首先,通过搜集近三年以来几乎所有IT企业的面试笔试算法真题,包括已经出版的其他著作、技术博客、在线编码平台、刷题网站等,保证所选样本足够全面。其次,在选择题目时,尽可能不选择那种一眼就能知道结果的简单题,也没有选择那种怪题、偏题和难题。我们的选题原则是难度适中或者看上去简单但实际暗藏陷阱。我们力求所选出来的算法真题能够最大限度地帮助读者。在真题的解析上,采用层层递进的写法,先易后难,将问题抽丝剥茧,使得读者能够跟随作者的思路,一步步找到问题的最优解。

写作的过程是一个自我提高、自我认识的过程,很多知识,只有深入理解与剖析后,才能领悟其中的精髓,掌握其中的技巧,程序员求职算法也不例外。本书不仅具备了其他书籍分析透彻、代码清晰合理的优点,还具备以下几个方面的优势。

第一,本书分多种语言版本实现:C/C++、Java、C#、Python、PHP、Javascript、Kotlin、Go等,不管读者侧重于哪一种语言,都能够从书中找到适合自己的内容。书中如果没有特别强调,则代码实现均默认使用PHP语言。

第二,每个题目除了有循序渐进的分析以外,还对方法进行了详细阐述,针对不同方法的时间复杂度与空间复杂度都进行了详细的分析。除此之外,为了更具说服力,每一种方法几乎都对应有示例讲解辅以说明。

第三,代码较为规范,完全参照华为编程规范、Google编程规范和编码规范。程序员要想在团队中大展拳脚,就离不开合作,而合作的基础就是共同遵循统一的编码规范。不仅如此,规范化的编码往往有助于读者理解代码。

第四,除了对题目的讲解,还有部分触类旁通的题目供读者练习。本书不可能将所有的程序员求职类的数据结构与算法类题目囊括,但是会尽可能地将一些常见的求职类算法题、具有代表性的算法题重点讲解,将其他一些题目以练习题的形式展现在读者面前,以供读者思考与学习。

本书中引用的部分内容来源于网络上的无名英雄,无法追踪到最原始的出处,在此对这些幕后英雄致以最崇高的敬意。没有学不好的学生,只有教不好的老师,我们希望无论是什么层次的学生,都能毫无障碍地看懂书中所讲内容。如果读者存在求职困惑或是对书中的内容存在异议,都可以通过yuancoder@foxmail.com或330168885@qq.com联系作者。

猿媛之家