图书介绍

程序员面试笔试宝典 第3版PDF|Epub|txt|kindle电子书版本网盘下载

程序员面试笔试宝典 第3版
  • 何昊,叶向阳,窦浩等编著 著
  • 出版社: 北京:机械工业出版社
  • ISBN:9787111598893
  • 出版时间:2018
  • 标注页数:345页
  • 文件大小:46MB
  • 文件页数:358页
  • 主题词:程序设计-资格考试-自学参考资料

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

程序员面试笔试宝典 第3版PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

上篇:面试笔试经验技巧篇2

经验技巧1 如何巧妙地回答面试官的问题2

经验技巧2 如何回答技术性的问题3

经验技巧3 如何回答非技术性问题5

经验技巧4 如何回答快速估算类问题5

经验技巧5 如何回答算法设计问题6

经验技巧6 如何回答系统设计题9

经验技巧7 如何解决求职中的时间冲突问题11

经验技巧8 如果面试问题曾经遇见过,是否要告知面试官12

经验技巧9 在被企业拒绝后是否可以再申请13

经验技巧10 如何应对自己不会回答的问题13

经验技巧11 如何应对面试官的“激将法”语言14

经验技巧12 如何处理与面试官持不同观点这个问题15

经验技巧13 什么是职场暗语15

下篇:面试笔试技术攻克篇21

第1章 程序设计基础21

1.1 C/C++关键字21

1.1.1 static(静态)变量有什么作用21

1.1.2 const有哪些作用23

1.1.3 switch语句中的case结尾是否必须添加break语句28

1.1.4 volatile在程序设计中有什么作用29

1.1.5 断言ASSERT()是什么31

1.1.6 枚举变量的值如何计算32

1.1.7 charstrl[]=“abc”;char str2[]=“abc”;strl与str2不相等,为什么32

1.1.8 为什么有时候main()函数会带参数?参数argc与argv的含义是什么34

1.1.9 C++里面是不是所有的动作都是main()函数引起的35

1.1.10 *p++与(*p)++等价吗?为什么36

1.1.11 前置运算与后置运算有什么区别36

1.1.12 a是变量,执行(a++)+=a语句是否合法38

1.1.13 如何进行float、bool、int、指针变量与“零值”的比较38

1.1.14 new/delete与malloc/free的区别是什么40

1.1.15 什么时候需要将引用作为返回值42

1.1.16 变量名为618Software是否合法43

1.1.17 C语言中,整型变量x小于0,是否可知x×2也小于043

1.1.18 exit(status)是否与从main()函数返回的status等价43

1.1.19 已知String类定义,如何实现其函数体44

1.1.20 在C++语言中如何实现模板函数的外部调用46

1.1.21 在C++语言中,关键字explicit有什么作用47

1.1.22 C++中异常的处理方法以及使用了哪些关键字48

1.1.23 如何定义和实现一个类的成员函数为回调函数49

1.2 内存分配50

1.2.1 内存分配的形式有哪些50

1.2.2 什么是内存泄漏52

1.2.3 栈空间的最大值是多少61

1.2.4 什么是缓冲区溢出62

1.3 sizeof64

1.3.1 strlen(“”)=?sizeof(“”)=?64

1.3.2 对于结构体而言,为什么sizeof返回的值一般大于期望值65

1.3.3 指针进行强制类型转换后与地址进行加法运算,结果是什么67

1.4 指针67

1.4.1 使用指针有哪些好处68

1.4.2 引用还是指针68

1.4.3 指针和数组是否表示同一概念69

1.4.4 指针是否可进行>、<、>=、<=、==运算70

1.4.5 指针与数字相加的结果是什么70

1.4.6 野指针?空指针71

1.5 预处理72

1.5.1 C/C++头文件中的ifndef/defme/endif的作用有哪些72

1.5.2 #include<filename.h>和#include“filename.h”有什么区别73

1.5.3 #define有哪些缺陷74

1.5.4 如何使用 define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)74

1.5.5 含参数的宏与函数有什么区别75

1.5.6 宏定义平方运算#define SQR(X) X*X是否正确75

1.5.7 不能使用大于、小于、if语句,如何定义一个宏来比较两个整数a、b的大小76

1.5.8 如何判断一个变量是有符号数还是无符号数77

1.5.9 #define TRACE(S)(printf(“|n”,#S),S)是什么意思79

1.5.10 不使用sizeof,如何求int占用的字节数80

1.5.11 如何使用宏求结构体的内存偏移地址81

1.5.12 如何用sizeof判断数组中有多少个元素82

1.5.13 枚举和define有什么不同82

1.5.14 typdef和define有什么区别83

1.5.15 C++中宏定义与内联函数有什么区别84

1.5.16 定义常量谁更好?#define还是const85

1.6 结构体与类85

1.6.1 C语言中struct与union的区别是什么86

1.6.2 C和C++中struct的区别是什么87

1.6.3 C++中struct与class的区别是什么87

1.7 位操作88

1.7.1 一些结构声明中的冒号和数字是什么意思88

1.7.2 最有效的计算2乘以8的方法是什么89

1.7.3 如何使用位操作求两个数的平均值89

1.7.4 如何求解整型数的二进制表示中1的个数91

1.7.5 不能用sizeof()函数,如何判断操作系统是16位,还是32位92

1.7.6 嵌入式编程中,什么是大端?什么是小端93

1.7.7 考虑n位二进制数,有多少个数中不存在两个相邻的196

1.7.8 不用除法操作符如何实现两个正整数的除法97

1.8 函数101

1.8.1 怎么样写一个接受可变参数的函数102

1.8.2 函数指针与指针函数有什么区别102

1.8.3 C++函数传递参数的方式有哪些108

1.8.4 重载与覆盖有什么区别110

1.8.5 无参数构造函数是否可以调用单参数构造函数114

1.8.6 C++中函数调用有哪几种方式115

1.8.7 什么是可重入函数?C语言中如何写可重入函数116

1.9 数组117

1.9.1 inta[2][2]={{1},{2,3}},则a[0][1]的值是多少117

1.9.2 如何合法表示二维数组118

1.9.3 a是数组,(int*)(&a+l)表示什么意思118

1.9.4 不使用流程控制语句,如何打印出1~1000的整数119

1.9.5 char str[1024];?scanf(“|”,str)是否安全122

1.9.6 行存储与列存储中哪种存储效率高122

1.10 变量123

1.10.1 全局变量和静态变量有什么异同123

1.10.2 局部变量需要“避讳”全局变量吗124

1.10.3 如何建立和理解非常复杂的声明125

1.10.4 变量定义与变量声明有什么区别126

1.10.5 不使用第三方变量,如何交换两个变量的值127

1.10.6 C与C++变量初始化有什么不同128

1.10.7 类型转换128

1.11 字符串130

1.11.1 如何实现memmove130

1.11.2 不使用C/C++字符串库函数,如何自行编写strcpy()函数133

1.11.3 如何把数字转换成字符串135

1.12 编译137

1.12.1 编译和链接的区别是什么137

1.12.2 编译型语言与解释型语言的区别是什么138

1.12.3 如何判断一段程序是由C编译程序,还是由C++编译程序编译的139

1.12.4 C++程序中调用被C编译器编译后的函数,为什么要加extern“C”139

1.12.5 两段代码共存于一个文件,编译时有选择地编译其中的一部分,如何实现140

1.13 面向对象相关140

1.13.1 面向对象与面向过程有什么区别140

1.13.2 面向对象的基本特征有哪些142

1.13.3 什么是深拷贝?什么是浅拷贝142

1.13.4 什么是友元144

1.13.5 拷贝构造函数与赋值运算符的区别146

1.13.6 基类的构造函数/析构函数是否能被派生类继承148

1.13.7 初始化列表和构造函数初始化的区别148

1.13.8 C++中有哪些情况只能用初始化列表,而不能用赋值150

1.13.9 类的成员变量的初始化顺序151

1.13.10 当一个类为另一个类的成员变量时,如何对其进行初始化152

1.13.11 C++能设计实现一个不能被继承的类吗152

1.13.12 构造函数没有返回值,那么如何得知对象是否构造成功154

1.13.13 public继承、protected继承、private继承的区别155

1.13.14 C++提供默认参数的函数吗156

1.13.15 如何解决多重继承中存在的钻石问题158

1.14 虚函数159

1.14.1 什么是虚函数159

1.14.2 C++如何实现多态163

1.14.3 纯虚函数指的是什么164

1.14.4 什么函数不能声明为虚函数164

1.14.5 C++中如何阻止一个类被实例化167

1.15 编程技巧168

1.15.1 当while()的循环条件是赋值语句时会出现什么情况168

1.15.2 不使用if/?:/switch及其他判断语句如何找出两个int型变量中的最大值和最小值168

1.15.3 C语言获取文件名的宏定义是什么169

1.15.4 表达式a>b>c是什么意思170

1.15.5 如何打印自身代码171

1.15.6 如何实现一个最简单的病毒171

1.15.7 如何只使用一条语句实现x是否为2的若干次幂的判断172

1.15.8 如何定义一对相互引用的结构172

1.15.9 什么是逗号表达式173

1.15.10 n是否与nr等价174

1.15.11 什么是短路求值174

1.15.12 已知随机数函数rand7(),如何构造rand10()函数175

1.15.13 printf(“009B1EF8n”,(void *)x)与printf(“00000000n”,&x)有什么区别177

1.15.14 printf()函数是否有返回值177

1.15.15 不能使用任何变量,如何实现计算字符串长度函数177

1.15.16 负数除法与正数除法的运算原理是否一样178

1.15.17 main()主函数执行完毕后,是否会再执行一段代码179

第2章 操作系统180

2.1 进程管理180

2.1.1 进程与线程有什么区别180

2.1.2 线程同步有哪些机制181

2.1.3 内核线程和用户线程的区别181

2.2 内存管理182

2.2.1 内存管理有哪几种方式182

2.2.2 什么是虚拟内存183

2.2.3 什么是内存碎片?什么是内碎片?什么是外碎片183

2.2.4 虚拟地址、逻辑地址、线性地址、物理地址有什么区别184

2.2.5 Cache替换算法有哪些184

2.3 用户编程接口186

2.3.1 库函数调用与系统调用有什么不同186

2.3.2 静态链接与动态链接有什么区别186

2.3.3 静态链接库与动态链接库有什么区别187

2.3.4 用户态和核心态有什么区别187

2.3.5 用户栈与内核栈有什么区别188

第3章 数据结构与算法189

3.1 数组189

3.1.1 如何用递归实现数组求和189

3.1.2 如何用一个for循环打印出一个二维数组190

3.1.3 在顺序表中插入和删除一个结点平均移动多少个结点191

3.1.4 如何用递归算法判断一个数组中的元素是否递增191

3.1.5 如何分别使用递归与非递归实现二分查找算法192

3.1.6 如何在排序数组中找出给定数字出现的次数193

3.1.7 如何计算两个有序整型数组的交集195

3.1.8 如何找出数组中重复次数最多的数196

3.1.9 如何在O(n)的时间复杂度内找出数组中出现次数超过了一半的数198

3.1.10 如何找出数组中唯一的重复元素200

3.1.11 如何判断一个数组中的数值是否连续相邻203

3.1.12 如何找出数组中出现奇数次的元素204

3.1.13 如何找出数列中符合条件的数对的个数206

3.1.14 如何寻找出数列中缺失的数209

3.1.15 如何判定数组是否存在重复元素209

3.1.16 如何重新排列数组,使得数组左边为奇数,右边为偶数211

3.1.17 如何把一个整型数组中重复的数字去掉212

3.1.18 如何找出一个数组中第二大的数214

3.1.19 如何寻找数组中的最小值和最大值215

3.1.20 如何将数组的后面m个数移动为前面m个数217

3.1.21 如何计算出序列的前n项数据218

3.1.22 如何判断一个整数x是否可以表示成n(n≥2)个连续正整数的和219

3.2 链表220

3.2.1 数组和链表的区别是什么220

3.2.2 何时选择顺序表、何时选择链表作为线性表的存储结构为宜221

3.2.3 如何使用链表头221

3.2.4 如何实现单链表的插入、删除操作222

3.2.5 如何找出单链表中的倒数第k个元素225

3.2.6 如何实现单链表反转227

3.2.7 如何从尾到头输出单链表230

3.2.8 如何寻找单链表的中间结点231

3.2.9 如何对链表进行重新排序232

3.2.10 如何把链表相邻元素翻转234

3.2.11 如何检测一个较大的单链表是否有环235

3.2.12 如何判断两个单链表(无环)是否交叉237

3.2.13 如何删除单链表中的重复结点240

3.2.14 如何合并两个有序链表(非交叉)241

3.2.15 什么是循环链表242

3.2.16 如何实现双向链表的插入、删除操作244

3.2.17 一个链表不知道头结点,有一个指针指向其中一个结点,请问如何删除这个指针指向的结点246

3.2.18 如何实现双向循环链表的删除与插入操作246

3.2.19 如何在不知道头指针的情况下将结点删除247

3.3 字符串248

3.3.1 如何统计一行字符中有多少个单词248

3.3.2 如何将字符串逆序249

3.3.3 如何找出一个字符串中第一个只出现一次的字符252

3.3.4 如何输出字符串的所有组合253

3.3.5 如何检查字符是否是整数?如果是,返回其整数值259

3.3.6 如何查找字符串中每个字符出现的个数259

3.4 STL容器260

3.4.1 什么是泛型编程260

3.4.2 栈与队列的区别有哪些261

3.4.3 vector与list的区别有哪些261

3.4.4 如何实现循环队列262

3.4.5 如何使用两个栈模拟队列操作264

3.5 排序266

3.5.1 如何进行选择排序266

3.5.2 如何进行插入排序267

3.5.3 如何进行冒泡排序269

3.5.4 如何进行归并排序272

3.5.5 如何进行快速排序274

3.5.6 如何进行希尔排序277

3.5.7 如何进行堆排序278

3.5.8 各种排序算法有什么优劣280

3.6 二叉树281

3.6.1 基础知识281

3.6.2 如何递归实现二叉树的遍历283

3.6.3 已知先序遍历和中序遍历,如何求后序遍历284

3.6.4 如何非递归实现二叉树的后序遍历286

3.6.5 如何使用非递归算法求二叉树的深度289

3.6.6 如何判断两棵二叉树是否相等291

3.6.7 如何判断二叉树是否是平衡二叉树292

3.6.8 什么是霍夫曼编解码293

3.7 图295

3.7.1 什么是拓扑排序295

3.7.2 什么是DFS?什么是BFS296

3.7.3 如何求关键路径299

3.7.4 如何求最短路径300

第4章 数据库原理303

4.1 SQL的功能303

4.2 内连接与外连接304

4.3 事务306

4.4 存储过程与函数307

4.5 数据库范式308

4.6 触发器310

4.7 游标311

4.8 数据库日志312

4.9 union和union all312

4.10 视图313

4.11 数据库分类313

4.12 死锁317

第5章 海量数据处理318

5.1 问题分析318

5.2 基本方法318

5.3 经典实例分析332

5.3.1 top K问题332

5.3.2 重复问题335

5.3.3 排序问题337

附录338

附录A338

某互联网公司笔试真题1338

某互联网公司笔试真题2342

附录B343

某互联网公司笔试真题1答案343

某互联网公司笔试真题2答案345

热门推荐