MySQL 面试,必须掌握的 8 大核心点
上周末和在北京的哥們國仔涮火鍋,席間聊起了最近面試的經(jīng)歷。
他說想換工作的原因很簡單,就是要漲工資,原來的公司呆了兩年多,薪資浮動不超過 500 元。而身邊跳槽的那些同事,薪資都已經(jīng)是自己的 2 倍了。
在準(zhǔn)備面試的過程中,國仔坦言道還蠻辛酸的。
白天要上班敲代碼,晚上甚至?xí)影?#xff0c;導(dǎo)致搜集面試題目的時間都沒有,而且網(wǎng)上好多都是千篇一律的搬來搬去的文章,感覺面試官都不屑于問到類似的問題。
工作后整個人都有點(diǎn)懶了,知道怎么用代碼實(shí)現(xiàn)卻不再關(guān)注為什么要這么使用。但是面試時候好像更關(guān)注 why 多于 how。有些問題甚至工作時都沒遇到過。
說到這兒,國仔已經(jīng)吃完了一盤羊肉,鏡片被熱氣蒙上了一層薄薄的霧。國仔取下眼鏡一邊用衣角擦拭,一邊繼續(xù)念叨:
我覺得獲得高薪的關(guān)鍵:就是高效的準(zhǔn)備面試。如果當(dāng)初有個人能給我一份總結(jié)好的面試錦囊,我就不至于慌成那樣。
對于程序員來說,面試內(nèi)容一般分為兩個部分:編程面試題部分 + 數(shù)據(jù)庫面試題部分。
據(jù)不完全調(diào)查,作為數(shù)據(jù)庫中的主流選擇 MySQL 的薪資待遇正在逐年增加,而且似乎不僅僅是程序員在學(xué),就連很多產(chǎn)品經(jīng)理和運(yùn)營人也開始學(xué)習(xí) MySQL 去分析數(shù)據(jù)。
△圖來自獵聘網(wǎng)
為了讓大家能避開國仔面試時的苦惱,我們特意邀請到兩位有著 10 年工作經(jīng)驗(yàn)的技術(shù)老兵,前前后后大概花了三個多月的時間,改了 6 個版本,最終形成了這套 MySQL 面試題,來幫助準(zhǔn)備面試的朋友們。
內(nèi)容介紹
對于技術(shù)面試來說,考察的核心包含以下兩個特點(diǎn):
考察的知識點(diǎn)廣,因?yàn)椴煌墓竞筒煌拿嬖嚬偌寄苤R結(jié)構(gòu)是不同的,所以所關(guān)注的問題和面試內(nèi)容也是不同的,所以具備面試知識點(diǎn)廣的特點(diǎn);
考察的知識點(diǎn)較深入,以阿里巴巴為例,這些大廠的面試都是類似的,通常從一個大的面試點(diǎn)切入,然后層層深入,直到問到你不會為止,比如,你了解哪些數(shù)據(jù)庫引擎?這個數(shù)據(jù)庫引擎的特點(diǎn)是什么?這個數(shù)據(jù)庫引擎是如何存儲數(shù)據(jù)的?為什么要采用這種存儲方式?等等。
所以針對以上兩個問題,作者結(jié)合自己 10?余年的工作和面試的經(jīng)驗(yàn),經(jīng)過討論和修改,最終制定了八大模塊,匯總并介紹 MySQL 中的典型面試問題,它包含的內(nèi)容如下。
第一部分:通用模塊。此部分對 MySQL 整體概念、執(zhí)行流程、數(shù)據(jù)庫引擎、查詢緩存、表空間、回表查詢、數(shù)據(jù)類型間的區(qū)別、內(nèi)存表、臨時表、刪除表的 n 種方式、枚舉、視圖、數(shù)據(jù)恢復(fù)等相關(guān)知識點(diǎn)對應(yīng)的面試題進(jìn)行解答。
第二部分:索引模塊。索引的好壞直接影響數(shù)據(jù)庫的性能,所以索引的面試題也是面試中必問的問題,此部分為索引對應(yīng)的面試題合集。
第三部分:事務(wù)模塊。事務(wù)決定了程序的穩(wěn)定性,在 MySQL 中的地位也是首屈一指,也是面試中必問的面試題,此部分為事務(wù)對應(yīng)的面試題合集。
第四部分:鎖。鎖包括:全局鎖、表鎖、行鎖、死鎖、樂觀鎖、悲觀鎖等,不同的數(shù)據(jù)庫引擎支持的鎖支持粒度也是不同的,此部分的面試題,讓你徹底搞定鎖相關(guān)的面試題。
第五部分:日志。日志看似不起眼,卻是 MySQL 主備同步和容災(zāi)恢復(fù)以及問題排除的關(guān)鍵,當(dāng)然也是面試中必問的問題,這部分會對不同的數(shù)據(jù)庫引擎中的重點(diǎn)日志,進(jìn)行詳細(xì)的介紹。
第六部分:MySQL 操作命令和內(nèi)置函數(shù)。MySQL 的操作命令,對于程序員或者 DBA 來說也是必須具備的一項(xiàng)技能,比如,用戶和權(quán)限的創(chuàng)建、數(shù)據(jù)庫相關(guān)信息的查詢等,都離不開對 MySQL 命令行的掌握。對內(nèi)置函數(shù)的掌握程度,代表了你對 MySQL 的掌握程度,善用 MySQL 提供的內(nèi)置函數(shù),會讓你有事半功倍的效果,內(nèi)置函數(shù)也是筆試中必考的面試題。
第七部分:性能優(yōu)化和分布式。性能優(yōu)化和分布式是面試中決定你高度的關(guān)鍵指標(biāo),其中性能優(yōu)化包括了慢查詢的分析和處理,對分布式的掌握體現(xiàn)了你的技術(shù)深度。
第八部分:開放性問題。很多大公司最后也會問一下沒有標(biāo)準(zhǔn)答案的開放性問題,以考察面試者的技術(shù)能力邊界和對待問題的分析思路,這部分助你更平穩(wěn)的獲得 offer。
對應(yīng)的知識圖譜如下:
作者介紹
老王:資深面試官/阿里云社區(qū)認(rèn)證專家
十余年編程從業(yè)經(jīng)驗(yàn),現(xiàn)上市公司技術(shù)研發(fā)經(jīng)理,曾就職于 360,有著豐富的大型系統(tǒng)設(shè)計(jì)、開發(fā)和調(diào)優(yōu)的經(jīng)驗(yàn),在不斷探索和學(xué)習(xí)的過程中,積累了寶貴的編程與面試經(jīng)驗(yàn)。
張建:十余年編程從業(yè)經(jīng)驗(yàn)/現(xiàn)任上市公司項(xiàng)目經(jīng)理
曾就職新華保險通訊事業(yè)部、汽車之家。有著豐富的工業(yè)制造系統(tǒng)、呼叫中心、互聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)、開發(fā)和調(diào)優(yōu)經(jīng)驗(yàn)。
曾主導(dǎo)設(shè)計(jì)并參與了汽車之家二手車BU單體應(yīng)用微服務(wù)化改造,有著豐富的微服務(wù)架構(gòu)經(jīng)驗(yàn)。
掃碼查看《程序員的 MySQL 面試金典》
▼
你能學(xué)到什么?
扎實(shí)的 MySQL 基礎(chǔ):MySQL 內(nèi)部執(zhí)行流程、查詢緩存、數(shù)據(jù)庫引擎、表空間、表收縮、回表查詢、刪除數(shù)據(jù)恢復(fù)、視圖、內(nèi)存表和臨時表的區(qū)別等。
索引、事務(wù)、內(nèi)置函數(shù)等模塊的面試題匯總與解析。
全局鎖、表鎖、行鎖、死鎖、樂觀鎖、悲觀鎖等面試題匯總與解析。
MySQL 中主從部署原理和容災(zāi)恢復(fù)的面試題和知識點(diǎn)解析。
MySQL 慢查詢處理以及高性能方面的面試題匯總與解析。
MySQL 中開放性問題的匯總與解析。
適宜人群
準(zhǔn)備跳槽的后端工程師(初、中、高級)
自學(xué)編程準(zhǔn)備找工作的準(zhǔn)程序員
在校學(xué)生(大學(xué)生/研究生方向)
總結(jié)
以上是生活随笔為你收集整理的MySQL 面试,必须掌握的 8 大核心点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 嗯,查询滑动窗口最大值的这4种方法不错.
- 下一篇: Java中的一些坑,汇总篇(2万字)