当前位置:首页 > 工业技术
程序员面试笔记  C/C++、算法、数据结构篇
程序员面试笔记  C/C++、算法、数据结构篇

程序员面试笔记 C/C++、算法、数据结构篇PDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:杨峰,吴波,王楠编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2017
  • ISBN:9787111577584
  • 页数:408 页
图书介绍:本书为了满足广大应聘IT岗位的毕业生及社招人士复习所学知识,提高职场竞争力而编写。书中涵盖了C/C++程序员面试所需掌握的全部知识点,内容涉及C/C++基础,面向对象,字符串,数据结构,算法设计以及操作系统,数据库,计算机网络,综合能力测试题等面试中经常出现的知识点。与此同时,本书还包含了相当篇幅的面试技巧的介绍,并精心搜集了面试官常问的20个问题和外企常考的20道英文面试题,帮助求职者在面试过程中展现自身技术硬实力的同时更能充分发挥自身素质和个人魅力等软实力。 本书不是一部“习题集”,在每节中都对本节所涉及的知识点进行完整的梳理,这样可以使读者夯实专业基础,从根本上掌握程序员笔试面试的要领,也对未来的工作打下坚实的基础。本书采用笔记体裁方式编写,排版采用双色套印,核心内容用高亮标注,重点问题和知识点加批注注释,使读者阅读此书时易于上手,掌握关键信息,提高学习效率。为了更好地帮助读者备战笔试面试,本书将每一节中的知识点梳理以及一些比较有代表性的题目都进行了视频讲解,使读者学习起来更加灵活有趣,知识掌握的也更加牢固。本书中涵盖了各大公司近年来C/C++笔试面试真题,具有权威性,并在讲解上
《程序员面试笔记 C/C++、算法、数据结构篇》目录

第一部分 求职攻略技巧篇 1

第1章 凡事预则立,不预则废——求职准备 1

1.1摆脱就业“恐惧症” 1

1.2深度剖析自己,找准定位——切忌好高骛远,眼高手低 3

1.3制订一个详细的求职计划 6

1.4你应该知道的求职渠道 8

1.5认识招聘的流程 11

第2章 打造你的个人名片——简历技巧 13

2.1个人简历的书写要领及注意事项 13

2.2英文简历 15

2.3简历模板参考 16

第3章 下笔如有神的秘籍——笔试技巧 19

3.1笔试是场持久战 19

3.2夯实基础才是王道 20

3.3临阵磨枪,不快也光 22

3.4练习一点智力题 23

3.5重视英语笔试和专业词汇 24

3.6建立自己的笔试资料库 26

第4章 征服面试官的绝招——面试技巧 28

4.1面试着装的技巧 29

4.2不打无准备之仗——事先准备可能的提问 29

4.3切记!第一轮面试仍是“技术面” 30

4.4重视英语口语 31

4.5细节决定成败 32

第5章 鱼和熊掌如何取舍——Offer选择技巧 33

5.1选择Offer的大原则——方向第一,赚钱第二 33

5.2选择最适合自己的 34

5.3户口和收入哪个更重要 35

第6章 我的未来我做主——职业生涯规划 38

6.1Y型发展轨迹 38

6.2融入企业文化 40

6.3关于跳槽 41

第7章 运筹帷幄,决胜千里——面试官常问的20个问题 43

7.1谈谈你的家庭情况 43

7.2你有什么爱好和兴趣 43

7.3你自己的优点是什么 44

7.4你自己的缺点是什么 44

7.5谈谈最令你有成就感的一件事 44

7.6谈谈你最近的一次失败的经历 45

7.7你做过什么项目 45

7.8你有多少代码量 45

7.9请描述一下你对我们公司的理解 46

7.10谈一下最近5年内的职业规划 46

7.11你觉得工作之后最大的挑战是什么 46

7.12你对出差和外派的看法是什么 46

7.13你对加班的看法是什么 47

7.14你对跳槽的看法是什么 47

7.15你如何理解你应聘的职位 47

7.16工作中遇到压力你如何缓解 47

7.17如何看待程序员40岁以后编不动代码 48

7.18在工作中有没有经历过和他人意见不合的时候?你是怎么处理的 48

7.19你平时都采取什么样的学习方式 48

7.20你还有什么需要了解的问题 48

第8章 知己知彼、百战不殆——外企常考的20道英文面试题 49

8.1Please tell me something about yourself? 49

8.2What experience do you have in this field? 49

8.3What is your dream job? 49

8.4Why should we hire you? 50

8.5What are you looking for in a job? 50

8.6Are you willing to work overtime? 50

8.7What is your greatest weakness? 50

8.8What are your strengths? 51

8.9Why did you quit your last job? 51

8.10Why do you want to work in our company? 51

8.11What kind of sala are you looking for? 51

8.12What do co-workers say about you? 52

8.13What were some of your achievements at your last job? 52

8.14Tell me about your ability to work under pressure? 52

8.15What have you learned from mistakes on the job? 52

8.16Where do you see yourself in 5 years? 52

8.17How long would you expect to work for us if hired? 53

8.18What do you want to know about our company? 53

8.19Tell me about a suggestion you have made? 53

8.20What motivates you to do your best on the job? 53

第9章 IQ加油站——综合能力测试题 54

9.1数学类型的测试题 54

【面试题1】兔子赛跑 54

【面试题2】女装的成本 54

【面试题3】徘徊的小鸟飞了多少米 55

【面试题4】电视机的价值 55

【面试题5】被污染的药丸 55

【面试题6】取水问题 56

【面试题7】院墙外的相遇 56

【面试题8】牛吃草问题 58

9.2逻辑类型的测试题 59

【面试题1】哪位教授与会 59

【面试题2】谁是罪犯 59

【面试题3】王教授的生日 59

【面试题4】是谁闯的祸 60

【面试题5】会哪国语言 61

【面试题6】如何拿水果 62

【面试题7】海盗分赃 63

【面试题8】小镇上的四个朋友 64

【面试题9】说谎岛 65

第二部分 面试笔试技术篇 66

第10章 C++程序设计基础 66

10.1程序的编译和执行 66

10.1.1知识点梳理 66

10.1.2经典面试题解析 67

【面试题1】简述#include〈〉和#include””的区别 67

【面试题2】简述#与##在define中的作用 68

【面试题3】简述assert断言的概念 69

10.2变量 70

10.2.1知识点梳理 70

10.2.2经典面试题解析 70

【面试题1】简述i++和++i的区别 70

【面试题2】简述C++的类型转换操作符 71

【面试题3】简述静态全局变量的概念 73

10.3条件语句和循环语句 74

10.3.1知识点梳理 74

10.3.2经典面试题解析 75

【面试题1】不使用break的switch语句 75

【面试题2】for循环的三要素 77

【面试题3】巧打乘法口诀表 77

10.4宏定义和内联 80

10.4.1知识点梳理 80

10.4.2经典面试题解析 81

【面试题1】简述内联函数与宏定义的区别 81

【面试题2】宏定义的宏展开错误 82

【面试题3】内联函数的常识性问题 83

10.5sizeof的使用 84

10.5.1知识点梳理 84

10.5.2经典面试题解析 85

【面试题1】不能使用sizeof计算的表达式 85

【面试题2】sizeof计算结构体时的内存对齐问题 86

【面试题3】结构体嵌套时的sizeof运算 88

10.6内存分配 90

10.6.1知识点梳理 90

10.6.2经典面试题解析 91

【面试题1】malloc和free的常识性问题 91

【面试题2】返回一个64整数倍的内存地址 92

【面试题3】简述malloc/free与new/delete的区别 94

【面试题4】简述delete与delete[]的区别 94

10.7位运算 96

10.7.1知识点梳理 96

10.7.2经典面试题解析 97

【面试题1】不使用临时变量交换两个数 97

【面试题2】计算二进制数中1的个数 98

【面试题3】将二进制数倒数第M位的前N位取反 99

【面试题4】找出人群中唯一的单身狗 100

【面试题5】找出人群中三个单身狗中的任意一个 100

10.8main函数 102

10.8.1知识点梳理 102

10.8.2经典面试题解析 103

【面试题1】简述main函数执行前后都发生了什么 103

第11章 指针和引用 105

11.1指针及其应用 105

11.1.1知识点梳理 105

11.1.2经典面试题解析 105

【面试题1】被调函数中修改主调函数的变量 105

【面试题2】区分指针和数组 107

【面试题3】简述指针和句柄的区别 108

11.2指针常量与常量指针 109

11.2.1知识点梳理 109

11.2.2经典面试题解析 110

【面试题1】指针常量和常量指针的常见错误 110

【面试题2】指针常量用作函数参数 111

【面试题3】指针常量与字符串常量的冲突 113

11.3指针数组与数组指针 115

11.3.1知识点梳理 115

11.3.2经典面试题解析 116

【面试题1】简述数组指针与二维数组的区别 116

【面试题2】简述数组地址与数组首元素地址的区别 118

【面试题3】简述指针数组与指向指针的指针的区别 119

11.4指向指针的指针 121

11.4.1知识点梳理 121

11.4.2经典面试题解析 122

【面试题1】指针作为参数的常见错误 122

【面试题2】指向指针的指针与二维数组的区别 125

11.5函数指针 126

11.5.1知识点梳理 126

11.5.2经典面试题解析 127

【面试题1】通过函数指针实现四则运算 127

【面试题2】简化超长的函数指针类型 129

11.6this指针 130

11.6.1知识点梳理 130

11.6.2经典面试题解析 131

【面试题1】this指针常识性问题 131

【面试题2】链式访问对象成员 132

【面试题3】通过空指针调用类的成员函数 133

11.7空指针和野指针 134

11.7.1知识点梳理 134

11.7.2经典面试题解析 135

【面试题1】常见的野指针 135

【面试题2】在构造函数中释放对象本身 138

11.8引用 139

11.8.1知识点梳理 139

11.8.2经典面试题解析 139

【面试题1】简述指针与引用的区别 139

【面试题2】指针和引用的使用 140

【面试题3】使用常量初始化引用 142

第12章 内存管理 144

12.1堆内存与栈内存 144

12.1.1知识点梳理 144

12.1.2经典面试题解析 144

【面试题1】简述程序中的四大存储区 144

【面试题2】简述栈空间与堆空间的区别 145

【面试题3】简述递归程序潜在的风险 145

12.2内存泄漏 147

12.2.1知识点梳理 147

12.2.2经典面试题解析 147

【面试题I】预防内存泄漏的方法 147

【面试题2】找出不易察觉的内存泄漏 147

12.3内存越界 148

12.3.1知识点梳理 148

12.3.2经典面试题解析 149

【面试题1】访问vector元素时的越界问题 149

【面试题2】越界操作导致程序崩溃的原理 150

第13章 字符串 152

13.1C标准字符串函数 152

13.1.1知识点梳理 152

13.1.2经典面试题解析 154

【面试题1】字符串标准库函数的使用1 154

【面试题2】字符串标准库函数的使用2 155

【面试题3】不使用C/C++库函数,编程实现函数strcmp的功能 156

【面试题4】不使用C/C++库函数,编程实现函数strcpy的功能 157

【面试题5】不使用C/C++库函数,编程实现函数strstr的功能 158

【面试题6】简述memcpy与strcpy的区别 161

【面试题7】程序改错 161

13.2字符串算法设计题精讲 163

【面试题1】编程实现字符串中单词的翻转 164

【面试题2】编程实现字符串的循环右移 165

【面试题3】从字符串的指定位置删除指定长度的子串 168

【面试题4】找出0/1字符串中0和1连续出现的最大次数 170

【面试题5】编程查找两个字符串中的最大公共子串 172

【面试题6】在字符串中删除特定字符 174

【面试题7】字符串内容重排 177

第14章 面向对象 181

14.1面向对象的基本概念 181

14.1.1知识点梳理 181

14.1.2经典面试题解析 181

【面试题1】简述面向过程和面向对象的区别 181

【面试题2】简述面向对象的基本特征 182

【面试题3】简述面向对象的设计原则 183

14.2类的声明 184

14.2.1知识点梳理 184

14.2.2经典面试题解析 185

【面试题1】简述类和结构体的区别 185

【面试题2】类中的静态数据成员与静态成员函数 186

【面试题3】简述const修饰符在类中的用法 187

【面试题4】简述友元函数和友元类的概念 188

14.3构造函数和析构函数 189

14.3.1知识点梳理 189

14.3.2经典面试题解析 191

【面试题1】构造函数中的常见错误 191

【面试题2】构造函数和析构函数的执行顺序 194

【面试题3】实现一个最基本的String类 195

14.4函数重载 196

14.4.1知识点梳理 196

14.4.2经典面试题解析 197

【面试题1】C语言不支持函数重载的原因 197

【面试题2】识别真假函数重载 198

【面试题3】简述函数重载与函数覆盖的区别 199

【面试题4】容易忽视的名字隐藏问题 200

14.5运算符重载 201

14.5.1知识点梳理 201

14.5.2经典面试题解析 202

【面试题1】运算符重载的常识性问题 202

【面试题2】重载前自增运算符和后自增运算符 203

【面试题3】通过运算符重载实现复数加减 204

14.6继承 205

14.6.1知识点梳理 205

14.6.2经典面试题解析 207

【面试题1】简述继承与组合的区别 207

【面试题2】简述公有继承、私有继承和保护继承的区别 207

【面试题3】父类构造函数与子类构造函数的关系 209

14.7虚继承 210

14.7.1知识点梳理 210

14.7.2经典面试题解析 210

【面试题1】虚继承中的构造函数的调用 210

【面试题2】计算虚继承中对象占用的空间 212

14.8多态与虚函数 213

14.8.1知识点梳理 213

14.8.2经典面试题解析 214

【面试题1】虚函数的常识性问题 214

【面试题2】简述虚函数表的概念 215

【面试题3】通过虚函数实现各种图形计算的多态性 217

第15章 模板与泛型编程 219

15.1模板 219

15.1.1知识点梳理 219

15.1.2经典面试题解析 220

【面试题1】模板全特化和偏特化的使用方式 220

【面试题2】模板函数的重载问题 222

15.2顺序容器 223

15.2.1知识点梳理 223

15.2.2经典面试题解析 224

【面试题1】简述vector容器空间增长的原理 224

【面试题2】简述vector容器中size和capacity函数的用途 225

【面试题3】手工调整vector容器空间的方式 226

【面试题4】简述deque容器的插入删除原理 227

15.3容器适配器 228

15.3.1知识点梳理 228

15.3.2经典面试题解析 228

【面试题1】简述STL中容器适配器的概念 228

【面试题2】自定义优先队列的元素权重 229

15.4关联容器 230

15.4.1知识点梳理 230

15.4.2经典面试题解析 231

【面试题1】迭代器失效问题 231

【面试题2】set和map的配合使用 233

15.5智能指针 234

15.5.1知识点梳理 234

15.5.2经典面试题解析 235

【面试题1】简述环状引用问题及其解决方案 235

【面试题2】unique_ptr优于auto_ptr的原因 237

第16章 线性结构 238

16.1数组和顺序表 238

16.1.1知识点梳理 238

16.1.2经典面试题解析 239

【面试题1】顺序表的常识性问题 239

【面试题2】向顺序表中的第i个位置插入元素 240

【面试题3】编程实现顺序表的逆置 242

【面试题4】编程实现删除一个数组中的重复元素 243

【面试题5】数组元素两两之差绝对值的最小值 245

【面试题6】重新排列数组使得数组左边为奇数,右边为偶数 247

【面试题7】两个有序数组的交集 250

【面试题8】判断数组中的元素是否连续 253

【面试题9】判断数组中是否有重复元素 254

16.2单链表 255

16.2.1知识点梳理 255

16.2.2经典面试题解析 256

【面试题1】单链表的常识性问题 256

【面试题2】删除单链表中指针q指向的结点 257

【面试题3】编程实现在按值有序的单链表中插入结点 258

【面试题4】编写程序销毁一个单链表 260

【面试题5】编程将两个有序的单链表归并 260

【面试题6】编程实现单链表的逆置反序 262

【面试题7】找出单链表中倒数第k个元素 264

16.3循环链表 265

16.3.1知识点梳理 265

16.3.2经典面试题解析 267

【面试题1】约瑟夫环问题 267

【面试题2】如何判断一个链表是否是循环链表 269

16.4双向链表 271

16.4.1知识点梳理 271

16.4.2经典面试题解析 272

【面试题1】双向链表的常识性问题 272

16.5队列与栈 274

16.5.1知识点梳理 274

16.5.2经典面试题解析 276

【面试题1】队列堆栈的常识性问题 276

【面试题2】编程实现一个二/八进制的转换器 278

【面试题3】括号匹配问题 280

【面试题4】用两个栈实现一个队列 282

第17章 树结构 287

17.1树结构的特性 287

17.1.1知识点梳理 287

17.1.2经典面试题解析 288

【面试题1】树的常识性问题 288

17.2二叉树的基本特性 289

17.2.1知识点梳理 289

17.2.2经典面试题解析 291

【面试题1】二叉树的常识性问题 291

17.3二叉树的遍历 292

17.3.1知识点梳理 292

17.3.2经典面试题解析 293

【面试题1】编程实现二叉树的先序、中序、后序遍历 293

【面试题2】编程创建一棵二叉树 294

【面试题3】编程实现二叉树的按层次遍历 296

【面试题4】已知二叉树的先序和中序序列,求其后序序列和按层次遍历序列 297

17.4二叉树相关面试题 299

【面试题1】编程计算二叉树的深度 299

【面试题2】编程计算二叉树的叶子结点个数 301

【面试题3】编程计算二叉树中某结点的层数 302

17.5哈夫曼树和哈夫曼编码 304

17.5.1知识点梳理 304

17.5.2经典面试题解析 306

【面试题1】一棵哈夫曼树有4个叶子,则它的结点总数是多少 306

【面试题2】简述哈夫曼编码的实现和应用 306

17.6二叉排序树 307

17.6.1知识点梳理 307

17.6.2经典面试题解析 308

【面试题1】二叉排序树的常识性问题 308

【面试题2】最低公共祖先问题 309

第18章 图结构 311

18.1图结构的特性 311

18.1.1知识点梳理 311

18.1.2经典面试题解析 314

【面试题1】图结构特性的常识性问题 314

18.2图的遍历 316

18.2.1知识点梳理 316

18.2.2经典面试题解析 316

【面试题1】图遍历的常识性问题 316

【面试题2】图的深度优先遍历(DFS)和广度优先遍历(BFS) 318

第19章 排序 322

19.1直接插入排序 322

19.1.1知识点梳理 322

19.1.2经典面试题解析 323

【面试题1】编程实现直接插入排序 323

19.2冒泡排序 323

19.2.1知识点梳理 323

19.2.2经典面试题解析 324

【面试题1】编程实现冒泡排序 324

19.3简单选择排序 325

19.3.1知识点梳理 325

19.3.2经典面试题解析 326

【面试题1】编程实现简单选择排序 326

19.4希尔排序 327

19.4.1知识点梳理 327

19.4.2经典面试题解析 328

【面试题1】编程实现希尔排序 328

19.5快速排序 329

19.5.1知识点梳理 329

19.5.2经典面试题解析 330

【面试题1】编程实现快速排序 330

【面试题2】快速排序的性能分析 331

【面试题3】荷兰国旗问题 332

19.6堆排序 333

19.6.1知识点梳理 333

19.6.2经典面试题解析 337

【面试题1】编程实现堆排序 337

19.7各种排序算法的比较 338

【面试题1】简述各种排序算法的优劣及适用场景 338

第20章 查找算法 340

20.1折半查找 340

20.1.1知识点梳理 340

20.1.2经典面试题解析 340

【面试题1】使用折半查找法查找数组中的元素 340

【面试题2】从有序数组中找出某个数出现的次数 342

20.2TOP K问题 344

20.2.1知识点梳理 344

20.2.2经典面试题解析 345

【面试题1】搜索关键词的TOP K问题 345

第21章 经典算法面试题详解 348

21.1斐波那契数列的第n项 348

21.2寻找数组中的次大数 349

21.3将大于2的偶数分解成两个素数之和 351

21.4计算一年中的第几天 352

21.5相隔多少天 353

21.6渔夫捕鱼 355

21.7丢番图的墓志铭 357

21.8数的分组 358

21.9寻找丑数 360

21.10图中有多少个三角形 364

21.11递归查找数组中的最大值 367

21.12分解质因数 368

21.13在大矩阵中找k 369

21.14上楼梯的问题 374

21.15矩阵中的相邻数 376

第22章 操作系统、数据库及计算机网络 379

22.1操作系统 379

22.1.1知识点梳理 379

22.1.2经典面试题解析 383

【面试题1】操作系统常识性问题(选择题) 383

【面试题2】进程间的通信如何实现 388

【面试题3】关于虚拟存储器的一些问题 388

22.2数据库 389

22.2.1知识点梳理 389

22.2.2经典面试题解析 391

【面试题1】数据库常识性问题(选择题) 391

【面试题2】用SQL语句查出分数最高前20位学生 397

【面试题3】SQL设计的优化 397

22.3计算机网络 398

22.3.1知识点梳理 398

22.3.2经典面试题解析 402

【面试题1】计算机网络常识性问题(选择题) 402

【面试题2】简述OSI七层模型和TCP/IP四层模型 405

【面试题3】简述TCP协议三次握手的过程 406

【面试题4】IPv4协议和IPv6协议 407

相关图书
作者其它书籍
返回顶部