本书总结了解决面试难题的常用方法,而不仅仅只是解决一道道零散的题目。在仔细分析、解决了几十道典型的面试题之后,我发现其实是有一些通用的方法可以在面试的时候帮助我们解题的。举个例子,如果面试的时候遇到的题目很难,我们可以试图把-一个大的复杂的问题分解成若干个小的简单的子问题,然后递归地去解决这些子问题。再比如,我们可以用数组实现一个简单的哈希表解决-”系列与字符串相关的面试题。在详细分析了一道面试题之后,很多章节都会在“相关题目”中列举出同类型的面试题,并在“举--反三”中总结解决这一类型题目的方法和要点。
本书收集的面试题是都是各大公司的编程面试题,极具实战意义。包括谷歌、微软在内的知名IT企业在招聘的时候,都非常重视应聘者的编程能力,编程技术面试也是整个面试流程中最为重要的-一个环节。本书选取的题目都是被各大公司面试官反复采用的编程题。如果读者一开始觉得书中的有些题目比较难,那也正常,没有必要感到气馁,因为像谷歌、微软这样的大企业的面试本身就不简单。读者逐步掌握了书中总结的解题方法之后,编程能力和分析复杂问题的能力将会得到很大的提升,再去大公司面试将会轻松很多。
本书附带提供了50道编程题的完整的源代码,其中包含了每道题的测试用例。很多面试官在应聘者写完程序之后,都会要求应聘者自己想-一些测试用例来测试自己的代码,一些没有实际项目开发经验的应聘者不知道如何做单元测试。相信读者朋友在读完这本书之后就会知道如何从基本功能测试、边界值测试、性能测试等方面去设计测试用例,从而提高编写高质量代码的能力。
第1章介绍面试的流程。通常整个面试过程可以分为电话面试、共享桌面远程面试和现场面试3个阶段,每一轮面试又可以分为行为面试、技术面试和应聘者提问3个环节。本章详细讨论了面试中每- -环节需要注意的问题。其中第1.3.2 节深入讨论了技术面试中的5个要素,是全书的大纲,接下来的第2~6章逐-讨论每个要点。
1.1面试官谈面试
1.2面试的三种形式
1.2.1电话面试
1.2.2共享桌面远程面试
1.2.3现场面试
1.3面试的三个环节
1.3.1 行为面试环节
1.3.2技术面试环节
1.3.3 应聘者提问环节
第2章梳理应聘者接受技术面试时需要用到的基础知识。本章从编程语言、数据结构及算法三方面总结了程序员面试的知识点。
2.1面试官 谈基础知识
2.2编程语言.
2.2.2c
2.3数据结构 .
2.3.1数组.
2.3.2字符串.
2.3.3链表.
2.3.4树
2.3.5栈和队列
2.4算法和数据操作 .
2.4.1查找和排序.
2.4.2递归和循环.
2.4.3位
第3章讨论应聘者在面试时写出高质量代码的3个要点。通常面试官除了期待应聘者写出的代码能够完成基本的功能之外,还能应对特殊情况并对非法输入进行合理的处理。读完这一章,读者将学会如何从规范性、完整性和鲁棒性3个方面提高代码的质量。
3.1面试官 谈代码质量
3.2代码的规范性
3.3代码的完整性
3.4代码的鲁棒性.
第4章总结在编程面试中解决难题的常用思路。如果在面试过程中遇到复杂的难题,应聘者最好在写代码之前形成清晰的思路。读者在读完这一章之后将学会如何用画图、举例和分解复杂问题3种思路来解决问题。
4.1面试官谈面试思路
4.2画图让抽象问题形象化
4.3举例让抽象问题具体化
4.4分解让复杂问题简单化
第5章介绍如何优化代码的时间效率和空间效率。如果-一个问题有多种解法,面试官总是期待应聘者能找到最优的解法。读完这一章,读者将学会优化时间效率及空间换时间的常用算法。
5.1面试官谈效率
5.2时间效率
5.3时间效率与空间效率的平衡.
第6章总结面试中的各项能力。面试官在面试过程中会一直关注应聘者的学习能力和沟通能力。除此之外,有些面试官还喜欢考查应聘者的知识迁移能力、抽象建模能力和发散思维能力。读完这一章,读者将学会如何培养和运用这些能力。
6.1 面试官谈能力,
6.2沟通 能力和学习能力
6.3知识迁移能力.
6.4抽象建模能力 .
6.5发散思维能力
第7章是两个面试的案例。在这两个案例中,我们将看到应聘者在面试过程中的哪些举动是不好的行为,而哪些表现又是面试官所期待的行为。衷心地希望应聘者能在面试时少犯甚至不犯错误,完美地表现出自己的综合素质,最终拿到心仪的Offer.
7.1案例一: (面试题49)把字符串转换成整数
7.2案例二: (面试题50)树中两个结点的最低公共祖先
因文资料章节过多就不给大家一一展示了,需要获取这份PDF的小伙伴可以转发+关注后私信(学习)免费获取!
收藏
举报
举报文章问题
取消确认