文章摘要: 之所以說這些問題不應該問中國最好的 DBA 技術團隊在阿里 當時中國最好的 DBA 技術人才都在阿里
阿里妹導讀:知己知彼、百戰不殆,面試也是如此。只有充分了解面試官的思路,才能更好地在面試中充分展現自己。今天,阿里高階技術專家將分享自己作為面試官的心得與體會。如果你是面試者,可以藉此為鏡,對照發現自己的長處與不足,有針對性學習成長;如果你是面試官,相信也能通過他的講述,有所啓發。
招聘是團隊管理者工作中的重要一環。本文會結合自己親身經歷以及接受的招聘培訓,綜合分析怎麼找到我們要的人,也希望可以通過招聘這面鏡子照亮自己,怎樣成為一個更好的工程師。
招聘的目的
當今社會,技術已經成為影響商業成功的關鍵因素,工程師成爲了這些公司最寶貴的財富,沒有優秀的人組成團隊來完成商業目標,公司根本不可能有今天的成就。所以招聘,就是選擇最優秀的人。
招什麼樣的人?
招優秀的人顯然是一個很模糊的概念,我們來度量的時候,我個人認為三個因素是最關鍵的:
工作專案經驗,以及解決疑難問題的能力,畢竟招來的人首先必須很好的完成工作,這是最基本的要求,注意,是很好的完成,不是僅僅完成。
這個概念看起來比較模糊,其實還是比較容易評價的,對計算機相關的專業的知識體系是不是完整,基礎是不是紮實,平常是不是喜歡鑽研,對這個世界充滿好奇心,這幾年走下來,沉澱的速度如何,都是判斷一個人的潛力的方式,注意我們看潛力主要是基於候選人的之前的成長經歷實事求是來看, 過去的優秀經歷才能給未來背書 。潛力和技能的重要性一樣重要,我們不能只看眼前,團隊是需要不斷髮展和前進的,所以我們招人應該面向未來。
軟實力這裏其實包含了性格,執行力,領導力等方方面面,它代表了候選人是否能快速融入團隊,拿到結果,帶領團隊攻城拔寨,激勵和影響身邊的人變得更加優秀等等,軟實力一般 HR 肯定會考察,雖然技術面不會特別去關注,但是從面試的過程中可以看出候選人的溝通能力,以及性格相關的特點,也值得我們注意。
說了這麼多,其實在招人上有一個對比的標杆,就是你招的人是不是 比團隊中同一等級中 50% 的同學優秀 ,如果你覺得沒有他們優秀,那不用糾結,這個候選人不要了,團隊必須不停加入更好的同學,才能變得更加強大。
面試的方法
這裏結合之前的培訓以及自己的真實經歷,講解面試的一些方法。
面試不要做的事
-
問一些知道性的問題比如問知不知道這個 API 幹什麼的,怎麼呼叫,這個命令怎麼用的,知道性的知識,google 一下或者認真看下文件就應該知道。
-
問一些特別複雜的問題比如問一個特別複雜的演算法,問一個很抽象的大問題,短時間內很難給予回答。
-
問一些假設性的問題假設你參與了這個專案,你覺得哪幾個地方需要優化。
之所以說這些問題不應該問,我認為主要是因為這些很難考察到面試者的真實能力,45 分鐘的時間本來就很短,有些問題有可能比較偏,有些問題又過於龐大沒法一下子描述特別清楚,還有一些問題缺乏上下文,讓人摸不到頭腦,所以儘量避免這麼問問題,另外把握一個重要原則, 不要在面試中試圖證明別人不如自己 ,毫無意義,人無完人,總有覆蓋不到的地方,按照這個規則招聘,會錯過很多優秀的人才。
面試應該做的事
比如面試移動開發者,面試官應該認真看下其做過的 App,具體的工作是什麼,準備一些相關的問題,這裏就可以看出來之前工作中的積累是什麼,有多深。
針對專案經驗和一些學習的經驗上面,應該問拿到問題以後解決思路是什麼,在什麼場景下為什麼這麼做,這裏根據面試者的方案,分析的方法論,就可以大致瞭解面試者是否聰明,知識面是不是夠廣,遇到問題時會不會舉一反三。
具體可以舉個簡單的例子,很多同學說自己做過架構,然後都會講自己做了一個解耦和分層的框架,其實這類框架 iOS 很多,外部 github 上就有各種方案。在阿里內部手淘早先做的 bundle 拆分時沉澱的容器規則,天貓開源出去的 beeHive,閒魚內部的 Xframework,抑或是服務端的 spring mvc,其實都實現了 IoC,但實現和思路上都有一些差異,到底為什麼這麼做,其實是有區別的,這裏面就可以看出知識廣度,總結和思辯能力,在關鍵路徑上的技術判斷。
又比如說,我們總在強調效能穩定性怎麼做,業界也有很多方案,到底哪個方案更好呢?答案沒有絕對的對錯,取決於某個時間點和場景下哪個問題是最核心的突破點,而你的選擇標準和落地的技術方案是不是合理(考慮成本,收益,以及後續的風險是什麼)。一般來講,我們更傾向於用系統化的思維看待一個問題,也就是說,相比根據人的經驗去識別效能瓶頸,我們更希望能通過自動化,智慧化,資料化的方式去解決問題。
一般剛開始做面試官的同學很喜歡以問為主,但因為大家的知識體系不太一樣,成長環境也不同,直接這麼問起來很難就找到面試者的優點,所以儘量讓應試者自己陳述,然後以學習和交流的心態針對陳述中存疑的地方再進行發問,會更容易讓應試者放鬆,也更容易讓應試者更全面的表達自己。另外,問的差不多的時候,結尾的時候可以補充一句:您覺得剛纔的面試中還有哪些我沒問到的,您想再補充一下的內容?末了,再問下:我的問題問完了,您有什麼想要問我的嗎?
知道了應該怎麼做,那具體的提問方法有沒有什麼技巧呢?在招聘中有一個重要的 STAR 原則,可以跟大家分享。
STAR 原則
在什麼樣的環境下
接到了什麼樣的任務
然後具體怎麼落地的
拿到了什麼結果
我們儘量問清楚對方在什麼樣的環境下接到這個任務,接到以後是做了什麼事情,最後的結果是什麼樣子的。乍一聽,感覺,這不是套路嘛,是不是知道這個原則的人,只要按照這四點編故事,就能通過面試了?當然不是,在敘述過程中,我們應該分辨出 STAR 中的真假,那下面就舉一些例子。
假的 STAR
比如,我用這個方案解決了這個問題,效果很好,得到了大家的一致好評。注意,效果好是哪裏好,有什麼度量的標準?一致好評的體現是在具體 KPI 還是比如團隊有個什麼獎勵之類的。
我覺得線上穩定性非常重要,應該重點解決和持續跟進。如果只有這一句話,沒有後面具體認為重要的解決方案的話,這部分的經驗難以令人信服。
如果我來做這件事情,我會 1234 怎麼怎麼樣。前面其實面試應該問的問題裏面有提到,我們本身就不應該問假設性的問題,那作為面試者,假設沒做過的事情,如果只是看思路還好,但是如果說的天花亂墜,這個時候要警惕了,畢竟說和做之前的差異是很大的。對於假設的事情,面試官是沒法評估具體效果的,因為它不像過去已有的專案和工作內容,是有明顯結果的,如果對過去結果存疑,後續也可以背調了解具體的情況。
針對假的 STAR,我們要甄別分辨出來,引導其表達出真正的情況。
鑑別方式
做了什麼事情,具體做的方案 1234 幾步,為什麼要這麼做,比如圖片的優化,最早肯定什麼都沒有,後續加 cache,cache 策略又可以升級,包括 cache 本身的演算法以及多級 cache 的實現,圖片尺寸上面後來有做了什麼裁切之類的,圖片格式上面後續又做了優化等等。
每個階段不太一樣,關注的重點也不一樣,刨根問題問一問,會了解是不是真的做過這件事情,另外有一些可能專案做得很久說很多東西忘了,這裏我分享一個觀點,之前看過一句話,招聘的人中有一種人是比較好的, 他總能比較清楚的記住過往專案當中的重點 ,這樣的人在經驗沉澱的過程中肯定更快一些,當然這樣的同學肯定得歸結在聰明一類的人了,當然能記住也說明他可能喜歡總結和回顧,平常的學習習慣應該也比較好。
很多關鍵節點的細節很重要,比如網路庫的優化。如果你是一個 iOS 開發,一般都會知道 iOS 的網路協議優化常採用攔截 NSURLProtocol 的方式進行,然後針對傳統的 https 協議我們會將其替換成為 spdy 協議或者 http2 協議,過程中還有一些 httpdns 等的優化。但如果你今天希望招聘一個有這部分網路優化經驗的同學,怎麼判斷這個同學有實操的經驗呢?你可以讓他說細節上面的很多事情,比如說 URLProtocol 攔截 request 以後,針對不同的 case 的降級策略是什麼,選擇依據是什麼?當時遇到了什麼其他的坑沒有?你自己的做法有什麼缺陷?
又比如 Weex 的實現上面,整個渲染的流程到底是怎樣的,渲染部分還有什麼優化空間嗎?或者說這個方案本身做了哪方面的優化?它的配套工程體系上的問題是什麼,你遇到以後是怎麼解決掉的,這些在瞭解大概思路後,都可以往深入再問一下細節的部分,認真研讀以及修改過程式碼的同學,肯定是答得出來的。
其他 Tips
面試是雙向的,面試官是一個團隊對外的門面,不要遲到,提問和交流要尊重面試者,讓面試者感受到我們的真誠。
我們永遠應該為未來招聘,因為招聘的人入職也是發生在未來,不能立刻就解決你眼前的問題,所以我們招聘的時候也放長遠一點,招為團隊未來更有好處的人。
以人為鏡,優秀的面試者給我們能帶來新的思路和新的方法,而差強人意的面試者則提高我們看人的能力,為後續的提升招聘效率找到更正確的人打下基礎。
技術人如何不斷成長?
招聘,培訓,人才選拔晉升,我認為評價標準和方法都應該有比較多的重合的部分,我們從剛纔的面試經驗中,反思下,如果現在是我們去找工作,這個市場或者團隊更需要什麼樣的人?
經驗能解決實際的問題,另外知識體系可以讓你在遇到新的問題時舉一反三,當然大公司和小公司要求的知識體系又不太一樣,大公司更偏向一專多能的T型人才,小公司更喜歡全棧,所以到底要成為什麼樣的人,跟你的職業規劃很有關係,是想在大公司成就一番事業,還是出去闖蕩,那你點的技能樹肯定是不一樣的。到底應該怎麼做,我自己的經驗是,找到身邊的標杆,向更優秀的同學學習,在阿里當然非常優秀的專業人才也好,架構師也好,都非常多,所以標杆應該也好找,業界當然也有很多成功的人,有了標杆,就努力向上吧。
當我還是一個菜鳥的時候,當時的老闆問了我一個問題,每週寫週報的時候,想想自己這一週到底收穫了什麼,這給我留下了很深的印象。我在想,既然我每次面試別人都問你最近有研究什麼新的技術或者看到什麼有趣的文章沒有的,那我自己是不是能這樣要求自己呢?不積跬步無以至千里,貴在堅持積累。
附
十年前,他如何自學技術進阿里?
阿里雲高階 DBA 專家玄慚,講述十年前通過校招加入阿里的經歷和心得,希望對大家有所幫助。
準備工作
一年一度的校園實習招聘開始了,最近接觸了幾個找工作的應屆生同學。這讓我回想當年找工作的時候,遇到了很多好心人,所以一直想寫寫如何加入阿里的文章,算是對自己有一個交代,也希望能夠幫助到找工作的同學。
序:一顆種子的種下
我的母校是四川師範大學,專業是教育技術,在大一下期的一堂專業課上網站設計,我的專業課老師在講網站開發過程中使用資料庫的時候,介紹了這個資料庫的管理者 DBA,在當今是屬於比較稀缺的技術人員,他們隨著經驗的不斷增加,所獲得的報酬也將會越來越大。在當時很多學計算機的人都覺得做程式設計師是一門年青飯,所以我一下子被打動了,在心裏暗暗就下定決心我畢業後就要做一位出色的 DBA,專業老師的不經意一句話,就在我內心中種下了一顆種子,等待著時間發芽成長。
暑期自學資料庫
有了這樣一個想法之後,暑假裏我在圖書館裏借幾本資料庫原理這本書,打算在暑假的時候開始自學資料庫,但其實回想起來這些書都應該沒有看懂。到了大二,開始到圖書館中去借各種各樣的資料庫技術書籍,2007 年的時候 Oracle 還是非常流行的資料庫,所以自然想成為一名 Oracle DBA,依然還記得最早 Oracle 入門書籍看的是 eygle 蓋國強寫的書,他堅持不懈的撰寫 Oracle 相關的技術文章,讓當時一大批 DBA 愛好者受益匪淺。
《深入解析 Oracle》蓋國強著
書看完後,心中會有很多的疑問,一遍看不懂,再看一篇,再不懂,再看一遍,這是我的學習方法。同時我也會自己搭建環境自己進行測試驗證,再不懂就到論壇中去提問,最後將問題總結下來寫成 Blog。
當時中國最大的 Oracle 技術論壇 ITPUB 雲集了國內眾多的高手,從論壇中看高手的回答,往往一針見血,認識了很多人,瞭解了他們的成長軌跡,讓人覺得非常佩服。
在大學裏學到了一門獨特的技能就是通過網際網路搜尋我想了解的知識。我從網際網路上搜尋各種 DBA 相關的資源,搜索到了讓我堅定走入 DBA 之門的關鍵鑰匙——《阿里 DBA 成長之路》,後來這篇文章的作者成爲了我的一面技術官——我進入阿里後的第一任主管丹臣,每當重新讀起他那篇文章,總是能夠讓人重新燃起成為一名優秀 DBA 的希望。
中國最好的 DBA 技術團隊在阿里
當時中國最好的 DBA 技術人才都在阿里,業界出名的 DBA 有馮春培(孔丘),陳吉平(託雷),寧海遠(江楓),HelloDBA (張瑞)都在阿里,內心中升起了加入淘寶 DBA 團隊的決心,我每天都會關注這些技術牛人和技術團隊的 blog,通過 google reader 訂閱他們的文章,瞭解業界最新的技術動態。
淘寶 DBA 團隊
我儲存了一篇當年淘寶 DBA 團隊的 blog-淘寶 DBA 語錄,節選如下:
-
作為我們的團隊成員,我並不一定需要他有高超的技術(有當然更好),但是,我們的團隊成員必須有強烈的責任心,有很強的團隊合作能力。
-
我們擁有中國一流的環境,我們擁有中國一流的技術,我們的目標是打造中國一流的團隊。
-
DBA 未必是一個高薪的職業,但絕對是一個高壓力的職業。
-
在遇到問題沒有搞清楚具體原因之前,千萬不要輕易重啟資料庫。
-
操作有風險,下手須慎重。
-
在淘寶這樣高速發展的公司裡,每一天都是一個挑戰。我們都不得不去面對一些新的問題,我們唯有不斷去提高自己,提供一些新的解決方案,to handle these problems。
每當看到這篇文章的時候,沒有一次不會升起對這支團隊的敬仰和羨慕,我下定決心立志加入這支團隊。
從理論到實踐
初涉 企業級資料庫架構
通過近兩年的技術理論自學,對 Oracle 資料庫理論有了一定的理解,但是理論歸理論,實踐歸實踐,我想驗證我所學習和理解的 Oracle 技術,所以我決定參加了社會上的 Oracle 培訓,培訓實踐選擇再大三下期,老師是具有多年經驗的 Oracle DBA,當時的學費需要 1W 多,對於家裏來說也是非常大的一筆開支,當時大學一年的學費也只有 5000 左右,此時仍然非常感恩我的父母對我理想的支援。為期半年的培訓,回想起那段培訓的經歷仍然歷歷在目,經常是早出晚歸,天剛剛漸亮,寢室裏的同學還在睡覺,我就要起床趕 2 個小時的公交去城裏培訓,培訓的同學大都是已經參加工作想轉行 DBA 的,或者是大四馬上要畢業的學長。
通過培訓,接觸了更多志同道合的人,對 Oracle 的體系結構更加的深入理解,同時也瞭解企業級的資料庫架構是怎麼樣的,對於我後來的校園招聘的筆試具有非常大的幫助作用,我仍然記得淘寶校園招聘的筆試最後一道題目就是如何構建高可用的企業系統架構。
折戟校園招聘
秋季校園招聘一般在國慶節後陸續開始,我提前 1 個月開始準備校園招聘,瞭解校園招聘的流程,關注各大網際網路公司的校園宣講時間,複習數據結構,程式設計演算法,資料庫原理,網路原理等基礎計算機課程,因為這些都是校園招聘第一關需要考察的基礎內容,這也是成為 DBA 必須要要具有的基礎理論,往往很多想成為 DBA 的應屆生所忽略的,這一點非常重要。
國慶後,我陸續參加了多家網際網路公司的校園招聘,隨著一次次的校園招聘經歷,我也慢慢熟悉了這些網際網路公司的招聘流程,網上投遞簡歷—>通知筆試—>一面技術面—>二面綜合面試,也可能是群面—>HR 面試,讓我沒有想到是 10 月份的奔波並沒有帶來結果,百度筆試掛掉,網易通過了筆試和一面技術面,在二面群面中掛掉,而淘寶做了筆試之後就沒有訊息了。
這讓我有點心灰意冷,難道三年的努力就這樣化為灰燼了嗎,我開始把精力轉向社會招聘,記得爲了參加一次面試,從成都東南邊坐車到成都西北邊,差不多斜線橫穿了成都,早上 8 點出發,中午差不多 12 點纔到面試的公司,應聘公司的 HR 也被我的誠意打動,沒有吃飯等著我做完筆試。
喜從天降
順利 拿到淘寶 DBA 的 offer
在十一月份參加了幾次社會招聘後,也沒有成功被錄用,在一天中午突然接到了來自杭州的一個電話,讓我準備視訊面試,打來電話的人是我的啓蒙導師,也是我後面的第一任主管-丹臣。這突如其來的訊息讓我興奮不已,原來淘寶在四川的宣講會,我的主管並沒有來,所以我的試卷是在杭州改的。
約好了時間面試後,我內心非常激動,面試過程也比較順利,我介紹我學習 Oracle 的經歷,在大學裏面做過的一些網站專案,意想不到的是,對我啓蒙的那篇文章作者《阿里巴巴 DBA 成長之路》就坐在我的面前,而且丹臣也是四川眉山人(我姐姐嫁到了眉山),這讓我很快進入了面試狀態,接下來的問題也回答的比較滿意,順利通過了第一技術面試。
緊接著是第二技術面試,面試官是江楓,我一眼就認出來了,他,託雷,eygle 剛剛從美國參加完 OOW 回來,江楓問了我一些 Oracle 基礎相關的問題,還記得其中一個問題是講一講 Oracle 數據段中 pectfree 和 pctused 這兩個引數的含義,在最後一道綜合題中沒有回答出來,我很誠懇表示沒有學習接觸過相關技術知識,就這樣二面技術面也通過了。
第三面是 HR 面,說來也是天意,我居然也第一眼認出了這位 HR(花名:玄渡),他參加了四川的校園宣講會,我是在參加筆試的時候不經意記住了這位 HR,所以可以想象整個面試的氛圍還是很融洽的,HR 問了一些在團隊相處上的問題,最後一個問題是對阿里文化的講解,我之前看過一本關於阿里巴巴文化的書,對阿里的武俠文化非常熱愛,本人也非常喜歡金庸的武俠小說,特別敬仰喬峰這個角色,所以我對 HR 說我加入淘寶後能不能用喬峰這個花名,HR 笑著解釋說「這個花名早就已經有人了」。就這樣三面也順利通過,一氣呵成。
就在這一天(2009 年 11 月 15 日)我拿到了淘寶 DBA 團隊的 offer,當時對我來說那天下午就像做了一場夢,我第一時間給在外省的母親打了電話,發了簡訊給我大學裏喜歡的女生,那一刻所有的一切付出都有了回報。
命運的安排
阿里雲,爲了無法計算的價值
2010 年加入淘寶成為 Oracle DBA 之後,恰好經歷了阿里雲的崛起,2012 年我從 Oracle DBA 轉型為 MySQLDBA 開始支援阿里雲 RDS,成為 RDS 最早一波創業者,此刻仍能夠想起那段這一生都無法忘懷的創業時光。
阿里雲資料庫 CloudDBA 團隊
2012 年 9 月,阿里雲資料庫開始對外提供服務,緊接著就需要在 11 月份支撐天貓雙 11,承擔天貓 20% 的訂單量。如果用一個詞來形容 2012 年的雙 11,那就是肩挑背扛。很多商家對雲需求強烈,但在遷移過程中,還是遇到了一些問題。當時阿里雲資料庫支援 MySQL 和 SQLServer 兩類引擎,這兩類資料庫的上雲遷移都不支援線上,以致使用者的業務停機時間會非常長。記得有一個使用者由於資料量特別大,爲了加快遷移速度,其甚至把硬碟郵寄給了我們。短短一個月,我們就幫助使用者手動遷移了數百臺規模的資料庫例項到雲上。當然,這個問題現在已經不再存在,用阿里雲的資料庫遷移工具可以很方便完成不停機線上遷移工作。
通過這幾年的技術演進,阿里雲資料庫不僅僅承擔了 100% 天貓的訂單處理,我們的產品也變得更加豐富和穩定可靠,涵蓋了市面各種主流資料庫型別,包括 MySQL、MongoDB、Redis 等,同時我們還自研了能滿足高吞吐線上事務處理的關係型雲資料庫 POLARDB,支援單庫容量擴充套件至上百 TB 以及計算引擎能力及儲存能力的秒級擴充套件能力,對比 MySQL 有 6 倍效能提升。
雲端計算是全民的雲端計算,我們忠心希望使用者在使用雲端計算的時候能夠像使用水電煤一樣簡單。我們也會不斷地將最佳實踐沉澱到產品中,只有這樣才能將其作用最大化、規模化、可複製化,讓使用者真正享受到技術紅利,也期待更多的有志之士加入我們一起來完成這一項偉大的事業。
總結
回顧我大學裏的學習生活,從大一開始立志成為一位 DBA,經過三年的準備,最後加上了一點點運氣,這一切的一切好像命中註定一樣,我只能謝天謝地,冥冥之中是老天爺在幫助著你。
對於大學裏面的學生,我看到過很多同學在大學裏找不到方向,盲盲碌碌到了大四的時候要麼考研,要麼找一份自己不是很喜歡的工作,所以提早立志是非常重要的。最近重溫了一部電影《三傻大鬧寶萊塢》,找一個自己喜歡的工作比什麼都重要,通過自己的努力積累,最終你將會厚積薄發。
關於學習方法,技術一定要多實踐,多總結,學會分享,嘗試著去幫助需要幫助的人,這樣你會成長的更加迅速,我所認識的成長飛快的人都是特別願意幫助別人,願意分享的人。