上篇 面试笔试经验技巧篇 2
第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
下篇 面试笔试技术攻克篇 21
第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 Top-N分析 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 E-R模型 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与T-SQL的区别是什么? 264
7.8 SQL Server采用什么方法可以保证数据的完整性? 266
7.9 登录名、服务器角色、用户名和数据库角色 266
7.10 SQL Server中的完全备份、差异备份和日志备份的区别是什么? 267
7.11 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 键值(Key-Value)数据库Redis 286
8.3.2 键值(Key-Value)数据库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