世界知名IT企业程序员技术面试经典问题解析;
涵盖大数据、云计算、移动开发热点领域;
技术实力和软实力同步提升;
轻松有趣的学习方式,助力程序员实现职业梦想
本书特色:
1)本书内容来源于作者近20年在国际知名IT企业工作及做技术面试的经验和心得,总结了知名IT企业进行程序员面试时关注、常出现的面试问题,并以Q&A的形式进行深入浅出的解析。2)本书Q&A的内容既涵盖编程语言、数据结构、算法与优化、网络、操作系统、数据库等基础知识,又涉及当前热门的大数据、云计算、移动开发等方向的技术面试问题,全面、系统地帮助读者梳理各领域的知识重点。
3)本书在分析问题时常常给出多个解决方案或思路,这样做的目的是让读者学会从不同的角度考虑解决之道,让读者重温在学生时代学习时漏掉的重点,在强化基础知识的同时认识到工业界的解决方案与学术界往往大相径庭,但却又一脉相承的关系。
4)从程序员职业发展的角度,本书不仅关注程序员面试所需的技术知识,还对程序员职业发展中需要的软技能(包括演讲、英文、学习方法、沟通技能等)给出了非常实用和有益建议,帮助读者不断自我提升。
5)对于一些文字讲授较难理解的Q&A,可通过问题边的二维码观看作者的讲解视频;每章后还附有该章内容相关的在线学习课程,读者可根据需要进一步扫描二维码免费学习。
6)本书语言轻松幽默,在深入浅出地介绍技术要点的同时,穿插了IT发展史上知名公司/名人的故事,从中读者可以看到IT技术的发展脉络,引人思考。
本书作者基于近20年在国际知名IT企业工作的经验,以Q&A的形式总结了知名IT企业在程序员技术面试中*常出现的关键技术问题,并做了深入浅出的解析和点评。问题内容涵盖编程语言、数据结构与算法、网络、操作系统、数据库以及当前热门的大数据、云计算、移动开发等。除了技术问题,作者还对面试及程序员职业发展中的软实力培养给出了非常实用的建议。值得指出的是,本书中很多问题答案并不独一,特别是设计类的问题,几乎没有标准的、统一的正确答案,读者可通过这些问题训练自己的思维逻辑、思考方法、解决问题的方式等。
本书适合作为程序员准备面试的参考书,也可作为高校计算机及相关专业学生学习相关课程的参考。书中穿插了很多有趣的IT发展历程中的名人/公司轶事,读者也可从中了解IT技术发展的历程,引发对技术发展的思考。
前 言
致 谢
第一篇 基 础 篇
第1章 数据结构 2
1.1 链表 2
1.2 数组 9
1.3 字符串 11
1.4 比特与字节 14
1.5 堆栈及其他 17
第2章 算法与优化 22
2.1 排序 22
2.2 算法复杂性 26
第3章 操作系统 29
3.1 文件系统 29
3.2 多线程 31
3.3 网络 33
3.4 编译与内核 40
第4章 面向对象 57
4.1 C++ 58
4.2 软件设计模式 79
4.3 STL 86
第二篇 工 程 篇
第5章 五花八门的语言 94
5.1 Perl 94
5.2 PHP 109
5.3 Java 118
第6章 数据库 138
6.1 基础知识 139
6.2 数据库设计与优化 148
第7章 网络 160
7.1 HTTP与Web Server 160
7.2 VPN 169
第8章 面试题集锦 172
第三篇 潮 流 篇
第9章 大数据 196
9.1 大数据基本概念 196
9.2 大数据流派 199
9.3 大数据实战 215
第10章 云计算 219
10.1 基本概念 219
10.2 云计算与大数据 229
10.3 软件定义网络 231
10.4 软件定义存储 236
10.5 软件定义的数据中心 242
第11章 Android开发 253
第四篇 软 技 能 篇
第12章 面试基础 276
12.1 何为软技能 276
12.2 怎样提高软技能 276
12.3 演讲与报告也是一种能力 278
第13章 过HR这一关 280
13.1 HR关心什么 280
13.2 HR的问题表 281
第14章 offer是起点而不是终点 282
14.1 如何拿到好的offer 282
14.2 程序员的职业生涯 283
14.3 程序员的英文修养 284
14.4 成为卓有成效的沟通者 284
在这本书里,作者用经典的面试问题解析来回顾大学专业课程中的知识,用诙谐俏皮的语言穿插了IT发展史上一段段令人津津乐道的故事,没有枯燥乏味和不知所用的茫然,带给学生的是一段从学习Hello World到走向Hello Offer的奇妙旅程。无疑,它能轻松点燃学生的专业兴趣与学习动力。
——朱敏(四川大学计算机学院副院长,教授)
近十几年来,程序设计语言为适应多核和分布式系统的发展在向上抽象(abstract up)和向硬件层抽象(abstract down)两个方向变迁。在这两个方向上,从底层的链表、多线程到顶层的大数据、云计算问题,甚至职业发展的软技能,本书都提供了基于实战归纳、层层递进、滚雪球式的Q&A分析,使读者始终可以找到学习区,并根据书中的提示推演出自己的解法。本书的问题脱胎于知名IT企业的面试和笔试环节,在分析中特别强调学术和工程解决之道的不同,学术代码有时候简单、优雅,但往往带来资源的浪费,无法在工程中很好地应用。从本书中可以看到工程代码如何通过tradeoff思维达到高效的目的。这本书另一个值得称道之处是抓住了学习之道——在解决问题中活学活用基础知识,用“打怪升级”的方式将知识转化为能力,而能力才是面试官*为关注的。我信仰知行合一,学习亦是如此,practice doesn’t make perfect,perfect practice makes perfect。愿你能从本书中找到适合你的面试之道。
——何万青(360云公司CTO,原英特尔高级架构师)