本書是一本講解MySQL程序員面試筆試的百科書,在寫法上,除了講解如何解答MySQL程序員面試筆試問題以外,還引入了相關(guān)知識點輔以說明,讓讀者能夠更加容易地理解。 本書將MySQL程序員面試筆試過程中各類知識點一網(wǎng)打盡,在廣度上,通過各種渠道,搜集了近3年來典型IT企業(yè)針對MySQL數(shù)據(jù)庫崗位的筆試面試涉及的知識點,包括但不限于MySQL數(shù)據(jù)庫、計算機(jī)網(wǎng)絡(luò)、操作系統(tǒng)等,所選擇真題均為企業(yè)招聘使用題目。在講解的深度上,本書由淺入深地分析每一個知識點,并提煉歸納,同時,引入相關(guān)知識點,加以深度剖析,讓讀者不僅能夠理解這個知識點,還能在遇到相似問題的時候,也能游刃有余地解決,而這些內(nèi)容是其他同類書籍所沒有的。本書對知識點進(jìn)行歸納分類,結(jié)構(gòu)合理,條理清晰,對于讀者進(jìn)行學(xué)習(xí)與檢索意義重大。
MySQL數(shù)據(jù)庫相關(guān)領(lǐng)域面試、筆試、經(jīng)驗心得、算法、考點、難點、真題解析一應(yīng)俱全,獲取高薪必備
程序員求職是當(dāng)前社會的一個熱點,而市面上有很多關(guān)于程序員求職的書籍,例如《程序員代碼面試指南》(左程云著)、《劍指offer》(何海濤著)、《程序員面試筆試寶典》(何昊編著)、《Java程序員面試筆試寶典》(何昊編著)、《編程之美》(《編程之美》小組著)、《編程珠璣》(Jon Bentley 著)等,它們都是針對基礎(chǔ)知識的講解,各有側(cè)重點,而且在市場上反映良好,但是,我們發(fā)現(xiàn),當(dāng)前市面上沒有一本專門針對MySQL數(shù)據(jù)庫程序員的面試筆試寶典,很多讀者朋友們向我們反映,他們希望有一本能夠詳細(xì)剖析面試筆試中數(shù)據(jù)庫相關(guān)知識的圖書,雖然網(wǎng)絡(luò)上有一些IT企業(yè)的MySQL數(shù)據(jù)庫面試筆試真題,但這些題大都七拼八湊,毫無系統(tǒng)性可言,而且絕大多數(shù)都是一些博主自己做的,答案簡單,準(zhǔn)確性不高,即使偶爾答案正確了,也沒有詳細(xì)的講解,這就導(dǎo)致讀者做完了這些真題,根本就不知道自己做得是否正確,完全是徒勞。如果下一次這個題目再次被考察,自己還是不會。更有甚者,網(wǎng)上的答案很有可能是錯誤的,此時還會誤導(dǎo)讀者。
針對這種情況,我們創(chuàng)作團(tuán)隊經(jīng)過精心準(zhǔn)備,從互聯(lián)網(wǎng)上的海量MySQL數(shù)據(jù)庫面試筆試真題中,選取了當(dāng)前典型企業(yè)(包括微軟、谷歌、百度、騰訊、阿里巴巴、360、小米等)的面試筆試真題,挑選出其中最典型、考察頻率最高、最具代表性的真題,做到難度適宜,兼顧各層次讀者的需求,同時對真題進(jìn)行知識點的分門別類,做到層次清晰、條理分明、答案簡單明了。最終形成了這樣一本《MySQL程序員面試筆試寶典》。本書特點鮮明,所選真題以及寫作手法具有以下特點:
第一,考察率高:本書中所選真題絕非泛泛之輩,其內(nèi)容全是數(shù)據(jù)庫程序員面試筆試?键c,例如數(shù)據(jù)庫基礎(chǔ)知識、操作系統(tǒng)、計算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)結(jié)構(gòu)與算法、海量數(shù)據(jù)處理等。
第二,行業(yè)代表性強(qiáng):本書中所選真題全部來自于典型知名企業(yè),它們是行業(yè)的風(fēng)向標(biāo),代表了行業(yè)的高水準(zhǔn),其中絕大多數(shù)真題因為題目難易適中,而且具有非常好的區(qū)分度,通常會被眾多中小企業(yè)全盤照搬,具有代表性。
第三,答案詳盡:本書對每一道題目都有非常詳細(xì)的解答,庖丁解牛,不只是告訴讀者答案,還提供了參考答案。授之以魚的同時還授之以漁,不僅告訴答案,還告訴讀者同類型題目以后再遇到了該如何解答。
第四,分類清晰、調(diào)理分明:本書對各個知識點都進(jìn)行了歸納分類,這種寫法有利于讀者針對個人實際情況做到有的放矢,重點把握。
由于圖書的篇幅所限,我們沒法將所有的程序員面試筆試真題內(nèi)容都寫在書稿中,鑒于此,我們猿媛之家在官方網(wǎng)站(www.yuanyuanba.com)上提供了一個讀者交流平臺,讀者朋友們可以在該網(wǎng)站上上傳各類面試筆試真題,也可以查找到自己所需要的知識,同時,讀者朋友們也可以向本平臺提供當(dāng)前最新、最熱門的程序員面試筆試題、面試技巧、程序員生活等相關(guān)材料。除此以外,我們還建立了公眾號:猿媛之家,作為對外消息發(fā)布平臺,以期最大限度地滿足讀者需要。歡迎讀者關(guān)注探討新技術(shù)。
感謝在我們成長道路上幫助我們的人,他們是父母、親人、同事、朋友、同學(xué)等人,無論我們遇到了多大的挫折與困難,他們對我們都能不離不棄,一如既往地支持與幫助我們,使我們能夠開開心心地度過每一天。在此對以上所有人一并致以最衷心的感謝。
由于編者水平有限,書中不足之處在所難免,還望讀者見諒。讀者如果發(fā)現(xiàn)問題或是有此方面的困惑,都可以通過郵箱yuancoder@foxmail.com聯(lián)系我們。
猿媛之家
李華榮,中國科學(xué)技術(shù)大學(xué)軟件工程碩士,獲計算機(jī)四級數(shù)據(jù)庫工程師認(rèn)證,OCM大師認(rèn)證,長期從事Oracle數(shù)據(jù)庫的研究,具有豐富的開發(fā)和維護(hù)經(jīng)驗,熱衷技術(shù)分享。Oracle甲骨文科技有限公司高級產(chǎn)品架構(gòu)工程師,OCP和OCM講師。
前言
上篇 面試筆試經(jīng)驗技巧篇
第1章 求職經(jīng)驗分享2
1.1 踩別人沒有踩過的坑,走別人沒有走過的路2
1.2 只要肯鉆研,就能求職成功3
1.3 普通DBA的逆襲經(jīng)驗4
第2章 數(shù)據(jù)庫程序員的求職現(xiàn)狀6
2.1 當(dāng)前市場對于數(shù)據(jù)庫程序員的需求如何?待遇如何?6
2.2 數(shù)據(jù)庫程序員有哪些可供選擇的職業(yè)發(fā)展道路?7
2.3 當(dāng)企業(yè)在招聘時,對數(shù)據(jù)庫程序員通常有何要求?7
2.4 數(shù)據(jù)庫程序員的日常工作是什么?9
2.5 要想成為一名出色的數(shù)據(jù)庫程序員,需要掌握哪些必備的知識?10
2.6 各類數(shù)據(jù)庫求職及市場使用情況12
第3章 如何應(yīng)對程序員面試筆試?14
3.1 如何巧妙地回答面試官的問題?14
3.2 如何回答技術(shù)性問題?15
3.3 如何回答非技術(shù)性問題?17
3.4 在被企業(yè)拒絕后是否可以再申請?17
3.5 如何應(yīng)對自己不會回答的問題?18
3.6 如何應(yīng)對面試官的“激將法”語言?18
3.7 如何處理與面試官持不同觀點這個問題?19
3.8 什么是職場暗語?19
下篇 面試筆試經(jīng)驗技巧篇
第4章 數(shù)據(jù)庫基本理論24
4.1 什么是范式和反范式?24
4.2 事務(wù)的概念及其4個特性是什么?35
4.3 事務(wù)的常見分類有哪些?36
4.4 什么是XA事務(wù)?37
4.5 事務(wù)的4種隔離級別(Isolation Level)分別是什么?38
4.6 Oracle、MySQL和SQL Server中的事務(wù)隔離級別分別有哪些?40
4.7 什么是CAP定理(CAP theorem)?43
第5章 基礎(chǔ)部分45
5.1 MySQL數(shù)據(jù)庫有什么特點?45
5.2 如何確定MySQL是否處于運行狀態(tài)?如何開啟MySQL服務(wù)?46
5.3 如何獲取表內(nèi)所有列的名稱和類型?47
5.4 如何創(chuàng)建表?如何刪除表?48
5.5 如何創(chuàng)建和刪除數(shù)據(jù)庫?52
5.6 如何查看當(dāng)前數(shù)據(jù)庫里有哪些用戶?53
5.7 如何查看創(chuàng)建的索引及索引類型等信息?53
5.8 如何查看數(shù)據(jù)庫的版本、當(dāng)前登錄用戶和當(dāng)前的數(shù)據(jù)庫名稱?54
5.9 MySQL有哪些常用日期和時間函數(shù)?55
5.10 MySQL有哪些數(shù)據(jù)類型?57
5.11 MySQL中l(wèi)imit的作用是什么?69
5.12 如何對一張表同時進(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ì)信息,例如存儲引擎、行數(shù)、
更新時間等?79
6.2 如何管理MySQL多實例?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有幾種存儲引擎(表類型)?各自有什么區(qū)別?117
6.16 如何批量更改MySQL引擎?128
6.17 MySQL InnoDB引擎類型的表有哪兩類表空間模式?它們各有什么
優(yōu)缺點?129
6.18 MySQL有哪幾個默認(rèn)數(shù)據(jù)庫?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í)行計劃?執(zhí)行計劃中每列的含義分別是什么?171
8.2 使用show profile分析SQL語句性能消耗179
8.3 MySQL中CHECK、OPTIMIZE和ANALYZE的作用分別是什么?182
8.4 如何對MySQL進(jìn)行優(yōu)化?183
8.5 如何對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 如何對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 庫函數(shù)調(diào)用與系統(tǒng)調(diào)用有什么不同?199
9.3.2 靜態(tài)鏈接與動態(tài)鏈接有什么區(qū)別?200
9.3.3 靜態(tài)鏈接庫與動態(tài)鏈接庫有什么區(qū)別?200
第10章 計算機(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)點?209