剑指Offer:经典版+强化版(共2册)
链接:https://pan.baidu.com/s/1amrCinwLWVedxH0eok0zKg?pwd=jbwt
提取码:jbwt

编辑推荐
经典版
√ 以面试官视角拆解考题
结合作者在多家名企的经验,从面试官视角剖析考题构思、现场心理、题解优劣与面试心得。
√ 80余道精选编程面试题
从谷歌、微软等知名IT企业的海量面试题中精心筛选出80余道精华题目,提供多角度解题辅导。由于本书流传甚广,这些题已被大量企业真实采用,参考价值颇高。
√ 高标准的系统解题方法
系统总结如何在面试时写出高质量代码,如何优化代码效率,以及分析、解决难题的常用思路和方法。
√ 真实现场体验与生涯感悟
Autodesk→微软中国→思科→美国微软总部,作者一路跳槽一路“面”,既亲历备考和被考,更做过数次考官,又常年从事一线编程工作,大量面试与实践经验,是本书品质后盾。
强化版
• 以面试者|面试官双向视角剖析考点与解题思路
• 精选 119 道国内外名企高频面试题并深度拓展
• 针对面试难关,打通算法与数据结构突击捷径
• 读者可在力扣本书专区实时在线练习全部试题
内容简介
经典版:剖析了80个典型的编程面试题,系统整理基础知识、代码质量、解题思路、优化效率和综合能力这5个面试要点。全书共分7章,主要包括面试的流程,讨论面试每一环节需要注意的问题;面试需要的基础知识,从编程语言、数据结构及算法三方面总结程序员面试知识点;高质量的代码,讨论影响代码质量的3个要素(规范性、完整性和鲁棒性),强调高质量代码除完成基本功能外,还能考虑特殊情况并对非法输入进行合理处理;解决面试题的思路,总结编程面试中解决难题的有效思考模式,如在面试中遇到复杂难题,应聘者可利用画图、举例和分解这3种方法将其化繁为简,先形成清晰思路,再动手编程;优化时间和空间效率,读者将学会优化时间效率及用空间换时间的常用算法,从而在面试中找到优解;面试中的各项能力,总结应聘者如何充分表现学习和沟通能力,并通过具体面试题讨论如何培养知识迁移、抽象建模和发散思维能力;两个面试案例,总结哪些面试举动是不良行为,而哪些表现又是面试官所期待的行为。
强化版:全面、系统地总结了在准备程序员面试过程中必备的数据结构与算法。本书首先详细讨论整数、数组、链表、字符串、哈希表、栈、队列、二叉树、堆和前缀树等常用的数据结构,然后深入讨论二分查找、排序、回溯法、动态规划和图搜索等算法。除了介绍相应的基础知识,每章还通过大量的高频面试题系统地总结了各种数据结构与算法的应用场景及解题技巧。
本书适合所有正在准备面试的程序员阅读。无论是计算机相关专业的应届毕业生还是初入职场的程序员,本书总结的数据结构和算法的基础知识及解题经验都不仅可以帮助他们提高准备面试的效率,还可以增加他们通过面试的成功率。
作者简介
何海涛目前是美国微软总部的软件工程师,先后在Autodesk、思科、微软等跨国企业任职,著有《剑指Offer——名企面试官精讲典型编程题》、《Coding Interviews: Questions, Analysis and Solutions》(《剑指offer》一书的英文版)等书。多年来从事软件开发工作,对软件设计、开发、调试等均有较深的功底,对 C/C++/C#以及.NET等语言及平台都较为熟悉,对图形图像、CAD、设计模式、项目管理等领域均有专业经验。
目录
经典版
第1章 面试的流程 1
1.1 面试官谈面试 1
1.2 面试的3种形式 2
1.2.1 电话面试 2
1.2.2 共享桌面远程面试 3
1.2.3 现场面试 4
1.3 面试的3个环节 5
1.3.1 行为面试环节 5
1.3.2 技术面试环节 10
1.3.3 应聘者提问环节 17
1.4 本章小结 18
第2章 面试需要的基础知识 20
2.1 面试官谈基础知识 20
2.2 编程语言 21
2.2.1 C++ 22
2.2.2 C# 27
2.3 数据结构 36
2.3.1 数组 36
2.3.2 字符串 47
2.3.3 链表 55
2.3.4 树 59
2.3.5 栈和队列 67
2.4 算法和数据操作 71
2.4.1 递归和循环 72
2.4.2 查找和排序 78
2.4.3 回溯法 87
2.4.4 动态规划与贪婪算法 93
2.4.5 位运算 98
2.5 本章小结 103
第3章 高质量的代码 104
3.1 面试官谈代码质量 104
3.2 代码的规范性 105
3.3 代码的完整性 106
3.4 代码的鲁棒性 132
3.5 本章小结 151
第4章 解决面试题的思路 153
4.1 面试官谈面试思路 153
4.2 画图让抽象问题形象化 154
4.3 举例让抽象问题具体化 163
4.4 分解让复杂问题简单化 184
4.5 本章小结 199
第5章 优化时间和空间效率 201
5.1 面试官谈效率 201
5.2 时间效率 202
5.3 时间效率与空间效率的平衡 237
5.4 本章小结 254
第6章 面试中的各项能力 256
6.1 面试官谈能力 256
6.2 沟通能力和学习能力 257
6.3 知识迁移能力 260
6.4 抽象建模能力 293
6.5 发散思维能力 305
6.6 本章小结 313
第7章 两个面试案例 315
7.1 案例一:(面试题67)把字符串转换成整数 316
7.2 案例二:(面试题68)树中两个节点的最低公共祖先 324
强化版
第1章 整数 1
1.1 整数的基础知识 1
1.2 二进制 4
1.3 本章小结 13
第2章 数组 14
2.1 数组的基础知识 14
2.2 双指针 15
2.3 累加数组数字求子数组之和 22
2.4 本章小结 28
第3章 字符串 30
3.1 字符串的基础知识 30
3.2 双指针 31
3.3 回文字符串 41
3.4 本章小结 45
第4章 链表 46
4.1 链表的基础知识 46
4.2 哨兵节点 47
4.3 双指针 50
4.4 反转链表 58
4.5 双向链表和循环链表 66
4.6 本章小结 71
第5章 哈希表 73
5.1 哈希表的基础知识 73
5.2 哈希表的设计 74
5.3 哈希表的应用 82
5.4 本章小结 91
第6章 栈 92
6.1 栈的基础知识 92
6.2 栈的应用 93
6.3 本章小结 108
第7章 队列 109
7.1 队列的基础知识 109
7.2 队列的应用 110
7.3 二叉树的广度优先搜索 114
7.4 本章小结 125
第8章 树 126
8.1 树的基础知识 126
8.2 二叉树的深度优先搜索 127
8.3 二叉搜索树 141
8.4 TreeSet和TreeMap的应用 153
8.5 本章小结 160
第9章 堆 161
9.1 堆的基础知识 161
9.2 堆的应用 165
9.3 本章小结 172
第10章 前缀树 174
10.1 前缀树的基础知识 174
10.2 前缀树的应用 179
10.3 本章小结 191
第11章 二分查找 192
11.1 二分查找的基础知识 192
11.2 在排序数组中二分查找 193
11.3 在数值范围内二分查找 201
11.4 本章小结 205
第12章 排序 206
12.1 排序的基础知识 206
12.2 计数排序 208
12.3 快速排序 211
12.4 归并排序 215
12.5 本章小结 222
第13章 回溯法 224
13.1 回溯法的基础知识 224
13.2 集合的组合、排列 226
13.3 回溯法解决其他类型问题 235
13.4 本章小结 239
第14章 动态规划 241
14.1 动态规划的基础知识 241
14.2 单序列问题 248
14.3 双序列问题 266
14.4 矩阵路径问题 281
14.5 背包问题 293
14.6 本章小结 303
第15章 图 305
15.1 图的基础知识 305
15.2 图的搜索 307
15.3 拓扑排序 333
15.4 并查集 342
15.5 本章小结 354
查看全部↓
前言/序言
经典版序言
时间总是在不经意间流逝,我们也在人生的旅途上不断前行,转眼间我在微软的美国总部工作近两年了。生活总给我们带来新的挑战,同时也有新的惊喜。这两年在陌生的国度里用着不太流利的英语和各色人种交流,体验着世界的多元化。这两年也加过班、熬过夜,为了进展不顺的项目也焦头烂额过。在微软Office新产品发布那天我也自豪过,忍不住在朋友圈里和大家分享自己的喜悦和兴奋。2015年4月,我和素云又一次迎来了一个小生命。之后的日子虽然辛苦,但每当看着呼呼、阳阳两兄弟天真灿烂的笑容时,我的心里只有无限的幸福。
西雅图是一个IT氛围很浓的地方,这里是微软和亚马逊的总部所在地,Google、Facebook等很多知名公司都在这里有研发中心。一群程序员聚在一起,总会谈到谁去这家公司面试了,谁拿到了那家公司的Offer。这让我有机会从多个角度去理解编程面试,也更加深入地思考怎样刷题才会更加有效。我的这些理解、思考都融入《剑指Offer——名企面试官精讲典型编程面试题》这本书的第二版里。
这次再版在第一版的基础上增加了新的面试题,涵盖了新的知识点。第二版新增了2.4.3节和2.4.4节,分别讨论回溯法、动态规划和贪婪算法。正则表达式是编程面试时经常出现的内容,本次新增了两个正则表达式匹配的问题(详见面试题19和面试题20)。
这次新增的内容