《程序员面试攻略 原书第3版》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:(美)蒙干著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2014
  • ISBN:9787111444343
  • 页数:258 页
图书介绍:Amazon超级畅销书,好评如潮。影响全球数百万程序员。三位专家级IT工程师将自己在技术类面试中的成功经验毫无保留分享出来。书中汇总了大量顶尖计算机公司技术类面试中的常见试题,并详细分析了各类习题的解答思路,帮助求职者在面试中应付自如。本书深入阐释了程序员在求职过程所面临的求职沟通和程序设计技能两个方面的问题。在程序设计技能方面,本书介绍了作为一名程序员必须具备的一些基本功,包括链表、树和图、数组和字符串、递归、排序、并发、面向对象编程、设计模式、数据库、图形学与位操作等。强调沟通方法是本书的亮点,本书包括如何编写一份重点突出的个人简历,如何与猎头公司和人力资源代表打交道,在面试时如何与面试官进行沟通等内容。本书中的面试题除了有详细解析和答案外,还对相关知识点进行了扩展说明。通过对丰富的面试题目应用循序渐进的解答方法来模拟面试过程,以强化学到的技能,真正做到由点成线,举一反三,对读者从求职就业到提升计算机专业知识都有显著帮助。

第0章 引言 1

第1章 求职之前 4

1.1 了解你自己 4

1.2 了解市场 6

1.2.1 基本的市场信息 6

1.2.2 外包怎么样 7

1.3 培养市场需要的技能 8

1.4 把事情做好 8

1.5 管理网上个人资料 9

1.6 本章小结 10

第2章 求职过程 11

2.1 寻找公司并进行联系 11

2.1.1 寻找公司 11

2.1.2 获得推荐 12

2.1.3 与猎头打交道 12

2.1.4 直接与公司联系 13

2.1.5 招聘会 13

2.2 面试过程 14

2.2.1 筛选面试 14

2.2.2 现场面试 14

2.2.3 衣着 15

2.3 招聘人员的角色 15

2.4 工作要约和协商 16

2.4.1 应对招聘人员的压力 16

2.4.2 薪资协商 17

2.4.3 接受要约与拒绝要约 18

2.5 本章小结 18

第3章 编程问题的解答思路 19

3.1 面试过程 19

3.1.1 面试场景 19

3.1.2 面试问题 19

3.1.3 使用哪种编程语言 20

3.1.4 互动是关键 20

3.2 解决问题 21

3.2.1 基本步骤 21

3.2.2 当你被卡住时 23

3.3 分析解决方案 24

3.3.1 大O分析法实战 24

3.3.2 大O分析法为何有效 25

3.3.3 最好情况、平均情况和最坏情况 26

3.3.4 优化与大O分析法 26

3.3.5 如何进行大O分析法 27

3.3.6 哪个算法更好 27

3.3.7 内存占用分析 28

3.4 本章小结 28

第4章 链表 30

4.1 为什么是链表 30

4.2 链表的种类 30

4.2.1 单链表 31

4.2.2 双向链表 32

4.2.3 循环链表 33

4.3 基本链表操作 33

4.3.1 追踪头元素 33

4.3.2 遍历一个链表 34

4.3.3 插入和删除元素 35

4.4 链表问题 36

4.4.1 栈的实现 37

4.4.2 维护链表尾指针 41

4.4.3 removeHead中的bug 46

4.4.4 链表中的倒数第m个元素 47

4.4.5 链表展平 50

4.4.6 取消链表展平 53

4.4.7 Null或循环 55

4.5 本章小结 57

第5章 树和图 58

5.1 树 58

5.1.1 二叉树 60

5.1.2 二叉搜索树 61

5.1.3 堆 63

5.1.4 常见搜索 63

5.1.5 遍历 64

5.2 图 64

5.3 树与图的问题 65

5.3.1 树的高 65

5.3.2 前序遍历 66

5.3.3 非递归前序遍历 67

5.3.4 最近共同祖先 69

5.3.5 二叉树转堆 71

5.3.6 非平衡二叉搜索树 73

5.3.7 凯文·培根的六度空间 74

5.4 本章小结 78

第6章 数组和字符串 79

6.1 数组 79

6.1.1 C和C++ 80

6.1.2 Java 81

6.1.3 C 81

6.1.4 JavaScript 81

6.2 字符串 82

6.2.1 C 83

6.2.2 C++ 83

6.2.3 Java 83

6.2.4 C 84

6.2.5 Javascript 84

6.3 数组和字符串问题 85

6.3.1 找到第一个不重复的字符 85

6.3.2 删除指定的字符 88

6.3.3 反转单词 90

6.3.4 整数/字符串转换 94

6.4 本章小结 99

第7章 递归 100

7.1 理解递归 100

7.2 递归问题 103

7.2.1 二分搜索 103

7.2.2 字符串的全排列 105

7.2.3 字符串的全组合 108

7.2.4 电话按键单词 110

7.3 本章小结 115

第8章 排序 116

8.1 排序算法 116

8.1.1 选择排序 117

8.1.2 插入排序 118

8.1.3 快速排序 119

8.1.4 归并排序 120

8.2 排序问题 122

8.2.1 最好的排序算法 122

8.2.2 稳定的选择排序 125

8.2.3 多键排序 127

8.2.4 使一个排序稳定 128

8.2.5 最优化快速排序 129

8.2.6 煎饼排序 132

8.3 本章小结 134

第9章 并发 135

9.1 线程的基本概念 135

9.1.1 线程 135

9.1.2 系统线程与用户线程 136

9.1.3 监视器与信号量 136

9.1.4 死锁 137

9.1.5 线程示例 137

9.2 并发问题 140

9.2.1 忙等待 140

9.2.2 生产者/消费者 142

9.3 哲学家就餐 144

9.4 本章小结 147

第10章 面向对象编程 148

10.1 基础知识 148

10.1.1 类与对象 148

10.1.2 继承与多态 149

10.2 构造函数与析构函数 150

10.3 面向对象编程问题 151

10.3.1 接口与抽象类 151

10.3.2 虚方法 152

10.3.3 多重继承 154

10.4 本章小结 155

第11章 设计模式 156

11.1 什么是设计模式 156

11.1.1 为什么使用设计模式 156

11.1.2 面试中的设计模式 157

11.2 常见的设计模式 157

11.2.1 创建型模式 157

11.2.2 行为型模式 160

11.2.3 结构型模式 160

11.3 设计模式问题 161

11.3.1 实现单例模式 161

11.3.2 装饰模式与继承 163

11.3.3 高效的观察者更新 164

11.4 本章小结 164

第12章 数据库 165

12.1 数据库基础 165

12.1.1 关系数据库 165

12.1.2 SQL 166

12.1.3 数据库事务 169

12.2 数据库问题 170

12.2.1 简单SQL 170

12.2.2 公司和员工数据库 171

12.2.3 不使用汇总返回最大值 173

12.2.4 三值逻辑 174

12.3 本章小结 175

第13章 图形学和位操作 176

13.1 图形学 176

13.2 位操作 177

13.2.1 二进制的补码表示 177

13.2.2 位操作 178

13.2.3 利用移位进行优化 179

13.3 图形学问题 179

13.3.1 八分之一圆 179

13.3.2 矩形重叠 181

13.4 位处理问题 184

13.4.1 大端序或小端序 184

13.4.2 1的个数 186

13.5 本章小结 189

第14章 计数、测量和排序难题 190

14.1 处理难题 190

14.1.1 解决正确的问题 191

14.1.2 不要被吓倒 192

14.1.3 当心简单的问题 192

14.1.4 估算问题 193

14.2 智力难题 193

14.2.1 统计打开的锁 193

14.2.2 三个开关 195

14.2.3 过桥 196

14.2.4 较重的弹珠 199

14.2.5 美国的加油站数量 202

14.3 本章小结 203

第15章 图形和空间方面的难题 204

15.1 先画下来 204

15.2 图形和空间问题 205

15.2.1 船和码头 205

15.2.2 数立方体 207

15.2.3 狐狸与鸭子 210

15.2.4 燃烧导火索 212

15.2.5 躲避火车 213

15.3 本章小结 214

第16章 知识问题 215

16.1 准备 215

16.2 问题 216

16.2.1 C++与Java 217

16.2.2 友元类 217

16.2.3 参数传递 218

16.2.4 宏与内联函数 219

16.2.5 继承 220

16.2.6 垃圾收集 221

16.2.7 32位与64位应用程序 222

16.2.8 网络性能 223

16.2.9 网络应用程序安全 223

16.2.10 加密 225

16.2.11 散列表与二叉搜索树 226

16.3 本章小结 226

第17章 非技术问题 227

17.1 为什么要问非技术问题 227

17.2 问题 228

17.2.1 你想从事哪方面的工作 228

17.2.2 你最喜欢哪一种编程语言 229

17.2.3 你的工作方式是怎样的 229

17.2.4 请谈一谈你的工作经历 230

17.2.5 你的职业目标是什么 230

17.2.6 你为什么要换工作 230

17.2.7 你希望拿多少报酬 231

17.2.8 你以前的薪酬是多少 233

17.2.9 我们为什么要雇你 233

17.2.10 你为什么想加入这家公司 234

17.2.11 你有什么问题想问我吗 234

17.3 本章小结 234

附录A 如何编写简历 235

结束语 255