內容簡介
本書針對當前各大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
作者簡介
李華榮,網名“小麥苗”,甘肅慶陽人,中國科學技術大學軟體工程碩士,獲得計算機四級資料庫工程師認證,獲得OCM大師認證,長期從事Oracle資料庫的研究,具有豐富的開發和維護經驗,興趣愛好廣泛,熱衷技術分享。