1. 程式人生 > >如何在阿里技術面試中脫穎而出?(內部資料)

如何在阿里技術面試中脫穎而出?(內部資料)

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

阿里妹導讀:知己知彼、百戰不殆,面試也是如此。只有充分了解面試官的思路,才能更好地在面試中充分展現自己。今天,阿里高階技術專家將分享自己作為面試官的心得與體會。如果你是面試者,可以藉此為鏡,對照發現自己的長處與不足,有針對性學習成長;如果你是面試官,相信也能通過他的講述,有所啟發。

招聘是團隊管理者工作中的重要一環。本文會結合自己親身經歷以及接受的招聘培訓,綜合分析怎麼找到我們要的人,也希望可以通過招聘這面鏡子照亮自己,怎樣成為一個更好的工程師。

招聘的目的

當今社會,技術已經成為影響商業成功的關鍵因素,工程師成為了這些公司最寶貴的財富,沒有優秀的人組成團隊來完成商業目標,公司根本不可能有今天的成就。所以招聘,就是選擇最優秀的人。

招什麼樣的人?

招優秀的人顯然是一個很模糊的概念,我們來度量的時候,我個人認為三個因素是最關鍵的:

  • 技能

工作專案經驗,以及解決疑難問題的能力,畢竟招來的人首先必須很好的完成工作,這是最基本的要求,注意,是很好的完成,不是僅僅完成。

  • 潛力

這個概念看起來比較模糊,其實還是比較容易評價的,對計算機相關的專業的知識體系是不是完整,基礎是不是紮實,平常是不是喜歡鑽研,對這個世界充滿好奇心,這幾年走下來,沉澱的速度如何,都是判斷一個人的潛力的方式,注意我們看潛力主要是基於候選人的之前的成長經歷實事求是來看,過去的優秀經歷才能給未來背書。潛力和技能的重要性一樣重要,我們不能只看眼前,團隊是需要不斷髮展和前進的,所以我們招人應該面向未來。

  • 軟實力

軟實力這裡其實包含了性格,執行力,領導力等方方面面,它代表了候選人是否能快速融入團隊,拿到結果,帶領團隊攻城拔寨,激勵和影響身邊的人變得更加優秀等等,軟實力一般HR肯定會考察,雖然技術面不會特別去關注,但是從面試的過程中可以看出候選人的溝通能力,以及性格相關的特點,也值得我們注意。

說了這麼多,其實在招人上有一個對比的標杆,就是你招的人是不是比團隊中同一等級中50%的同學優秀,如果你覺得沒有他們優秀,那不用糾結,這個候選人不要了,團隊必須不停加入更好的同學,才能變得更加強大。

640?wx_fmt=jpeg

面試的方法

這裡結合之前的培訓以及自己的真實經歷,講解面試的一些方法。

面試不要做的事

  • 問一些知道性的問題比如問知不知道這個API幹什麼的,怎麼呼叫,這個命令怎麼用的,知道性的知識,google一下或者認真看下文件就應該知道。

  • 問一些特別複雜的問題比如問一個特別複雜的演算法,問一個很抽象的大問題,短時間內很難給予回答。

  • 問一些假設性的問題假設你參與了這個專案,你覺得哪幾個地方需要優化。

之所以說這些問題不應該問,我認為主要是因為這些很難考察到面試者的真實能力,45分鐘的時間本來就很短,有些問題有可能比較偏,有些問題又過於龐大沒法一下子描述特別清楚,還有一些問題缺乏上下文,讓人摸不到頭腦,所以儘量避免這麼問問題,另外把握一個重要原則,不要在面試中試圖證明別人不如自己,毫無意義,人無完人,總有覆蓋不到的地方,按照這個規則招聘,會錯過很多優秀的人才。

面試應該做的事

  • 問已經發生的事情

比如面試移動開發者,面試官應該認真看下其做過的App,具體的工作是什麼,準備一些相關的問題,這裡就可以看出來之前工作中的積累是什麼,有多深。

  • 問題解決思路

針對專案經驗和一些學習的經驗上面,應該問拿到問題以後解決思路是什麼,在什麼場景下為什麼這麼做,這裡根據面試者的方案,分析的方法論,就可以大致瞭解面試者是否聰明,知識面是不是夠廣,遇到問題時會不會舉一反三。

具體可以舉個簡單的例子,很多同學說自己做過架構,然後都會講自己做了一個解耦和分層的框架,其實這類框架iOS很多,外部github上就有各種方案。在阿里內部手淘早先做的bundle拆分時沉澱的容器規則,天貓開源出去的beeHive,閒魚內部的Xframework,抑或是服務端的spring mvc,其實都實現了IoC,但實現和思路上都有一些差異,到底為什麼這麼做,其實是有區別的,這裡面就可以看出知識廣度,總結和思辯能力,在關鍵路徑上的技術判斷。

又比如說,我們總在強調效能穩定性怎麼做,業界也有很多方案,到底哪個方案更好呢?答案沒有絕對的對錯,取決於某個時間點和場景下哪個問題是最核心的突破點,而你的選擇標準和落地的技術方案是不是合理(考慮成本,收益,以及後續的風險是什麼)。一般來講,我們更傾向於用系統化的思維看待一個問題,也就是說,相比根據人的經驗去識別效能瓶頸,我們更希望能通過自動化,智慧化,資料化的方式去解決問題。

  • 少問多聽

一般剛開始做面試官的同學很喜歡以問為主,但因為大家的知識體系不太一樣,成長環境也不同,直接這麼問起來很難就找到面試者的優點,所以儘量讓應試者自己陳述,然後以學習和交流的心態針對陳述中存疑的地方再進行發問,會更容易讓應試者放鬆,也更容易讓應試者更全面的表達自己。另外,問的差不多的時候,結尾的時候可以補充一句:您覺得剛才的面試中還有哪些我沒問到的,您想再補充一下的內容?末了,再問下:我的問題問完了,您有什麼想要問我的嗎?

知道了應該怎麼做,那具體的提問方法有沒有什麼技巧呢?在招聘中有一個重要的STAR原則,可以跟大家分享。

STAR原則

  • 處境(situation)

在什麼樣的環境下

  • 任務(task)

接到了什麼樣的任務

  • 行動(action)

然後具體怎麼落地的

  • 結果(result)

拿到了什麼結果

我們儘量問清楚對方在什麼樣的環境下接到這個任務,接到以後是做了什麼事情,最後的結果是什麼樣子的。乍一聽,感覺,這不是套路嘛,是不是知道這個原則的人,只要按照這四點編故事,就能通過面試了?當然不是,在敘述過程中,我們應該分辨出STAR中的真假,那下面就舉一些例子。

假的STAR

  • 描述含糊不清

比如,我用這個方案解決了這個問題,效果很好,得到了大家的一致好評。注意,效果好是哪裡好,有什麼度量的標準?一致好評的體現是在具體KPI還是比如團隊有個什麼獎勵之類的。

  • 只表達態度和看法

我覺得線上穩定性非常重要,應該重點解決和持續跟進。如果只有這一句話,沒有後面具體認為重要的解決方案的話,這部分的經驗難以令人信服。

  • 假設式描述

如果我來做這件事情,我會1234怎麼怎麼樣。前面其實面試應該問的問題裡面有提到,我們本身就不應該問假設性的問題,那作為面試者,假設沒做過的事情,如果只是看思路還好,但是如果說的天花亂墜,這個時候要警惕了,畢竟說和做之前的差異是很大的。對於假設的事情,面試官是沒法評估具體效果的,因為它不像過去已有的專案和工作內容,是有明顯結果的,如果對過去結果存疑,後續也可以背調了解具體的情況。

針對假的STAR,我們要甄別分辨出來,引導其表達出真正的情況。

640?wx_fmt=jpeg

鑑別方式

  • 更多的關心What/How/Why

做了什麼事情,具體做的方案1234幾步,為什麼要這麼做,比如圖片的優化,最早肯定什麼都沒有,後續加cache,cache策略又可以升級,包括cache本身的演算法以及多級cache的實現,圖片尺寸上面後來有做了什麼裁切之類的,圖片格式上面後續又做了優化等等。

每個階段不太一樣,關注的重點也不一樣,刨根問題問一問,會了解是不是真的做過這件事情,另外有一些可能專案做得很久說很多東西忘了,這裡我分享一個觀點,之前看過一句話,招聘的人中有一種人是比較好的,他總能比較清楚的記住過往專案當中的重點,這樣的人在經驗沉澱的過程中肯定更快一些,當然這樣的同學肯定得歸結在聰明一類的人了,當然能記住也說明他可能喜歡總結和回顧,平常的學習習慣應該也比較好。

  • 細節!細節!細節!

很多關鍵節點的細節很重要,比如網路庫的優化。如果你是一個iOS開發,一般都會知道iOS的網路協議優化常採用攔截NSURLProtocol的方式進行,然後針對傳統的https協議我們會將其替換成為spdy協議或者http2協議,過程中還有一些httpdns等的優化。但如果你今天希望招聘一個有這部分網路優化經驗的同學,怎麼判斷這個同學有實操的經驗呢?你可以讓他說細節上面的很多事情,比如說URLProtocol攔截request以後,針對不同的case的降級策略是什麼,選擇依據是什麼?當時遇到了什麼其他的坑沒有?你自己的做法有什麼缺陷?

又比如Weex的實現上面,整個渲染的流程到底是怎樣的,渲染部分還有什麼優化空間嗎?或者說這個方案本身做了哪方面的優化?它的配套工程體系上的問題是什麼,你遇到以後是怎麼解決掉的,這些在瞭解大概思路後,都可以往深入再問一下細節的部分,認真研讀以及修改過程式碼的同學,肯定是答得出來的。

其他Tips

  • 你在面試別人,別人也在選擇你

面試是雙向的,面試官是一個團隊對外的門面,不要遲到,提問和交流要尊重面試者,讓面試者感受到我們的真誠。

  • 為未來招聘而不是現在

我們永遠應該為未來招聘,因為招聘的人入職也是發生在未來,不能立刻就解決你眼前的問題,所以我們招聘的時候也放長遠一點,招為團隊未來更有好處的人。

  • 面試是一面鏡子

以人為鏡,優秀的面試者給我們能帶來新的思路和新的方法,而差強人意的面試者則提高我們看人的能力,為後續的提升招聘效率找到更正確的人打下基礎。

技術人如何不斷成長?

640?wx_fmt=jpeg

招聘,培訓,人才選拔晉升,我認為評價標準和方法都應該有比較多的重合的部分,我們從剛才的面試經驗中,反思下,如果現在是我們去找工作,這個市場或者團隊更需要什麼樣的人?

  • 經驗豐富,知識體系完整

經驗能解決實際的問題,另外知識體系可以讓你在遇到新的問題時舉一反三,當然大公司和小公司要求的知識體系又不太一樣,大公司更偏向一專多能的T型人才,小公司更喜歡全棧,所以到底要成為什麼樣的人,跟你的職業規劃很有關係,是想在大公司成就一番事業,還是出去闖蕩,那你點的技能樹肯定是不一樣的。到底應該怎麼做,我自己的經驗是,找到身邊的標杆,向更優秀的同學學習,在阿里當然非常優秀的專業人才也好,架構師也好,都非常多,所以標杆應該也好找,業界當然也有很多成功的人,有了標杆,就努力向上吧。

  • 保持良好的習慣,不忘總結和提升

當我還是一個菜鳥的時候,當時的老闆問了我一個問題,每週寫週報的時候,想想自己這一週到底收穫了什麼,這給我留下了很深的印象。我在想,既然我每次面試別人都問你最近有研究什麼新的技術或者看到什麼有趣的文章沒有的,那我自己是不是能這樣要求自己呢?不積跬步無以至千里,貴在堅持積累。

最後打個廣告~歡迎大家加入阿里巴巴閒魚團隊!閒魚目前是業內第一的閒置交易社群,擁有海量使用者和巨大的技術挑戰,歡迎有移動端跨平臺架構經驗及人工智慧經驗的同學聯絡我們,簡歷投遞方式:[email protected] 

640?

你可能還喜歡

點選下方圖片即可閱讀

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=png

關注「阿里技術」

把握前沿技術脈搏