我是如何準備“BAT”與“外企”面試的?

語言: CN / TW / HK

往期文章:

《00. 文章合集目錄》

《10. 揭祕 Compose 原理》

《2 小時入門 Jetpack Compose》

你好,我是朱濤。這是「沉思錄」的第六篇文章。

入職新公司快半年了,今天,我想和你聊聊,關於找工作、面試的一些心得與體會。說實話,在這次找工作之前,我面試找工作的經歷並不豐富,反而是當面試官的次數更多。所以呢,這次換工作,我把國內、國外一二線公司都面了一遍,也算是彌補了自己這方面經驗的不足吧。

「國內公司」比如百度、阿里、騰訊、位元組,「外企」以 Google、Facebook、Microsoft 為代表,它們都是一流的網際網路公司,但它們的面試,不管是從流程上,還是從內容上,差異還是挺大的。

如果你最近也想面試:國內、國外的一些大廠,相信這篇文章可以給你一定的幫助。

我們先聊聊國內公司。

國內公司

國內公司,包含傳統網際網路企業,還有一些國企、央企。

面試流程

從我的面試經驗來說,國內公司大致的流程是這樣的。

  • HR 溝通:順帶約下一輪的時間;
  • 筆試:對於社招而言,網際網路公司筆試比較少,但國企、央企還比較常見。
  • 一輪技術面試:這一輪的面試官,一般都是團隊內比較資深的工程師,技術細節的問題偏多,最後,一般還會預留20分鐘左右的時間,出一道演算法題, 大概是 LeetCode Medium 級別。
  • 二輪技術面試:這一輪的面試官,一般是團隊直屬 Leader。具體的內容可能因人而異,有些面試官,喜歡在一個問題上持續深挖,試探你的「技術深度」;有些面試官,喜歡跟你聊行業動向,考察你的「知識廣度」。當然,大部分情況來說,兩者都會考察。
  • 三輪技術面試(終面):這一輪的面試官,一般是 Leader 的 Leader。從我的經驗上來看,這一輪主要是考察候選人的「潛力」。那麼,如何判斷候選人的潛力大不大呢?答案就是:「基礎」、「品性」。這一輪面試聊的內容,可能時而比較抽象,時而比較底層。
  • HR 面試:到了這一步,你的技術能力就已經得到認可了。剩下的,就是其他方面能力的考察了。通常來說,只要你沒有誠信之類的問題,HR 是不會輕易拒你的。

那麼,面試國內的大廠,我做了哪些準備呢?

面試準備

每個技術領域的知識,其實都是模組化的,我把它們分為以下幾個部分:

演算法資料結構:由於平時工作中用的並不多,所以,有必要在面試之前重新補一補演算法和資料結構。

具體,我的做法是這樣的:

  • 資料結構:關閉 IDE 的語法提示,用主力語言(我用的 Kotlin)實現一遍常見的資料結構:Array、List、Stack、Queue、Map 等等;
  • 演算法:同樣的,再把常見的演算法自己手寫一遍:常見的7種排序演算法、3種字串搜尋演算法、雙指標、多指標、回溯,等等。
  • 刷題:對於國內公司的面試準備,掌握 LeetCode 上 Top 200 的高頻題就已經可以輕鬆應對了。注意,這裡我說的是“掌握”,單純只是刷一遍是不太可能達到這種境界的。我喜歡用不同的思路,不同的程式設計思想,從不同的角度,去剖析同一道演算法題。比如,你可以去看看我的 GitHub:ZeroAndOne_8Solutions

除了資料結構與演算法之外,還需要注意:計算機基礎

是的,你沒看錯,社招同樣需要花時間補一補計算機的基礎知識。比如:計算機網路、作業系統、加密演算法等等。對於大部分工程師而言,Http、Https、Linux 系統、編解碼,都還是需要有一些基本認識的。

最後,也是最重要的:專業知識

比如,我是 Android 工程師,面試之前,我會花很長時間補專業知識,從基礎的到高階的。目前市面上對高階 Android 工程師的要求其實不低。

  • 基礎知識:最基本的,四大元件、生命週期、啟動模式、事件分發、自定義View,這些都要爛熟於心。
  • 效能優化:Android 效能優化,這個方向的水其實很深。但對於普通的 Android 工程師而言,掌握一些基礎的排查工具,以及基本的效能優化套路,還是很有必要的。如果是大廠專門做效能優化方向的工程師,往往需要深入 Dalvik、ART 虛擬機器去做優化。
  • Framework:這部分,也許很多人會把它當作八股文來看待,比如: App 啟動流程、Binder 機制,等等。我自己在準備的過程中,並不會強迫自己記住 Framework 層的具體細節,更多的,是去理解它背後的設計思想。工作中遇到問題的時候,去網上查原始碼,具體情況具體分析即可。
  • 工程架構:在準備這個部分的時候,我主要是去讀了一下主流的開源專案,並嘗試自己手寫實現出它們的 Kotlin 版本。在這個過程中,我不僅對專案本身有了更深的理解,對 Java 和 Kotlin 也有了更深的認識。
  • 新技術:每個技術領域,一定是持續發展的。比如說,Android 領域,就有:Kotlin、協程、KMM、Compose 等等。不過,有趣的是,幾乎沒有面試官問我這方面的知識,我猜他們都很相信我吧。

聊完國內公司了,我們再聊聊國外公司吧。

外企

由於我肉身在國內,所以聊的外企大致分兩種:Base 中國地區、Base 亞洲地區。Base 歐美地區的職位我都沒有去聊,一方面我沒有打算跑這麼遠,另一方面歐美的職位一般也不會考慮亞洲地區的候選人,簽證之類的問題還是比較麻煩的。

面試流程

外企的面試流程和國內並不同,一般來說會是這樣的。

  • Recruiter 電話溝通(英語):這一輪,業內一般叫做Intro Call。外企的簡歷篩選標準還是比較高的,能接到 Recruiter 的溝通面試,就已經說明候選人有很不錯的背景了。這個階段,Recruiter 主要介紹崗位的資訊。當然,Recruiter 也會考察候選人的英語「聽」、「說」能力,還有計算機基礎知識。對,你沒看錯,Recruiter 也會問一些計算機相關問題,如果你的回答不能令 TA 滿意,可能就沒有後續了。(額外說明:外企面試流程當中,Recruiter 會充當國內 HR 的角色,這一點外企分工會更明確一些,不同的階段,也會有不同的 Recruiter 對接。)
  • 一輪技術面(英語):這一輪,業內一般叫做Phone Interview,也叫「電面」,是遠端的。面試官一般會是和你有相同技術棧的工程師,考察內容基本上就是:半小時資料結構演算法、半小時技術,難度不會太大。這輪面試的作用其實就相當於一輪初篩。
  • N輪技術面試(英語):從這一輪開始,業內一般叫做Onsite Interviews。在疫情出現之前,一般都會要求候選人到公司現場面試,用白板和馬克筆進行面試,而且是:從早上面試到下午,車輪戰。這樣的面試一般有3~5輪,根據每個候選人的情況而定。面試內容,不僅涉及資料結構演算法,還會有系統設計內容(System Design)、領導力(LeaderShip)等等。近幾年,由於疫情原因 Onsite 也是線上影片面試了。經過前面的4~6輪面試以後,Recruiter 會收集面試官對你面試評價,提交給「技術委員會」(Hiring Committee)來統一評判。
  • Team Match:一般來說,到這個階段就說明你已經通過「技術委員會」評審了。這時候就需要去匹配公司內部有 Head Count 的團隊了。外企的工程師文化是相對開放的,比如:我是 Android 工程師,通過面試以後,我也是可以去做前端、後端的——只要我願意,以及有人願意要我。這一輪的面試官,一般是有空缺 Head Count 的團隊 Leader,對方會介紹團隊的狀況,如果你加入會負責什麼事情,這是個「雙向選擇」的過程。

其實,不同外企的面試流程還是會有一些差異的。比如說,我經歷的外企面試當中,最多的有 8 輪,這不僅考驗技術,更考驗體能。

那麼,我是如何準備外企面試的呢?

面試準備

外企的面試準備,跟國內公司的其實差不太多,但是側重點不同,主要體現在下面兩個方面。

  • 資料結構演算法:外企面試的準備,需要掌握更多高階的資料結構與演算法:字串搜尋演算法、圖論演算法、動態規劃;並查集、單調佇列、線段樹、跳錶,越多越好。
  • 系統設計:前端與後端的系統設計,會有較大的差別。比如:前端(客戶端)的系統設計,可能會是設計一個 Twitter App;後端的系統設計則可能是整個 Twitter 的服務設計,負載均衡用什麼、什麼情況需要一致性雜湊,資料庫怎麼設計、Feed 流用什麼資料結構、訊息推送用什麼設計模式。由於我是 Android 工程師,因此我在準備的過程中,整體偏向前端的設計,去嘗試設計了市面上主流的 App:微信、Twitter、TikTok等等。

結尾

這次面試準備,前前後後我花費了將近4個月,也總結、收集了一些文件資料,主要涵蓋以下幾個方面:

  • 英語口語資料;
  • 資料結構演算法學習資料;
  • System Design 學習資料,國內基本沒有客戶端相關的系統設計資料,我主要收集的都是國外的文章與書籍;
  • 最後,就是 Android 進階相關話題的部落格、開源專案。比如:效能優化、外掛化、Framework、Kotlin、協程、Compose等等;

如果你最近打算找工作,歡迎關注我的公眾號「朱濤的自習室」然後加我為好友,我非常樂意將我的面試資料分享給你。另外,我這裡也有各個大廠的內推通道,我幫你內推的話,你的簡歷通過率也會更高一些。

當然,如果你所在的團隊和公司急需客戶端人才,也歡迎你聯絡我,我也很願意幫你擴散、轉發。

最後,也是最重要的一點:我目前所在的團隊也正在招聘,如果你感興趣,也歡迎你來諮詢

等你!