图书介绍

程序员面试手册 概念、编程问题及面试题PDF|Epub|txt|kindle电子书版本网盘下载

程序员面试手册 概念、编程问题及面试题
  • (印)纳拉辛哈·卡鲁曼希著;爱飞翔译 著
  • 出版社: 北京:机械工业出版社
  • ISBN:9787111590118
  • 出版时间:2018
  • 标注页数:694页
  • 文件大小:86MB
  • 文件页数:711页
  • 主题词:程序设计-手册

PDF下载


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

下载说明

程序员面试手册 概念、编程问题及面试题PDF格式电子书版下载

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

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

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

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

图书目录

第1章 编程基础1

1.1变量1

1.2数据类型1

1.3数据结构2

1.4抽象数据类型3

1.5内存与变量3

1.6指针4

1.6.1指针的声明4

1.6.2指针的使用5

1.6.3指针的操纵6

1.6.4数组与指针7

1.6.5动态内存分配7

1.6.6函数指针7

1.7参数传递的方式8

1.7.1实际参数与形式参数8

1.7.2参数传递的语义8

1.7.3各种编程语言所支持的参数传递方式9

1.7.4按值传递9

1.7.5按结果传递10

1.7.6有可能发生的参数冲突10

1.7.7按值-结果传递11

1.7.8按引用传递(别名机制)11

1.7.9按名称传递12

1.8绑定12

1.8.1静态绑定(前期绑定)13

1.8.2动态绑定(后期绑定)13

1.9作用域13

1.9.1静态作用域13

1.9.2动态作用域14

1.10存储类别15

1.10.1存储类别为auto的变量15

1.10.2存储类别为extern的变量16

1.10.3存储类别为register的变量18

1.10.4存储类别为static的变量19

1.11存储空间的安排19

1.12编程方式22

1.12.1无结构的编程22

1.12.2过程式的编程22

1.12.3模块式的编程22

1.12.4面向对象的编程23

1.13面向对象编程的基本概念23

1.13.1类与对象24

1.13.2封装24

1.13.3抽象25

1.13.4数据隐藏25

1.13.5多态25

1.13.6继承26

1.13.7继承的类型26

1.13.8动态绑定27

1.13.9消息传递28

第2章 脚本语言83

2.1解释器与编译器83

2.1.1编译器83

2.1.2解释器84

2.1.3编译器与解释器的区别84

2.2什么是脚本语言84

2.3 shell脚本编程85

2.3.1命令的重定向与管道85

2.3.2变量86

2.3.3命令行参数87

2.3.4命令替换88

2.3.5算术扩展88

2.3.6控制结构88

2.3.7函数92

2.4 Perl94

2.4.1从“Hello world!”程序开始94

2.4.2 Perl的命令行参数95

2.4.3 Perl的数据类型与变量95

2.4.4引用98

2.4.5声明变量98

2.4.6变量的作用域99

2.4.7字符串字面量99

2.4.8 Perl的标准输入端100

2.4.9 Perl语言的运算符101

2.4.10条件语句110

2.4.11循环113

2.4.12子例程115

2.4.13字符串操作117

2.4.14包/模块118

2.5 Python118

2.5.1什么是Python118

2.5.2布尔类型119

2.5.3整数119

2.5.4字符串119

2.5.5列表与元组121

2.5.6函数122

2.5.7把代码包装成模块123

第3章 与设计有关的面试题124

3.1术语介绍124

3.2技巧125

3.3可供练习的其他设计问题179

第4章 操作系统的概念180

4.1术语介绍180

4.2与操作系统概念有关的问题183

第5章 计算机网络的基础知识188

5.1介绍188

5.2局域网与广域网188

5.3数据包分割与多路复用189

5.4终端设备190

5.5中介设备190

5.6集线器、交换机与路由器的定义191

5.7介质192

5.8端对端网络与客户端/服务器网络192

5.9互联网是如何运作的193

5.10 OSI模型与TCP/IP模型的区别196

5.11客户端/服务器结构与互联网197

5.12 ARP与RARP198

5.13子网199

5.14路由器的工作原理200

5.15 单播、广播、多播201

5.16 tracert/traceroute及ping命令的工作原理202

5.17什么是QoS203

第6章 数据库概念204

6.1术语介绍204

6.2与数据库概念有关的问题206

第7章 智力题213

7.1智力题213

第8章 算法介绍217

8.1什么是算法217

8.2为什么要做算法分析218

8.3算法分析的目标218

8.4什么是运行时间分析218

8.5怎样对比不同的算法218

8.6什么是增长率219

8.7几种常见的增长形式219

8.8算法分析的类型220

8.9渐近表示法221

8.10大O表示法221

8.11大Ω表示法222

8.12大?表示法223

8.13算法分析为什么又叫渐近分析225

8.14渐近分析指南225

8.15三种表示法的性质227

8.16常用的对数公式与求和公式227

8.17分治算法的主定理227

8.18与分治算法的主定理有关的问题228

8.19递减式递推(减而治之)算法的主定理229

8.20另一种递减式递推(减而治之)算法的主定理229

8.21与算法分析有关的问题230

第9章 递归与回溯240

9.1介绍240

9.2什么是递归240

9.3为什么要用递归的办法解决问题240

9.4递归函数的格式241

9.5演示递归调用时的内存占用情况241

9.6递归与迭代242

9.7运用递归时的注意事项243

9.8递归算法举例243

9.9与递归有关的问题243

9.10什么是回溯245

9.11回溯算法举例245

9.12与回溯有关的问题245

第10章 链表248

10.1什么是链表248

10.2将链表用作抽象的数据类型248

10.3为什么要用链表249

10.4数组概述249

10.5比较链表、数组与动态数组250

10.6单链表251

10.7双链表256

10.8循环链表261

10.9节省内存的双链表266

10.10松散链表268

10.11跳跃链表273

10.12与链表有关的问题276

第11章栈295

11.1什么是栈295

11.2怎样使用栈296

11.3将栈用作抽象数据类型296

11.4栈的运用296

11.5实现297

11.6对比各种实现方式302

11.7与栈有关的问题303

第12章 队列324

12.1什么是队列324

12.2如何使用队列324

12.3将队列用作抽象数据类型325

12.4异常325

12.5运用325

12.6实现326

12.7与队列有关的问题331

第13章树337

13.1什么是树337

13.2术语表337

13.3二叉树339

13.4二叉树的类型339

13.5二叉树的性质340

13.6遍历二叉树342

13.7泛化树(N叉树)362

13.8通过线索二叉树来遍历369

13.9表达式树376

13.10异或树379

13.11二叉搜索树380

13.12平衡二叉搜索树395

13.13 AVL树396

13.14其他形式的树413

13.14.1红黑树413

13.14.2伸展树414

13.14.3扩充树(增强树)414

13.14.4区间树(区段树)415

13.14.5替罪羊树416

第14章 优先级队列与堆418

14.1什么是优先级队列418

14.2将优先级队列用作抽象数据结构418

14.3运用419

14.4实现419

14.5堆与二叉堆420

14.6二叉堆421

14.7与优先级队列和堆有关的问题428

第15章 图算法442

15.1介绍442

15.2术语表442

15.3图的运用446

15.4将图用作抽象的数据结构446

15.4.1邻接矩阵446

15.4.2邻接列表447

15.4.3邻接集合449

15.4.4表示图的方法的对比449

15.5图的遍历449

15.5.1深度优先搜索(DFS)450

15.5.2广度优先搜索(BFS)454

15.5.3对比DFS与BFS456

15.6拓扑排序457

15.7最短路径算法458

15.8最小生成树465

15.9与图算法有关的问题469

第16章 排序475

16.1什么是排序475

16.2为什么要排序475

16.3排序算法的分类方式475

16.3.1按照比较的次数来分类475

16.3.2按照交换操作的次数来分类476

16.3.3按照内存使用量来分类476

16.3.4按照是否递归来分类476

16.3.5按照是否稳定来分类476

16.3.6按照适应性来分类476

16.4其他的分类方式476

16.5冒泡排序477

16.6选择排序478

16.7插入排序479

16.8希尔排序481

16.9归并排序483

16.10堆排序485

16.11快速排序485

16.12树排序488

16.13线性时间的排序算法489

16.14计数排序489

16.15 桶排序490

16.16基数排序490

16.17拓扑排序491

16.18外部排序491

16.19与排序有关的问题492

第17章 搜索500

17.1什么是搜索500

17.2为什么要搜索500

17.3各种类型的搜索500

17.4在无序的数据中执行线性搜索501

17.5在已经排好序/有序的数组中执行线性搜索501

17.6二分搜索501

17.7对比几种基本的搜索算法502

17.8符号表与哈希502

17.9字符串搜索算法502

17.10与搜索有关的问题503

第18章 选择算法530

18.1什么是选择算法530

18.2通过排序来选择530

18.3基于分区的选择算法531

18.4线性选择算法——中位数的中位数算法531

18.5把最小的k个元素找出来531

18.6与选择算法有关的问题531

第19章 符号表541

19.1介绍541

19.2什么是符号表541

19.3实现符号表542

19.4比较实现符号表的各种方式543

第20章 哈希544

20.1什么是哈希544

20.2为什么要使用哈希544

20.3将哈希表用作抽象数据结构544

20.4哈希技术的原理545

20.5哈希技术的组成要素546

20.6哈希表546

20.7哈希函数547

20.8负载因子547

20.9冲突547

20.10冲突解决技术548

20.11单独链接法548

20.12开放定址548

20.12.1线性探测548

20.12.2二次探测549

20.12.3二次哈希550

20.13比较各种冲突解决技术550

20.14哈希技术如何把复杂度降为O(1)551

20.15 哈希技术551

20.16哪些问题不适合用哈希表解决551

20.17 Bloom过滤器552

20.17.1工作原理552

20.17.2选择合适的哈希函数553

20.17.3设置长度合适的位向量553

20.17.4空间方面的优势553

20.17.5时间方面的优势554

20.17.6实现554

20.18与哈希有关的问题554

第21章 字符串算法565

21.1介绍565

21.2字符串匹配算法565

21.3蛮力法566

21.4 Rabin-Karp字符串匹配算法566

21.5用有限状态机来实现字符串匹配算法567

21.5.1状态机的运作过程568

21.5.2构建有限状态机时的注意事项568

21.5.3 匹配算法568

21.6 KMP算法569

21.6.1前缀表569

21.6.2匹配算法571

21.7 Boyce-Moore算法573

21.8适合用来保存字符串的数据结构573

21.9用哈希表来保存字符串574

21.10用二叉搜索树来存放字符串574

21.11前缀树574

21.11.1什么是前缀树574

21.11.2为什么要使用前缀树575

21.11.3声明前缀树575

21.11.4向前缀树中插入字符串576

21.11.5在前缀树中查找字符串576

21.11.6用前缀树来表示字符串有什么缺点577

21.12三元搜索树577

21.12.1声明三元搜索树577

21.12.2向三元搜索树中插入字符串578

21.12.3在三元搜索树中查找字符串580

21.12.4显示三元搜索树中的全部字符串580

21.12.5在三元搜索树中查找最长的字符串581

21.13比较二叉搜索树、前缀树及三元搜索树581

21.14后缀树581

21.14.1前缀与后缀582

21.14.2规律582

21.14.3什么是后缀树582

21.14.4构建后缀树582

21.14.5运用后缀树585

21.15 与字符串有关的问题585

第22章 算法设计技巧591

22.1介绍591

22.2分类591

22.3按实现方式分类591

22.3.1递归算法与迭代算法591

22.3.2过程式算法与声明式(非过程式)算法592

22.3.3串行算法、并行算法、分布式算法592

22.3.4确定性的算法与非确定性的算法592

22.3.5精确算法与近似算法592

22.4按设计方式分类592

22.4.1贪婪算法592

22.4.2分治算法593

22.4.3动态规划算法593

22.4.4线性规划算法593

22.4.5归约(转化并治理)算法593

22.5其他分类方式594

22.5.1按研究领域划分594

22.5.2按复杂程度划分594

22.5.3随机化的算法594

22.5.4分支定界与回溯594

第23章 贪婪算法595

23.1介绍595

23.2贪婪算法的策略595

23.3哪些问题适合用贪婪算法求解595

23.4贪婪算法是否能应对所有的问题596

23.5贪婪算法的优点与缺点596

23.6可以运用贪婪算法的场合596

23.7理解贪婪算法596

23.8与贪婪算法有关的问题599

第24章 分治算法606

24.1介绍606

24.2什么是分治策略606

24.3分治技术是否能用来解决所有的问题606

24.4用示意图来说明分治技术607

24.5理解分治技术607

24.6分治技术的优点608

24.7分治技术的缺点608

24.8分治算法的主定理609

24.9分治算法的适用场合609

24.10与分治技术有关的问题609

第25章 动态规划623

25.1介绍623

25.2什么是动态规划策略623

25.3什么样的问题适合用动态规划来解决624

25.4动态规划技术能否应对所有的问题624

25.5动态规划的方式624

25.5.1自下而上的动态规划624

25.5.2自上而下的动态规划624

25.5.3两种规划方向的对比624

25.6动态规划算法示例625

25.7理解动态规划625

25.7.1斐波那契数列625

25.7.2求某数的阶乘627

25.7.3最长的公共子序列628

25.8与动态规划有关的问题631

第26章 复杂度类668

26.1介绍668

26.2多项式时间/指数时间669

26.3什么是判定性问题669

26.4判定过程669

26.5什么是复杂度类669

26.6复杂度类的类型669

26.6.1 P类669

26.6.2 NP类670

26.6.3反NP类670

26.6.4 P、 NP与反NP之间的关系670

26.6.5 NP困难类670

26.6.6 NP完全类671

26.6.7 P、 NP、反NP、NP困难与NP完全之间的关系671

26.6.8 P是否等于NP671

26.7归约672

第27章 其他概念675

27.1介绍675

27.2与位运算有关的技巧675

27.2.1按位与675

27.2.2按位或675

27.2.3按位异或676

27.2.4左移位676

27.2.5右移位676

27.2.6按位取反676

27.2.7判断第K个二进制位有没有设置(或者说是不是1)676

27.2.8设置第K个二进制位(也就是将其设为1)677

27.2.9清除第K个二进制位 (也就是将其设为0)677

27.2.10切换第K个二进制位677

27.2.11把值为1且最靠右的二进制位设置成0677

27.2.12把值为1且最靠右的二进制位标出来677

27.2.13把值为0且最靠右的二进制位标出来678

27.2.14判断某数是不是2的幂678

27.2.15与2的幂相乘678

27.2.16与2的幂相除678

27.2.17求出与2的幂相除的余数678

27.2.18将二进制表示形式反转678

27.2.19统计值为1的二进制位个数679

27.2.20创建掩码,以便将尾部连续出现的0标注出来680

27.2.21把奇数位置上的二进制位与偶数位置上的二进制位互换680

27.2.22用不做除法的方式来求平均值680

27.3其他编程问题680

第28章 非技术问题686

28.1面试技巧686

28.2非技术问题举例688

热门推荐