本書是一本講解MySQL程序員面試筆試的百科書,在寫法上,除了講解如何解答MySQL程序員面試筆試問題以外,還引入了相關(guān)知識(shí)點(diǎn)輔以說明,讓讀者能夠更加容易地理解。 本書將MySQL程序員面試筆試過程中各類知識(shí)點(diǎn)一網(wǎng)打盡,在廣度上,通過各種渠道,搜集了近3年來典型IT企業(yè)針對(duì)MySQL數(shù)據(jù)庫(kù)崗位的筆試面試涉及的知識(shí)點(diǎn),包括但不限于MySQL數(shù)據(jù)庫(kù)、計(jì)算機(jī)網(wǎng)絡(luò)、操作系統(tǒng)等,所選擇真題均為企業(yè)招聘使用題目。在講解的深度上,本書由淺入深地分析每一個(gè)知識(shí)點(diǎn),并提煉歸納,同時(shí),引入相關(guān)知識(shí)點(diǎn),加以深度剖析,讓讀者不僅能夠理解這個(gè)知識(shí)點(diǎn),還能在遇到相似問題的時(shí)候,也能游刃有余地解決,而這些內(nèi)容是其他同類書籍所沒有的。本書對(duì)知識(shí)點(diǎn)進(jìn)行歸納分類,結(jié)構(gòu)合理,條理清晰,對(duì)于讀者進(jìn)行學(xué)習(xí)與檢索意義重大。
MySQL數(shù)據(jù)庫(kù)相關(guān)領(lǐng)域面試、筆試、經(jīng)驗(yàn)心得、算法、考點(diǎn)、難點(diǎn)、真題解析一應(yīng)俱全,獲取高薪必備
程序員求職是當(dāng)前社會(huì)的一個(gè)熱點(diǎn),而市面上有很多關(guān)于程序員求職的書籍,例如《程序員代碼面試指南》(左程云著)、《劍指offer》(何海濤著)、《程序員面試筆試寶典》(何昊編著)、《Java程序員面試筆試寶典》(何昊編著)、《編程之美》(《編程之美》小組著)、《編程珠璣》(Jon Bentley 著)等,它們都是針對(duì)基礎(chǔ)知識(shí)的講解,各有側(cè)重點(diǎn),而且在市場(chǎng)上反映良好,但是,我們發(fā)現(xiàn),當(dāng)前市面上沒有一本專門針對(duì)MySQL數(shù)據(jù)庫(kù)程序員的面試筆試寶典,很多讀者朋友們向我們反映,他們希望有一本能夠詳細(xì)剖析面試筆試中數(shù)據(jù)庫(kù)相關(guān)知識(shí)的圖書,雖然網(wǎng)絡(luò)上有一些IT企業(yè)的MySQL數(shù)據(jù)庫(kù)面試筆試真題,但這些題大都七拼八湊,毫無系統(tǒng)性可言,而且絕大多數(shù)都是一些博主自己做的,答案簡(jiǎn)單,準(zhǔn)確性不高,即使偶爾答案正確了,也沒有詳細(xì)的講解,這就導(dǎo)致讀者做完了這些真題,根本就不知道自己做得是否正確,完全是徒勞。如果下一次這個(gè)題目再次被考察,自己還是不會(huì)。更有甚者,網(wǎng)上的答案很有可能是錯(cuò)誤的,此時(shí)還會(huì)誤導(dǎo)讀者。
針對(duì)這種情況,我們創(chuàng)作團(tuán)隊(duì)經(jīng)過精心準(zhǔn)備,從互聯(lián)網(wǎng)上的海量MySQL數(shù)據(jù)庫(kù)面試筆試真題中,選取了當(dāng)前典型企業(yè)(包括微軟、谷歌、百度、騰訊、阿里巴巴、360、小米等)的面試筆試真題,挑選出其中最典型、考察頻率最高、最具代表性的真題,做到難度適宜,兼顧各層次讀者的需求,同時(shí)對(duì)真題進(jìn)行知識(shí)點(diǎn)的分門別類,做到層次清晰、條理分明、答案簡(jiǎn)單明了。最終形成了這樣一本《MySQL程序員面試筆試寶典》。本書特點(diǎn)鮮明,所選真題以及寫作手法具有以下特點(diǎn):
第一,考察率高:本書中所選真題絕非泛泛之輩,其內(nèi)容全是數(shù)據(jù)庫(kù)程序員面試筆試常考點(diǎn),例如數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)、操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)結(jié)構(gòu)與算法、海量數(shù)據(jù)處理等。
第二,行業(yè)代表性強(qiáng):本書中所選真題全部來自于典型知名企業(yè),它們是行業(yè)的風(fēng)向標(biāo),代表了行業(yè)的高水準(zhǔn),其中絕大多數(shù)真題因?yàn)轭}目難易適中,而且具有非常好的區(qū)分度,通常會(huì)被眾多中小企業(yè)全盤照搬,具有代表性。
第三,答案詳盡:本書對(duì)每一道題目都有非常詳細(xì)的解答,庖丁解牛,不只是告訴讀者答案,還提供了參考答案。授之以魚的同時(shí)還授之以漁,不僅告訴答案,還告訴讀者同類型題目以后再遇到了該如何解答。
第四,分類清晰、調(diào)理分明:本書對(duì)各個(gè)知識(shí)點(diǎn)都進(jìn)行了歸納分類,這種寫法有利于讀者針對(duì)個(gè)人實(shí)際情況做到有的放矢,重點(diǎn)把握。
由于圖書的篇幅所限,我們沒法將所有的程序員面試筆試真題內(nèi)容都寫在書稿中,鑒于此,我們?cè)虫轮以诠俜骄W(wǎng)站(www.yuanyuanba.com)上提供了一個(gè)讀者交流平臺(tái),讀者朋友們可以在該網(wǎng)站上上傳各類面試筆試真題,也可以查找到自己所需要的知識(shí),同時(shí),讀者朋友們也可以向本平臺(tái)提供當(dāng)前最新、最熱門的程序員面試筆試題、面試技巧、程序員生活等相關(guān)材料。除此以外,我們還建立了公眾號(hào):猿媛之家,作為對(duì)外消息發(fā)布平臺(tái),以期最大限度地滿足讀者需要。歡迎讀者關(guān)注探討新技術(shù)。
感謝在我們成長(zhǎng)道路上幫助我們的人,他們是父母、親人、同事、朋友、同學(xué)等人,無論我們遇到了多大的挫折與困難,他們對(duì)我們都能不離不棄,一如既往地支持與幫助我們,使我們能夠開開心心地度過每一天。在此對(duì)以上所有人一并致以最衷心的感謝。
由于編者水平有限,書中不足之處在所難免,還望讀者見諒。讀者如果發(fā)現(xiàn)問題或是有此方面的困惑,都可以通過郵箱yuancoder@foxmail.com聯(lián)系我們。
猿媛之家
李華榮,中國(guó)科學(xué)技術(shù)大學(xué)軟件工程碩士,獲計(jì)算機(jī)四級(jí)數(shù)據(jù)庫(kù)工程師認(rèn)證,OCM大師認(rèn)證,長(zhǎng)期從事Oracle數(shù)據(jù)庫(kù)的研究,具有豐富的開發(fā)和維護(hù)經(jīng)驗(yàn),熱衷技術(shù)分享。Oracle甲骨文科技有限公司高級(jí)產(chǎn)品架構(gòu)工程師,OCP和OCM講師。
前言
上篇 面試筆試經(jīng)驗(yàn)技巧篇
第1章 求職經(jīng)驗(yàn)分享2
1.1 踩別人沒有踩過的坑,走別人沒有走過的路2
1.2 只要肯鉆研,就能求職成功3
1.3 普通DBA的逆襲經(jīng)驗(yàn)4
第2章 數(shù)據(jù)庫(kù)程序員的求職現(xiàn)狀6
2.1 當(dāng)前市場(chǎng)對(duì)于數(shù)據(jù)庫(kù)程序員的需求如何?待遇如何?6
2.2 數(shù)據(jù)庫(kù)程序員有哪些可供選擇的職業(yè)發(fā)展道路?7
2.3 當(dāng)企業(yè)在招聘時(shí),對(duì)數(shù)據(jù)庫(kù)程序員通常有何要求?7
2.4 數(shù)據(jù)庫(kù)程序員的日常工作是什么?9
2.5 要想成為一名出色的數(shù)據(jù)庫(kù)程序員,需要掌握哪些必備的知識(shí)?10
2.6 各類數(shù)據(jù)庫(kù)求職及市場(chǎng)使用情況12
第3章 如何應(yīng)對(duì)程序員面試筆試?14
3.1 如何巧妙地回答面試官的問題?14
3.2 如何回答技術(shù)性問題?15
3.3 如何回答非技術(shù)性問題?17
3.4 在被企業(yè)拒絕后是否可以再申請(qǐng)?17
3.5 如何應(yīng)對(duì)自己不會(huì)回答的問題?18
3.6 如何應(yīng)對(duì)面試官的“激將法”語言?18
3.7 如何處理與面試官持不同觀點(diǎn)這個(gè)問題?19
3.8 什么是職場(chǎng)暗語?19
下篇 面試筆試經(jīng)驗(yàn)技巧篇
第4章 數(shù)據(jù)庫(kù)基本理論24
4.1 什么是范式和反范式?24
4.2 事務(wù)的概念及其4個(gè)特性是什么?35
4.3 事務(wù)的常見分類有哪些?36
4.4 什么是XA事務(wù)?37
4.5 事務(wù)的4種隔離級(jí)別(Isolation Level)分別是什么?38
4.6 Oracle、MySQL和SQL Server中的事務(wù)隔離級(jí)別分別有哪些?40
4.7 什么是CAP定理(CAP theorem)?43
第5章 基礎(chǔ)部分45
5.1 MySQL數(shù)據(jù)庫(kù)有什么特點(diǎn)?45
5.2 如何確定MySQL是否處于運(yùn)行狀態(tài)?如何開啟MySQL服務(wù)?46
5.3 如何獲取表內(nèi)所有列的名稱和類型?47
5.4 如何創(chuàng)建表?如何刪除表?48
5.5 如何創(chuàng)建和刪除數(shù)據(jù)庫(kù)?52
5.6 如何查看當(dāng)前數(shù)據(jù)庫(kù)里有哪些用戶?53
5.7 如何查看創(chuàng)建的索引及索引類型等信息?53
5.8 如何查看數(shù)據(jù)庫(kù)的版本、當(dāng)前登錄用戶和當(dāng)前的數(shù)據(jù)庫(kù)名稱?54
5.9 MySQL有哪些常用日期和時(shí)間函數(shù)?55
5.10 MySQL有哪些數(shù)據(jù)類型?57
5.11 MySQL中l(wèi)imit的作用是什么?69
5.12 如何對(duì)一張表同時(shí)進(jìn)行查詢和更新?70
5.13 MySQL中如何在表的指定位置添加列?70
5.14 MySQL中LENGTH和CHAR_LENGTH的區(qū)別是什么?71
5.15 函數(shù)FROM_UNIXTIME和UNIX_TIMESTAMP的作用分別是什么?71
5.16 真題72
第6章 維護(hù)79
6.1 在MySQL中,如何查看表的詳細(xì)信息,例如存儲(chǔ)引擎、行數(shù)、
更新時(shí)間等?79
6.2 如何管理MySQL多實(shí)例?81
6.3 什么是間隙(Next-Key)鎖?83
6.4 MySQL有哪些命令可以查看鎖?83
6.5 MySQL中SQL Mode的作用是什么?91
6.6 什么是MySQL的套接字文件?94
6.7 如何查看和修改系統(tǒng)參數(shù)?95
6.8 查看當(dāng)前使用的配置文件my.cnf的方法和步驟有哪些?97
6.9 MySQL有哪幾類日志文件?99
6.10 MySQL支持事務(wù)嗎?105
6.11 如何提高M(jìn)ySQL的安全性?107
6.12 什么是MySQL的復(fù)制(Replication)?108
6.13 Oracle和MySQL中的分組(GROUP BY)問題110
6.14 MySQL的分區(qū)表115
6.15 MySQL有幾種存儲(chǔ)引擎(表類型)?各自有什么區(qū)別?117
6.16 如何批量更改MySQL引擎?128
6.17 MySQL InnoDB引擎類型的表有哪兩類表空間模式?它們各有什么
優(yōu)缺點(diǎn)?129
6.18 MySQL有哪幾個(gè)默認(rèn)數(shù)據(jù)庫(kù)?130
6.19 MySQL區(qū)分大小寫嗎?132
6.20 MySQL中的字符集132
6.21 如何解決MySQL中文亂碼問題?136
6.22 MySQL原生支持的備份方式及種類有哪些?136
6.23 真題139
第7章 索引152
7.1 MySQL中的索引有哪些分類?152
7.2 MySQL中索引的使用原則有哪些?152
7.3 什么是覆蓋索引?154
7.4 什么是哈希索引?154
7.5 什么是自適應(yīng)哈希索引(Adaptive Hash Index)?156
7.6 什么是前綴索引?157
7.7 什么是全文(FULLTEXT)索引?158
7.8 什么是空間(SPATIAL)索引?161
7.9 為什么索引沒有被使用?162
7.10 真題163
第8章 優(yōu)化171
8.1 MySQL如何查看執(zhí)行計(jì)劃?執(zhí)行計(jì)劃中每列的含義分別是什么?171
8.2 使用show profile分析SQL語句性能消耗179
8.3 MySQL中CHECK、OPTIMIZE和ANALYZE的作用分別是什么?182
8.4 如何對(duì)MySQL進(jìn)行優(yōu)化?183
8.5 如何對(duì)SQL語句進(jìn)行跟蹤(trace)?188
8.6 MySQL中的隱式類型轉(zhuǎn)換(Implicit type conversion)189
8.7 常見的SQL Hint(提示)有哪些?191
8.8 如何查看SQL的執(zhí)行頻率?191
8.9 如何定位執(zhí)行效率較低的SQL語句?192
8.10 如何對(duì)MySQL的大表優(yōu)化?192
第9章 操作系統(tǒng)194
9.1 進(jìn)程管理194
9.1.1 進(jìn)程與線程有什么區(qū)別?194
9.1.2 內(nèi)核線程和用戶線程的區(qū)別?195
9.2 內(nèi)存管理195
9.2.1 內(nèi)存管理有哪幾種方式?195
9.2.2 什么是虛擬內(nèi)存?196
9.2.3 什么是內(nèi)存碎片?什么是內(nèi)碎片?什么是外碎片?197
9.2.4 虛擬地址、邏輯地址、線性地址、物理地址有什么區(qū)別?197
9.2.5 Cache替換算法有哪些?198
9.3 用戶編程接口199
9.3.1 庫(kù)函數(shù)調(diào)用與系統(tǒng)調(diào)用有什么不同?199
9.3.2 靜態(tài)鏈接與動(dòng)態(tài)鏈接有什么區(qū)別?200
9.3.3 靜態(tài)鏈接庫(kù)與動(dòng)態(tài)鏈接庫(kù)有什么區(qū)別?200
第10章 計(jì)算機(jī)網(wǎng)絡(luò)與通信201
10.1 網(wǎng)絡(luò)模型201
10.1.1 OSI七層模型是什么?201
10.1.2 TCP/IP模型是什么?202
10.1.3 B/S與C/S有什么區(qū)別?203
10.2 網(wǎng)絡(luò)設(shè)備203
10.2.1 交換機(jī)與路由器有什么區(qū)別?203
10.2.2 路由表的功能有哪些?204
10.3 網(wǎng)絡(luò)協(xié)議205
10.3.1 TCP和UDP的區(qū)別有哪些?205
10.3.2 什么是ARP/RARP?205
10.3.3 IP Phone的原理是什么?都用了哪些協(xié)議?206
10.3.4 Ping命令是什么?206
10.3.5 基本的HTTP流程有哪些?207
10.4 網(wǎng)絡(luò)其他問題207
10.4.1 常用的網(wǎng)絡(luò)安全防護(hù)措施有哪些?207
10.4.2 相比IPv4,IPv6有什么優(yōu)點(diǎn)?209