如何在阿里技術面試中脫穎而出?
阿里妹導讀:知己知彼、百戰不殆,面試也是如此。只有充分了解面試官的思路,才能更好地在面試中充分展現自己。今天,阿里高級技術專家將分享自己作為面試官的心得與體會。如果你是面試者,可以借此為鏡,對照發現自己的長處與不足,有針對性學習成長;如果你是面試官,相信也能通過他的講述,有所啟發。
招聘是團隊管理者工作中的重要一環。本文會結合自己親身經歷以及接受的招聘培訓,綜合分析怎么找到我們要的人,也希望可以通過招聘這面鏡子照亮自己,怎樣成為一個更好的工程師。
招聘的目的
當今社會,技術已經成為影響商業成功的關鍵因素,工程師成為了這些公司最寶貴的財富,沒有優秀的人組成團隊來完成商業目標,公司根本不可能有今天的成就。所以招聘,就是選擇最優秀的人。
招什么樣的人?
招優秀的人顯然是一個很模糊的概念,我們來度量的時候,我個人認為三個因素是最關鍵的:
-
技能
工作項目經驗,以及解決疑難問題的能力,畢竟招來的人首先必須很好的完成工作,這是最基本的要求,注意,是很好的完成,不是僅僅完成。
-
潛力
這個概念看起來比較模糊,其實還是比較容易評價的,對計算機相關的專業的知識體系是不是完整,基礎是不是扎實,平常是不是喜歡鉆研,對這個世界充滿好奇心,這幾年走下來,沉淀的速度如何,都是判斷一個人的潛力的方式,注意我們看潛力主要是基于候選人的之前的成長經歷實事求是來看,過去的優秀經歷才能給未來背書。潛力和技能的重要性一樣重要,我們不能只看眼前,團隊是需要不斷發展和前進的,所以我們招人應該面向未來。
-
軟實力
軟實力這里其實包含了性格,執行力,領導力等方方面面,它代表了候選人是否能快速融入團隊,拿到結果,帶領團隊攻城拔寨,激勵和影響身邊的人變得更加優秀等等,軟實力一般 HR 肯定會考察,雖然技術面不會特別去關注,但是從面試的過程中可以看出候選人的溝通能力,以及性格相關的特點,也值得我們注意。
說了這么多,其實在招人上有一個對比的標桿,就是你招的人是不是比團隊中同一等級中 50% 的同學優秀,如果你覺得沒有他們優秀,那不用糾結,這個候選人不要了,團隊必須不停加入更好的同學,才能變得更加強大。
面試的方法
這里結合之前的培訓以及自己的真實經歷,講解面試的一些方法。
面試不要做的事
-
問一些知道性的問題比如問知不知道這個 API 干什么的,怎么調用,這個命令怎么用的,知道性的知識,google 一下或者認真看下文檔就應該知道。
-
問一些特別復雜的問題比如問一個特別復雜的算法,問一個很抽象的大問題,短時間內很難給予回答。
-
問一些假設性的問題假設你參與了這個項目,你覺得哪幾個地方需要優化。
之所以說這些問題不應該問,我認為主要是因為這些很難考察到面試者的真實能力,45 分鐘的時間本來就很短,有些問題有可能比較偏,有些問題又過于龐大沒法一下子描述特別清楚,還有一些問題缺乏上下文,讓人摸不到頭腦,所以盡量避免這么問問題,另外把握一個重要原則,不要在面試中試圖證明別人不如自己,毫無意義,人無完人,總有覆蓋不到的地方,按照這個規則招聘,會錯過很多優秀的人才。
面試應該做的事
-
問已經發生的事情
比如面試移動開發者,面試官應該認真看下其做過的 App,具體的工作是什么,準備一些相關的問題,這里就可以看出來之前工作中的積累是什么,有多深。
-
問題解決思路
針對項目經驗和一些學習的經驗上面,應該問拿到問題以后解決思路是什么,在什么場景下為什么這么做,這里根據面試者的方案,分析的方法論,就可以大致了解面試者是否聰明,知識面是不是夠廣,遇到問題時會不會舉一反三。
具體可以舉個簡單的例子,很多同學說自己做過架構,然后都會講自己做了一個解耦和分層的框架,其實這類框架 iOS 很多,外部 github 上就有各種方案。在阿里內部手淘早先做的 bundle 拆分時沉淀的容器規則,天貓開源出去的 beeHive,閑魚內部的 Xframework,抑或是服務端的 spring mvc,其實都實現了 IoC,但實現和思路上都有一些差異,到底為什么這么做,其實是有區別的,這里面就可以看出知識廣度,總結和思辯能力,在關鍵路徑上的技術判斷。
又比如說,我們總在強調性能穩定性怎么做,業界也有很多方案,到底哪個方案更好呢?答案沒有絕對的對錯,取決于某個時間點和場景下哪個問題是最核心的突破點,而你的選擇標準和落地的技術方案是不是合理(考慮成本,收益,以及后續的風險是什么)。一般來講,我們更傾向于用系統化的思維看待一個問題,也就是說,相比根據人的經驗去識別性能瓶頸,我們更希望能通過自動化,智能化,數據化的方式去解決問題。
-
少問多聽
一般剛開始做面試官的同學很喜歡以問為主,但因為大家的知識體系不太一樣,成長環境也不同,直接這么問起來很難就找到面試者的優點,所以盡量讓應試者自己陳述,然后以學習和交流的心態針對陳述中存疑的地方再進行發問,會更容易讓應試者放松,也更容易讓應試者更全面的表達自己。另外,問的差不多的時候,結尾的時候可以補充一句:您覺得剛才的面試中還有哪些我沒問到的,您想再補充一下的內容?末了,再問下:我的問題問完了,您有什么想要問我的嗎?
知道了應該怎么做,那具體的提問方法有沒有什么技巧呢?在招聘中有一個重要的 STAR 原則,可以跟大家分享。
STAR 原則
-
處境(situation)
在什么樣的環境下
-
任務(task)
接到了什么樣的任務
-
行動(action)
然后具體怎么落地的
-
結果(result)
拿到了什么結果
我們盡量問清楚對方在什么樣的環境下接到這個任務,接到以后是做了什么事情,最后的結果是什么樣子的。乍一聽,感覺,這不是套路嘛,是不是知道這個原則的人,只要按照這四點編故事,就能通過面試了?當然不是,在敘述過程中,我們應該分辨出 STAR 中的真假,那下面就舉一些例子。
假的 STAR
-
描述含糊不清
比如,我用這個方案解決了這個問題,效果很好,得到了大家的一致好評。注意,效果好是哪里好,有什么度量的標準?一致好評的體現是在具體 KPI 還是比如團隊有個什么獎勵之類的。
-
只表達態度和看法
我覺得線上穩定性非常重要,應該重點解決和持續跟進。如果只有這一句話,沒有后面具體認為重要的解決方案的話,這部分的經驗難以令人信服。
-
假設式描述
如果我來做這件事情,我會 1234 怎么怎么樣。前面其實面試應該問的問題里面有提到,我們本身就不應該問假設性的問題,那作為面試者,假設沒做過的事情,如果只是看思路還好,但是如果說的天花亂墜,這個時候要警惕了,畢竟說和做之前的差異是很大的。對于假設的事情,面試官是沒法評估具體效果的,因為它不像過去已有的項目和工作內容,是有明顯結果的,如果對過去結果存疑,后續也可以背調了解具體的情況。
針對假的 STAR,我們要甄別分辨出來,引導其表達出真正的情況。
鑒別方式
-
更多的關心 What/How/Why
做了什么事情,具體做的方案 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,經過三年的準備,最后加上了一點點運氣,這一切的一切好像命中注定一樣,我只能謝天謝地,冥冥之中是老天爺在幫助著你。
對于大學里面的學生,我看到過很多同學在大學里找不到方向,盲盲碌碌到了大四的時候要么考研,要么找一份自己不是很喜歡的工作,所以提早立志是非常重要的。最近重溫了一部電影《三傻大鬧寶萊塢》,找一個自己喜歡的工作比什么都重要,通過自己的努力積累,最終你將會厚積薄發。
關于學習方法,技術一定要多實踐,多總結,學會分享,嘗試著去幫助需要幫助的人,這樣你會成長的更加迅速,我所認識的成長飛快的人都是特別愿意幫助別人,愿意分享的人。