從北航計算機到位元組演算法崗

對白的演算法屋發表於2022-02-07

大家好,我是對白。

今天分享一位2022屆北航計算機系同學的求職心路歷程,對於秋招該如何準備以及如何成功收割offer都寫得非常詳細,希望能幫助到今年想要求職的朋友們,以下為原文。

去年10月結束秋招以後就一直在忙畢業論文和答辯的事情,所以這一篇秋招歷程的總結就一直拖到了現在(一定不是因為懶)。希望我的經歷能夠對後人有所幫助,拿到心儀的offer。如果有哪裡說得不對,也請各位大佬指出。

背景

首先介紹一下我個人的背景。我本碩都畢業於北航計算機學院,研究生階段的方向是知識圖譜問答,0論文,有兩段實習經歷。秋招投遞了大概10家公司的廣告演算法崗位,幾乎都走到了HR面,最後收到了5家公司的offer。最終選擇了位元組廣告演算法團隊。

個人感覺演算法方向的競爭還是非常激烈的,所以秋招一定要認真準備。

秋招怎麼準備

我個人把秋招的經驗總結為十六個字:熟讀八股,勤刷力扣,早去實習,海投簡歷

一次面試通常是由自我介紹、八股、程式碼題、專案經歷這幾個部分組成。八股和程式碼題可以在短時間內突擊準備,但專案經歷和整個面試體現出來的思維能力和實踐經驗是需要更長時間去規劃和積累的。

熟讀八股

這裡八股指的是計算機基礎和機器學習演算法知識,因為面試的時候這方面的考察通常是千篇一律,問題的集中度非常高,有套路可循,所以被稱為八股文。八股不是面試考察的重點,因為這些知識非常基礎,面試官只是想了解一下候選人對這些基礎知識的掌握程度。當然八股中的這些問題也可以深挖,觸及到非常底層和學術前沿的部分,考察候選人知識的深度。

我在面試過程中常見的一些八股問題:

  • 介紹幾種優化器的原理和區別
  • 介紹BERT/Transformer/Multi-head Attention
  • 交叉熵和MSE兩種損失函式的區別
  • 寫出SGD求解LR的虛擬碼
  • 介紹正則化方法
  • Batch Normalization和Layer Normalization的原理與區別
  • 模型評價指標
  • RNN梯度爆炸的原因

在有一些基礎的情況下,可以在網上搜羅面經,針對面經中提到的問題做準備。但如果本身相關的基礎就不是很好,先從頭學起吧。這裡推薦復旦邱錫鵬老師的《神經網路與深度學習》這本書,上面提及的許多問題都可以在書中找到答案。李航老師的《統計學習方法》和《百面機器學習》也是不錯的參考資料。

 

勤刷力扣

刷題用哪個平臺其實都無所謂,國內主要是力扣和牛客。程式碼題這部分考察的是基本的程式碼能力,面試過程中是一定要做出來的,所以要多加練習。無所謂使用什麼語言,哪個熟練用哪個就好了。我自己使用的是C++。

我從找實習的時候就開始在力扣上做題,到秋招結束的時候一年多的時間做了600多道題。需要做多少題看個人,沒有定數,時間允許的條件下當然是越多越好。

刷題不能隨機刷題,要按照知識點類別,逐個擊破。刷題網站上的每道題都有對應的分類。需要學習的包括連結串列、棧、佇列、二叉樹、堆、雜湊表、並查集等基礎資料結構,以及二分、排序、搜尋、圖論、貪心、動態規劃等演算法。

建議先學習知識,再練習解題。這裡推薦OI Wiki,裡面的講解非常清楚,也有對應的程式碼實現。

刷題的時候遇到不會的題,15分鐘沒有思路就可以直接看題解了,不要浪費時間。

會的題也要看一下題解,學習最優解的方法,一般面試中都要求寫出最優時間複雜度的解法。

早去實習

我在實驗室只做了一些落地的專案,沒有產出可以發表論文的成果,所以很早就去找實習了。

相信大多數人都和我一樣沒有論文。從我秋招面試的經歷來看,實習的經歷非常重要,面試的大部分問題都在圍繞著實習中的工作。

一方面,在實習過程中可以獲取實踐的經驗,豐富自己的經歷,在大廠對口方向的組實習並且能夠有產出的候選人是非常受重視的,因此實習經歷在秋招過程中非常重要;另一方面,實習可以瞭解實際工作的內容是什麼樣的,瞭解到工作環境氛圍等外界不知道的資訊,避免出現正式入職才發現不適應的情況。

如果沒有頂會論文並且在實驗室也沒有希望發論文的話,非常建議儘早去實習,不然很容易發現時間過去了,但是什麼收穫也沒有。在公司實習就算沒有知識和能力上的收穫,至少還能拿到錢。

有一段實習經歷以後,無論是秋招還是找下一段實習都是非常容易的事情,所以不要因為自己沒有準備好而害怕投實習被拒。如果真的沒有準備好,簡歷上一片空白,可以先自己找比賽和專案做,或者投小公司的實習。

無論是實習、論文、競賽還是專案,都是個人的產出,體現個人的能力。無論是在簡歷上還是面試過程中向別人講述的時候都一定要注意體現出自己的能力。因此講述專案經歷也是非常重要的。

要按照背景、難點、解決方案和結果四個方面講。

  • 背景。有時候面試官和你的方向不同,不太清楚你的專案是解決什麼問題,這時候就需要快速清晰地講出這個專案的背景。包括但不限於 滿足什麼需求,在什麼場景,是什麼樣的任務。
  • 難點。一個專案中肯定有它的難點,是這個專案著力去解決的問題,如果是一個非常簡單的事情肯定不太值得說。需要提煉出專案中困難的點,例如缺少資料、大模型訓練成本高、已有的方法忽略了XX資訊/條件等等。
  • 解決方案。專案中做的事情,包括但不限於 怎樣分析問題,針對難點如何設計。面試官經常會問的一個問題是為什麼用了A而不用B,A比B有什麼優勢,這種問題要提前做好準備。這裡是面試過程中非常體現面試官水平的地方,厲害的面試官會在這裡問很多尖銳深刻的問題。
  • 結果。結果最好要以直觀的方式展現,例如對比基線準確率提升XX%,比賽排名XX,PV增加XX%等。

海投簡歷

投遞簡歷一定要早投和海投。

我從7月底開始投遞簡歷,到9月底結束所有面試。儘管如此,還是有某些公司在我投遞的時候已經不招人了。金九銀十已經成為過去式。所以要在各家公司提前批開始的時候就投遞簡歷。

另外就是要海投。在面試到offer轉化率不變的情況下,投遞越多最後獲得的offer就越多,就有更多的選擇。面試有很多運氣成分在裡面,投遞少的話風險也是比較大的。

當然在秋招期間也要不斷地提升自己,優化這個轉化率。建議先投遞小廠或者不想去的公司,可以先積攢面試的經驗,然後再投遞想去的公司。每一次面試完以後要立刻記錄下這次面試中出現的問題,對這次面試中暴露出的不足做改正。例如沒做出來的程式碼題,沒記住的八股文,沒學過的知識點,沒講清楚的專案經歷,這些都要在面試完以後查漏補缺。

從投遞簡歷到HR面,整個週期會長達一個多月,所以按照自己的能力和麵試情況靈活安排當前面試的公司數量。

面試經驗

面試考察的內容一方面是知識和程式碼能力,另一方面是溝通和團隊協作的能力。

面試過程中遇到不會的問題很常見,如果不會不用強答,表達出自己在這點確實有些不足,會加強學習就好了。另外也要能夠引導面試官向自己熟悉的領域提問,如果面試官問A你不會,你可以表達不會A,但熟悉與A相似的B,引導他對B提問。

面試官的題目逐漸變難,說明面試官對候選人感興趣,並不是刁難。此時不要慌,說明比較穩了,正常回答就好了。但如果一開始題目就非常難,那可能是被刷KPI了。

專案經歷的講述方式要根據面試官的反饋不斷調整。面試會有很多次,如果一個敘述方式讓面試官沒有太明白或者引出了比較難的問題,可以試著調整一下敘述方式。這麼多輪的面試其實也是一個實驗不同表達方式的過程。

 

最後歡迎大家關注我的微信公眾號:對白的演算法屋(duibainotes),跟蹤NLP、推薦系統和對比學習等機器學習領域前沿。

想進一步交流的同學也可以通過公眾號加我的微信一同探討技術問題,謝謝。

 

相關文章