新书出版 | 《数据库程序员面试笔试宝典》
书名: 数据库程序员面试笔试宝典
作者:李华荣
定价: 69.00元
出版社名称: 机械工业出版社
出版时间: 2018年7月
ISBN编号: 9787111604969
豆瓣:https://book.douban.com/subject/30288363/
内容简介
数据库 面试 笔试系列书籍包括《Oracle数据库 面试 笔试宝典》、《数据库程序员面试笔试宝典》、《数据库程序员面试笔试真题库》和《数据库 面试 笔试真题与解析》。这几本书各有侧重点,读者可以根据自己的喜好和需求进行购买。其中,《Oracle数据库 面试 笔试宝典》主要是针对Oracle数据库进行讲解,还包括一些数据库的基础内容;《数据库程序员面试笔试宝典》主要是从通用型角度考虑,包括了数据库基础内容、Oracle、MySQL、SQL Server、NoSQL和一些OS及存储方面的内容;《数据库程序员面试笔试真题库》中包含了20套各大名企的数据库工程师的笔试题;《数据库 面试 笔试真题与解析》主要是从各大名企数据库 面试 笔试题中挑选一些比较重要的真题进行详解。这几本书中的部分内容是重复的,请读者根据自己需要可以选择性的购买。书中大部分内容在我博客上都有相关的连接,个别深入内容,读者可以参考我的博客进行阅读。
作者简介
李华荣,网名“小麦苗”,甘肃庆阳人,中国科学技术大学软件工程硕士,获得计算机四级数据库工程师认证,获得OCM大师认证,长期从事Oracle数据库的研究,具有丰富的开发和维护经验,兴趣爱好广泛,热衷技术分享。个人QQ:646634621,个人weixin公众号:xiaomaimiaolhr ,
-
我的博客:http://blog.itpub.net/26736162/abstract/1/
-
我的微店地址:https://weidian.com/s/793741433?wfr=c&ifr=shopdetail
-
出版的数据库类丛书:http://blog.itpub.net/26736162/viewspace-2142121/
-
小麦苗课堂资料(视频+讲课资料):https://share.weiyun.com/5fAdN5m
-
腾讯课堂地址:https://lhr.ke.qq.com/
-
新浪微博地址:https://weibo.com/lhrbest
前言
程序员求职始终是当前社会的一个热点,而市面上有很多关于程序员求职的书籍都是针对基础知识的讲解,没有一本专门针对数据库程序员的面试笔试宝典。虽然网络上有一些IT企业的数据库面试笔试真题,但这些题大多七拼八凑,毫无系统性可言,而且绝大多数都是一些博主自己做的,答案简单,准确性不高,即使偶尔答案正确了,也没有详细的讲解,这就导致读者做完了这些真题,根本就不知道自己做得是否正确,完全是徒劳。如果下一次这个题目再次被考察,自己还是不会。更有甚者,网上的答案很有可能是错误的,此时还会误导读者。
针对这种情况,我们创作团队经过精心准备,从互联网上的海量数据库面试笔试真题中,选取了当前顶级企业(包括微软、谷歌、百度、腾讯、阿里巴巴、360、小米等)的面试笔试真题,挑选出其中比较典型、考察频率较高、具有代表性的真题,做到难度适宜,兼顾各层次读者的需求,同时对真题进行知识点的分门别类,做到层次清晰、条理分明、答案简单明了。本书特点鲜明,所选真题以及写作手法具有以下特点。
第一,考察率高:本书中所选真题全是数据库程序员面试笔试常考点,如数据库基础知识、操作系统、计算机网络、数据结构与算法、海量数据处理等。
第二,行业代表性强:本书中所选真题全部来自于顶级知名企业,它们是行业的风向标,代表了行业的高水准,其中绝大多数真题因为题目难易适中,而且具有非常好的区分度,通常会被众多中小企业全盘照搬,具有代表性。
第三,答案详尽:本书对每一道题目都有非常详细的解答,不只是告诉读者答案,还提供了详细的讲解。
第四,分类清晰、调理分明:本书对各个知识点都进行了分门别类的归纳,这种写法有利于读者针对个人实际情况做到有的放矢、重点把握。
由于图书的篇幅所限,我们无法将所有的程序员面试笔试真题内容都写在书稿中,鉴于此,我们猿媛之家在官方网站(www.yuanyuanba.com)上提供了一个读者交流平台,读者可以在该网站上传各类面试笔试真题,也可以查找到自己所需要的知识,同时,读者也可以向本平台提供当前最新、最热门的程序员面试笔试题、面试技巧、程序员生活等相关材料。除此以外,我们还建立了公众号:猿媛之家,作为对外消息发布平台,以最大限度地满足读者需要。
本书适合的读者对象主要有如下几类:
-
刚毕业找工作的同学,及从其它岗位转数据库岗位的人员
-
面试Oracle DBA初中级工作的人员
-
面试Oracle开发工作的人员
-
面试初级MySQL和初级SQL Server管理工作的人员
-
Oracle运维人员
-
数据库爱好者
阅读本书注意事项
(1)由于篇幅原因,书中很多部分的实验内容、部分实用代码、部分结果或其它一些延伸性的知识,我都写在了随书pdf文件里,大家可以在pdf文件中阅读。还有部分内容不适合在pdf里展现的,我都写在了博客或weixin公众号中,并且在pdf文件中给出了链接地址。读者若想了解更深层次的知识,可以去链接地址阅读。链接中给出的实验部分除非读者已经非常熟悉了,不然实验的内容需要读者亲自动手实践,以便更深刻理解其中的知识点。需要注意的是,这些延伸性的知识点有可能在面试中也会出现。例如,本书中讲解了ASMM和AMM的特性,但是并没有讲解有关大内存页的使用,而只是在小节后给出了相应的链接文章,但是,在一些高级DBA的面试中,面试官也有可能询问有关大内存页的知识。所以,对于有能力的读者,可以适当阅读研究一下这些知识点。
(2)数据库中的知识繁多而复杂,本书只针对一些常见的重要知识点进行分析,更多更细节的内容可以参阅相关的官方文档。
(3)本书中若没有特殊说明Oracle的版本的话,则默认实验版本为11.2.0.3。
在本书的编写过程中,得到了杨伟豪、刘雪梅、楚源西、秦榆、夏男颖、刘鹏、杨建荣的帮助,在此深表感谢。
本书针对当前各大IT企业面试笔试的特性与侧重点,精心挑选了近3年以来近百家顶级IT企业的数据库面试笔试真题,这些企业涉及的业务包括系统软件、搜索引擎、电子商务、手机App、安全关键软件等,面试笔试真题非常具有代表性与参考性。同时,本书对这些题目进行了合理的划分与归类,并且对其进行了庖丁解牛式的分析与讲解。针对试题中涉及的部分重难点问题,本书都进行了适当地扩展与延伸,力求对知识点的讲解清晰而不紊乱,全面而不啰嗦,不仅如此,本书除了对数据库的基础知识进行深度剖析以外,还针对Oracle、MySQL、SQL Server等常见数据库的 面试 笔试做了非常详细的介绍。
本书是一本计算机相关专业毕业生面试、笔试的求职用书,同时也适合期望在计算机软、硬件行业大显身手的计算机爱好者阅读。
本书目录
上篇 面试笔试经验技巧篇
第1章 求职经验分享 2
1.1 踩别人没有踩过的坑,走别人没有走过的路 2
1.2 一只小白成长为DBA的心路历程 3
1.3 一个热衷于SQL优化的DBA成长经历 3
第2章 数据库程序员的求职现状 5
2.1 当前市场对于数据库程序员的需求如何?待遇如何? 5
2.2 数据库程序员有哪些可供选择的职业发展道路? 5
2.3 当企业在招聘时,对数据库程序员通常有何要求? 5
2.4 数据库程序员的日常工作是什么? 7
2.5 要想成为一名出色的数据库程序员,需要掌握哪些必备的知识? 8
2.6 各类数据库求职及市场使用情况 9
第3章 如何应对程序员面试笔试? 12
3.1 如何巧妙地回答面试官的问题? 12
3.2 如何回答技术性问题? 12
3.3 如何回答非技术性问题? 14
3.4 在被企业拒绝后是否可以再申请? 15
3.5 如何应对自己不会回答的问题? 15
3.6 如何应对面试官的“激将法”语言? 15
3.7 如何处理与面试官持不同观点这个问题? 16
3.8 什么是职场暗语? 16
下篇 面试笔试技术攻克篇
第4章 数据库基础 21
4.1 为什么使用数据库? 21
4.2 数据库系统有哪几类数据模型结构? 21
4.3 关系型数据库系统与文件系统有什么区别? 22
4.4 数据库系统的组成与结构有哪些? 23
4.5 数据库系统的主要特点有哪些? 24
4.6 试述数据模型的概念、数据模型的作用、常用数据模型的分类和数据模型的三个要素 25
4.7 数据库设计过程包括哪几个主要阶段?数据库结构的设计在生存期中的地位如何? 26
4.8 范式 27
4.8.1 第一、二、三、BC范式 28
4.8.2 反范式 31
4.9 关系型数据库完整性规则 31
4.10 数据库的约束都有哪些? 32
4.11 事务 34
4.11.1 事务的概念及其4个特性是什么? 34
4.11.2 事务的分类 35
4.11.3 什么是XA事务? 36
4.11.4 事务的4种隔离级别(Isolation Level)分别是什么? 36
4.11.5 Oracle、MySQL和SQL Server中的事务隔离级别 37
4.12 什么是CAP定理? 38
4.13 什么是数据库系统的三级模式结构和二级映像? 39
4.14 什么是数据库三级封锁协议? 40
4.15 什么是两段锁协议? 41
4.16 锁 41
4.16.1 基础知识 41
4.16.2 更新丢失 41
4.16.3 悲观锁和乐观锁 42
4.16.4 锁的分类 42
4.16.5 Oracle中的锁 43
4.16.6 死锁 50
4.16.7 什么是MVCC? 52
4.17 存储过程 53
4.17.1 什么是存储过程?它有什么优点? 53
4.17.2 存储过程和函数的区别是什么? 54
4.18 触发器的作用、优缺点有哪些? 54
4.19 什么是游标?如何知道游标已经到了最后? 55
4.20 视图 56
4.20.1 什么是视图?视图的作用是什么? 56
4.20.2 在什么情况下可以对视图执行增加、删除、修改操作? 56
4.20.3 Oracle中的视图 57
4.21 SQL语句有哪些常见的分类? 58
4.22 SQL语言的数据查询 60
4.22.1 多表连接查询 61
4.22.2 笛卡儿积是什么? 62
4.22.3 TopN分析 62
4.22.4 子查询 63
4.22.5 合并查询(集合查询) 66
4.22.6 SQL:1999语法对SQL的支持 69
4.22.7 WITH语法 74
4.22.8 SQL部分练习题 75
4.23 什么是SQL注入? 79
4.24 索引 79
4.24.1 索引的优缺点 80
4.24.2 索引的分类 81
4.24.3 聚集索引是什么?在哪些列上适合创建聚集索引? 82
4.24.4 单列索引和复合索引 83
4.24.5 函数索引 84
4.24.6 位图索引 84
4.24.7 分区索引 85
4.24.8 什么是覆盖索引? 87
4.24.9 虚拟索引 88
4.24.10 不可见索引 90
4.24.11 Oracle中的其他索引 92
4.25 ER模型 96
4.26 热备份和冷备份的区别是什么? 99
4.27 数据字典的定义及作用有哪些? 99
4.28 统一建模语言 100
4.29 分布式数据库与并行数据库有何异同点? 102
4.30 什么是OLAP和OLTP? 102
4.31 数据库连接池是什么? 103
4.32 数据库安全 104
4.33 数据库系统设计题 106
4.34 数据库基础部分其他真题解析 112
第5章 Oracle数据库 119
5.1 开发类常考知识点 119
5.1.1 PL/SQL程序 119
5.1.2 行列互换有哪些方法? 121
5.1.3 如何删除表中重复的记录 123
5.1.4 DELETE、DROP和TRUNCATE的区别是什么? 123
5.1.5 NULL的注意事项 124
5.1.6 如何判断一个存储过程是否正在运行? 125
5.1.7 AUTHID CURRENT_USER的作用是什么? 125
5.1.8 Oracle用户密码含特殊字符时如何登录? 126
5.1.9 当DML语句中有一条数据报错时,如何让该DML语句继续执行? 127
5.1.10 真题 128
5.2 维护类常考知识点 133
5.2.1 Oracle对象 133
5.2.2 体系结构 135
5.2.3 SQL优化相关 147
5.2.4 Oracle性能相关 157
5.2.5 会话 168
5.2.6 高可用 169
5.2.7 备份恢复 177
5.2.8 建库、删库、网络 184
第6章 MySQL数据库 190
6.1 基础部分 190
6.1.1 MySQL数据库有什么特点? 190
6.1.2 MySQL的企业版和社区版的区别有哪些? 191
6.1.3 在Linux下安装MySQL有哪几种方式?它们的优缺点各有哪些? 191
6.1.4 如何确定MySQL是否处于运行状态?如何开启MySQL服务? 191
6.1.5 如何创建和删除表? 192
6.1.6 如何创建和删除数据库? 195
6.1.7 如何查看数据库的版本、当前登录用户和当前的数据库名称? 195
6.1.8 MySQL有哪些常用日期和时间函数? 196
6.1.9 MySQL有哪些数据类型? 197
6.1.10 真题 200
6.2 维护部分 203
6.2.1 MySQL中limit的作用是什么? 203
6.2.2 如何查看和修改系统参数? 203
6.2.3 MySQL有哪几类日志文件? 205
6.2.4 MySQL支持事务吗? 211
6.2.5 MySQL有几种存储引擎(表类型)?各自有什么区别? 212
6.2.6 MySQL InnoDB引擎类型的表有哪两类表空间模式?它们各有什么优缺点? 220
6.2.7 如何批量更改MySQL引擎? 221
6.2.8 什么是间隙锁? 222
6.2.9 MySQL有哪些命令可以查看锁? 223
6.2.10 MySQL如何查看执行计划?执行计划中每列的含义分别是什么? 227
6.2.11 MySQL原生支持的备份方式及种类有哪些? 232
6.2.12 MySQL有哪几个默认数据库? 235
6.2.13 MySQL区分大小写吗? 236
6.2.14 MySQL中的字符集 236
6.2.15 如何解决MySQL中文乱码问题? 238
6.2.16 如何提高MySQL的安全性? 239
6.2.17 如何对MySQL进行优化? 240
6.2.18 什么是MySQL的复制(Replication)? 244
6.2.19 profile的意义及使用场景 245
6.2.20 Oracle和MySQL中的分组(GROUP BY)问题 246
6.2.21 MySQL的分区表 248
6.2.22 MySQL中的索引 250
6.2.23 MySQL的CHECK、OPTIMIZE和ANALYZE的作用分别是什么? 253
6.2.24 真题 254
第7章 SQL Server数据库 260
7.1 SQL Server有Linux版本吗? 260
7.2 SQL Server如何查看版本? 260
7.3 SQL Server 数据库如何启动? 261
7.4 SQL Server有哪些默认的系统数据库? 262
7.5 SQL Server物理文件有哪3种类型? 263
7.6 SQL Serverr的哪类视图是可以更新的? 263
7.7 SQL Server标准的SQL与TSQL的区别是什么? 264
7.8 SQL Server采用什么方法可以保证数据的完整性? 266
7.9 登录名、服务器角色、用户名和数据库角色 266
7.10 SQL Server中的完全备份、差异备份和日志备份的区别是什么? 267
7.10 SQL Server提供的3种恢复模型分别是什么?它们有什么区别? 267
7.12 SQL Server数据库有哪3类触发器? 268
7.13 真题 269
7.13.1 简答题 269
7.13.2 选择题 270
第8章 其他数据库 272
8.1 网状数据库与层次数据库 273
8.2 关系型数据库 274
8.2.1 RDBMS 274
8.2.2 PostgreSQL 275
8.2.3 DB2 275
8.2.4 Microsoft Access 276
8.2.5 Sybase 276
8.2.6 内存数据库 277
8.3 非关系型数据库(NoSQL) 285
8.3.1 键值(KeyValue)数据库Redis 286
8.3.2 键值(KeyValue)数据库Memcached 287
8.3.3 文档型数据库MongoDB 287
8.3.4 行存储和列存储 289
8.4 时间序列数据库 290
8.5 NewSQL 291
8.6 区块链 292
第9章 操作系统、网络和存储 294
9.1 进程管理 294
9.1.1 进程与线程有什么区别? 294
9.1.2 内核线程和用户线程的区别 295
9.2 内存管理 295
9.2.1 内存管理有哪几种方式? 295
9.2.2 什么是虚拟内存? 296
9.2.3 什么是内存碎片?什么是内碎片?什么是外碎片 296
9.2.4 虚拟地址、逻辑地址、线性地址、物理地址有什么区别? 296
9.3 存储 297
9.3.1 Linux下逻辑卷管理(LVM)是什么?其常用命令有哪些? 297
9.3.2 AIX下管理LV的常用命令有哪些? 299
9.3.3 什么是GPFS? 302
9.3.4 什么是RAID?各种级别的RAID的区别是什么? 303
9.4 OS 304
9.4.1 接触过哪些OS系统?常用命令有哪些? 304
9.4.2 会写SHELL脚本吗? 305
9.4.3 AIX系统下的LPar、逻辑CPU、虚拟CPU、物理CPU的含义分别是什么? 306
9.4.4 NMON的作用是什么? 312
9.4.5 Linux环境下/dev/shm目录的作用是什么? 313
9.4.6 Linux下的常用设备有哪些? 314
9.4.7 什么是YUM?如何配置本地YUM源? 318
9.4.8 Linux下如何设置定时任务(crontab)? 320
9.4.9 Linux文件的3种时间(mtime、atime、ctime)的区别是什么? 322
9.5 网络 323
9.5.1 TCP和UDP的区别有哪些? 323
9.5.2 Ping命令是什么? 323
9.5.3 常用的网络安全防护措施有哪些? 324
9.5.4 交换机与路由器有什么区别? 325
9.5.5 DNS的作用是什么? 325
9.6 真题 326
第10章 数据库程序员面试笔试真题库 330
10.1 真题一 330
10.2 真题二 331
10.3 真题三 332
10.4 真题一答案 334
10.5 真题二答案 334
10.6 真题三答案 335
附录 336
推荐资料 336