一個崗位做久了,自然而然就會有做面試官的機會。有時候是給自己公司,有時候是給兄弟公司或者幫朋友面人。從一開始面別人不知道問什么,到后來能夠根據崗位要求來靈活決定問題,我也經歷了一個過程。這期間當然也有自己在面試者面前尷尬的情況。有關做面試官問什么,我有這些心得。
問題類型1:體系結構
不管什么數據庫,做DBA都是必須要了解這個數據庫的體系結構的。例如Oracle的實例包含內存區域,SQL Server的存儲引擎是怎么回事,PG都有哪些后臺進程,通過這些問題可以了解一個面試者對這個數據庫的基礎了解程度。當然,也有一些面試者會說,平時不會全都記住,但是會關注其中一部分。不妨讓他們展開來說說,這其中仍然有很多東西可以深挖。
同時要結合數據庫實際情況有所側重,比如都是集群數據庫那么多問一些RAC相關的問題,例如ASM、Cache Fusion。如果是有多地災備的環境,就多問一些Dataguard相關的內容。對基礎知識和體系結構的理解,會一定程度上反映出一個人的真實水平。
比較特殊的一種情況是,面試者可能是之前從事開發,想要轉型來面試DBA崗位,也就是我們常說的開發轉運維。這種情況可能會出現,面試者對數據體系結構里的某些東西特別熟悉,對其他沒接觸過的沒有概念。這種事情就要酌情處理,如果崗位要求不是那么高,只是找個初級DBA的話,這種情況是可以接受的。
問題類型2:數據庫安裝與配置
作為DBA,安裝數據庫是動手能力里面最基礎的。除了比較常見版本的數據庫安裝,我通常會選擇去問數據庫一些常用的參數配置的問題,比如一個OLAP庫,服務器內存64GB,那么哪些參數需要調整,調整的思路是什么樣?通過這些問題,以及面試者的思路,也能夠看出他們實際的對數據庫的理解程度如何。
也可以主動詢問一些開放性問題,比如自己做過哪些數據庫最佳實踐,用的什么樣硬件,為什么這么設計。不同數據庫之間的數據同步是怎么做的?有沒有遇到什么問題,這期間是如何調整的。這類問題不但可以考察面試者的水平,同時也可以自己學到一些東西。
問題類型3:系統優化
這類問題通常是一個不太容易驗證的類型。因為不同的系統可能面臨的問題不一樣,優化也沒有固定的答案。很多時候只能是通過問題來借此考察面試者遇到過的問題的程度以及他對數據某些方面的理解程度。我甚至遇到過對方講述問題和解決過程,可是我自己對這塊幾乎不懂的時候。
這里有一些面試官會有一些誤區,往往喜歡拿著網上的一些冷門問題去問面試者。像Oracle這種已經成長了幾十年的產品,已經非常復雜。很可能一個DBA從事了幾年的管理工作,但是一些冷門的問題并沒有遇到過,對這類問題毫無頭緒。
我曾經遇到過兩個面試官,從網上找的題目照著念,有的答案都是錯的或者只是執著于所謂的標準答案。甚至其中一道題目,疑似我當年貢獻的,題目中的方法后來被我自己推翻了,但是兩個面試官還在執著于那個不夠好的方案。最后連他們在場的兩個領導都有點看不下去了,打斷了他們兩個直接和我溝通。
問題類型4:運維規范
DBA是IT部門一個風險比較高的崗位,有時候一個誤操作就可能給公司帶來很大的損失。尤其是像金融和地產,掌握著大量敏感信息,除了對技術的要求,還需要有很高的職業素養。除了日常的系統操作必須要保障每一次登錄生產環境都能
在我當面試官的時候,最終領導因為這個部分拒掉的人比例比我想象的要高很多。一些乙方的DBA來面甲方崗位的時候,往往會遇到很多各種各樣的合規的問題。之前我們合作方的DBA,來面我們公司的崗位。我問他,如果我要生產環境的數據導入到測試環境,時間又很緊急的情況下,該怎么處理?他的回答是,先導入再和領導說。我告訴他,在公司,所有業務數據要復制必須要通過業務部門許可。流程不正確做的所有事情都是錯的。流程正確,即便影響開發進度,也是正確的做法。
問題類型5:文檔能力
不管在甲方乙方,能夠通過文檔把事情描述清楚,都是必備技能。
通常在面試前一天,我都會要求面試者準備一份自己寫的數據庫技術文檔或者自己的技術博客。通過這些來考察是否能夠具備文檔撰寫的能力。如果面試者工作了很多年,卻幾乎沒寫過技術文檔,這就要對其文檔撰寫能力打一個問號。尤其在崗位交接的時候,一份清晰明確的文檔,可以節省大量的時間,也把運維風險降到最低。
印象很深刻的是,有一位面試者,記憶力非常好。很多東西都存在腦子里,反應也很敏捷。但是我問他提前準備的文檔在哪,他說自己沒有寫文檔的習慣,都是靠腦子記憶。我表示,記憶力好是一件好事,但是往往工作中我們要把自己的東西準確傳遞給其他同事的時候,成文的技術文檔才是公司認可的形式。
問題類型6:職業規劃
我們通常都會被問,你對自己未來職業是怎么規劃的。在求職者和面試官角度,往往又是矛盾的。
求職者希望的都是自己的職業生涯能有突破,不會拘泥于某個崗位某個層級??墒菍γ嬖嚬賮碚f,希望的是團隊穩定,如果一個人想法太多太激進,可能不見得長期做一個崗位,尤其是DBA這種需要穩定性很高的崗位。意識到這個問題之后,我一般會在問題中加一個具體的時間,比如未來3年你的職業規劃是什么樣,能否接受3年內一直在做同一個崗位?,F在的時代,讓一個人長期做一個崗位本身就已經很難,公司和員工簽約一般也是3年左右。此外也會問問,過去兩份工作的離職原因作為參考。
問題類型7:加分項
這類問題通常沒有固定的內容。而我以自己的經歷總結了如下幾個。
懂業務,這個在一些行業是存在硬性要求的,一般來說懂業務對于數據庫運維來說是個很大的加分項,業務會出現什么場景,不同場景對數據庫有哪些挑戰。
編程能力,再具體點就是寫腳本的能力。DBA不一定會去寫特別復雜的腳本,但是會寫一些簡單的腳本,是非常有意義的。
項目管理,甲方的DBA有時候還要兼顧一些基礎設施項目的建設,或者數據庫項目的項目管理。有這方面能力可以為公司節省更多的人力成本。
其他基礎設施知識,一個DBA會和系統、存儲、網絡、中間件都打交道,這些領域的知識不可能做到樣樣精通,但是如果在某一個方面有相關經驗,對于以后的運維來說,是個加分項。
當然,這里面還是有很多東西沒有完全涵蓋,比如寫復雜SQL、存儲過程等等。往往是和DBA的工作量以及組織結構有直接關系。例如之前我在外企,有專門的團隊專門做SQL和存儲過程的開發。
面試,不僅僅是檢驗別人,其實也是一個DBA檢驗自己的一個機會。好的面試官,可以根據面試者的情況動態調整面試問題的難度和范圍,反之只知道照著念問題的面試官,被應聘者打臉的情況也屢見不鮮。每一次面試,當作一次對自己的檢驗和學習,做到見賢思齊,也是一個DBA成長的途徑。




