前言
计算机技术博大精深,日新月异,Hadoop、GPU计算、移动互联网、模式匹配、图像识别、神经网络、蚁群算法、大数据、机器学习、人工智能、深度学习等新技术让人眼花缭乱,稍有懈怠,就会被时代所抛弃。于是,很多IT从业者就开始困惑了,不知道从何学起,到底什么才是计算机技术的基石。其实,其本质还是最基础的数据结构与算法知识:Hash、动态规划、分治、排序、查找等,所以,无论是世界级的大型企业还是几个人的小公司,在面试求职者的时候,往往会考察这些最基础的知识,无论你的研究方向是什么,这些基础知识还是应该熟练掌握的。
本书正是从这些基础知识点出发,讲解了求职过程中常见的数据结构与算法的真题,从而让求职者能轻松应付算法类的笔试面试题目。在写作风格上,推陈出新,对于算法的讲解,不仅使用图文并茂的方式,而且还辅以示例的讲解,目的就是为了使读者更容易理解。为了能够写出精品书籍,我们对每一个技术问题,都反复推敲,与算法精英一起反复论证可行性;对文字,我们咬文嚼字,字斟句酌,所有这些付出,只为让读者能够在读完本书后有所收获。
虽然市面上同类型书籍很多,也都写的不错,但是,我们相信,我们能够写出更适合读者需求的高质量精品书籍。为了能够在有限的篇幅里面尽可能地展现“干货”,我们在题目的选择上也下了很多功夫:首先,通过搜集近3年以来典型IT企业的面试笔试算法真题,包括已经出版的其他著作、技术博客、在线编码平台、刷题网站等,保证所选样本足够大。其次,选择题目的时候,尽可能不选择那种一眼就能知道结果的简单题,也没有选择那种怪题、偏题和很难的题,选题原则是难度适中或者看上去简单但实际容易出错的题目。通过我们的努力,力求所选出来的算法真题能够最大限度地帮助读者。在真题的解析上,采用层层递进的写法,先易后难,层层深入,将问题抽丝剥茧,使得读者能够跟随我们的思路,一步步找到问题的最优解。
写作的过程是一个自我提高、自我认识的过程,很多知识,只有深入理解与剖析后,才能领悟其中的精髓,掌握其中的技巧,程序员求职算法也不例外。本书不仅具备了其他书籍分析透彻,代码清晰合理的优点,还具备以下几个方面的优势:
第一,算法书籍分多种语言版本实现:C/C++、Java、C#、Python、PHP、Javascript、Kotlin、Go等,这样,不管读者侧重于哪一种语言,都能够有适合自己的书。本书中如果没有特别强调,代码实现均默认使用Javascript语言。
第二,每个题目除了循序渐进的分析以外,还对方法进行了详细阐述,针对不同方法的时间复杂度与空间复杂度,都进行了详细地分析,除此之外,为了更具说服力,每一种方法几乎都对应有示例(代码可以从https://github.com/pwstrick/FEG-Code下载)讲解辅以说明。
第三,除了对题目的讲解,还有部分触类旁通的题目供读者练习。本书不可能将所有的程序员求职类的数据结构与算法类题目囊括,但是,本书会尽可能地将一些常见的求职类算法题、具有代表性的算法题重点讲解,将其他一些题目以练习题的形式展现在读者面前,以供读者思考与学习。
本书中有部分思想来源于网络上的无名英雄,无法追踪到最原始的出处,在此对这些幕后英雄致以最崇高的敬意。没有学不好的学生,只有教不好的老师,我们希望无论是什么层次的学生,都能毫无障碍地看懂书中所讲内容。如果读者存在求职困惑或是对本书中的内容存在异议,都可以通过yuancoder@foxmail.com联系作者。
猿媛之家