本文起源於有同窗留言回覆說想了解下MySQL DBA面試時可能涉及到的知識要點,那咱們今天就來大概談談吧。mysql
MySQL DBA職位最近幾年特別熱門,很多朋友讓我幫忙推薦什麼的,也有不少公司找不到合適的DBA。緣由很簡單,優秀的人才要麼被大公司圈起來了,要麼被創業公司高薪挖走,若是你既不是大公司,又不能出得起高價錢的土豪公司,想要找到優秀人才的概率堪比買彩票中獎的機率,哈哈。面試
本文能夠做爲MySQL DBA面試官,以及候選人的雙向參考 :)sql
接下來先說下我以往在作MySQL DBA面試時的過程(套路):數據庫
1.先自我介紹後,再讓候選人花2-5分鐘作下自我簡介安全
有很多人可能對自我簡介這個環節嗤之以鼻,以爲畫蛇添足,尤爲是技術能力相對較好的更是如此。其實否則,經過短短2-5分鐘的自我簡介,很快就能考察出候選人是否有用心準備本次面試,其概括總結能力,以及我的自信心等多方面信息。服務器
所以,若是候選人看中此次面試機會的話,還請好好作下功課,作足準備。好比了解下目標公司的大體狀況,主營業務,產品特點。可能的話,找同行打聽可能的面試官背景信息,沒準是校友、之前在同一家公司呆過、或者有其餘共同點,這可能會使得面試過程更爲順利。網絡
有心的候選人在面試官自我介紹時,就能夠趁機也考察對方的狀況。一般第一輪面試官極可能是你將來的直接主管,從面試過程當中你和對方的溝通交流是否順利也可預見到將來工做上配合的順利程度。數據結構
2.暖身完,就開始進入主題,從候選人的簡歷入手,挑選其中感興趣的關鍵點逐條交流,有幾個要點:架構
和應聘職位關聯性較高的技術要素,須要逐個過一遍,大體瞭解候選人對於這些技術要素的掌握程度;運維
挑選2-3個技術關鍵點,對候選人窮追猛打深刻探討,瞭解其真正的掌握程度,是泛泛的瞭解,仍是知其因此然的那種,由此也能夠考察候選人的學習方法、心態,是隨波逐流抑或專精專一。
候選人每次跳槽經歷也須要關注,究竟何種緣由致使跳槽,每次跳槽是否其職業層次也跟着提升。由此考擦候選人的職業規劃是否清晰,是否過於隨性(任性)。不然的話,可能在下一家公司也待不了多久就會由於各類緣由(最多見的就是薪資、或者對主管不服氣)而跳槽。
候選人簡歷中特地說起的重點項目、事件、榮譽,也能夠作深刻的交流。
3.重點技術要素考察完畢,能夠聊聊職業發展等其餘方面的話題,好比
爲何選擇我司;
若是還有其餘公司的機會,如何權衡選擇哪一個offer,最主要的判斷標準是什麼;
指望什麼樣的工做環境,團隊環境,以及哪一種風格的主管;
對什麼事情最在意,或最不在意;
除了薪資福利,對公司、工做的指望是怎樣的。
具體到技術實力考查上,一般能夠關注幾個要點:
基礎知識,尤爲是一些理論知識,例如:
MySQL有哪些索引類型,這是個半開放式命題;
從數據結構角度可分爲B+樹索引、哈希索引、以及不經常使用的FULLTEXT索引(如今MyISAM和InnoDB引擎都支持了)和R-Tree索引(用於對GIS數據類型建立SPATIAL索引);
從物理存儲角度可分爲彙集索引(clustered index)
、非彙集索引(non-clustered index)
;
從邏輯角度可分爲主鍵索引、普通索引,或者單列索引、多列索引、惟一索引、非惟一索引等等。須要掌握這些不一樣概念之間的區別,例如主鍵索引和惟一索引的區別是什麼
。
爲何InnoDB表最好要有自增列作主鍵;
爲何須要設置雙1才能保證主從數據的一致性;
有幾種binlog格式*,及其區別是什麼;
如何確認MySQL replication真正的複製延遲是多少;
有過哪些印象深入的實踐經驗。
經過考察候選人的基礎知識掌握程度,可側面反映候選人對學習的態度,是否僅淺層面的瞭解。
核心關鍵技術能力,例如:
怎麼作的MySQL備份恢復方案及策略,爲何那麼作,用什麼工具;
MySQL主從複製的具體原理是什麼,實際使用過程當中,遇到過哪些坑,怎麼解決的;
對一個大表作在線DDL,怎麼進行實施的才能儘量下降影響;
MyISAM和InnoDB都有哪些不一樣之處;
InnoDB的體系結構是否能講的清楚,至少說出個大概;
假設如今服務器負載很高,都有哪些性能問題排查思路,以及優化的方案;
什麼是死鎖,什麼是鎖等待,如何優化;
關於MySQL及InnoDB優化,講講本身的看法或者實踐經驗;
如何肯定及實施MySQL高可用方案,不一樣方案的優缺點對比;
必定規模的MySQL自動化運維經驗如何;
在SCHEMA設計方面的經驗如何;
基於MySQL所作過的一些數據庫架構方案設計、實施經驗。
經過考察候選人對這些核心關鍵技術的掌握程度,可知曉候選人對深層次知識的掌握狀況,除了實踐,理論方面掌握了多少。
發展潛力以及學習能力,例如:
對Linux的掌握程度,以及
Shell
、Python
、Perl
等經常使用運維開發語言的掌握程度;對服務器硬件設備,存儲設備的瞭解程度;
對信息安全,網絡知識的瞭解程度;
其餘語言,例如
C
、C++
、JAVA
、PHP
、GO
是否有所瞭解。
這些知識對通常的DBA可能不過重要,但想要成爲資深DBA或數據庫架構師的話,這些知識是必不可少的。