天天看點

秋招必備:斬獲騰訊offer的履歷分享!

關于履歷+面經分享,希望大家對大家秋招有所幫助。

面試

這次春招實習,一共面了7家公司,經曆了20多輪面試,拿了6家offer,最終選擇了騰訊的CDG騰訊廣告部門,推薦算法崗位,base深圳。

不同于其他面經分享面試官問的具體題目,我主要是從大方向分享如何準備面試,授人以魚不如授人以漁。分為履歷、自我介紹、考察知識點三部分。

1 履歷

履歷一定清晰簡潔,不要花裡胡哨,内容控制在一頁。參考下面這個模闆

秋招必備:斬獲騰訊offer的履歷分享!

除了自己的基本資訊外,最重要的就是要項目(實習、比賽、論文都算作項目一種)。有兩點需要注意。第一點描述項目的時候不要隻羅列關鍵字!HR和面試官希望能夠在項目描述中看到候選人在整個項目中的工作,遇到了什麼困難,如何解決,如何對流程進行推進與思考。因為掌握具體的技術是一方面,掌握對AI這種存在不确定性的項目的思考方式和把握更重要。候選人需要展示出對項目問題的深入了解和insight。舉例感受一下:

一個不好的例子:

本人項目中使用了TensorFlow、協同過濾、FM、GBDT+LR、DeepFM、DIN等推薦算法

首先這些關鍵詞并不是同一個邏輯概念。其次,完全看不出你是如何使用以及為什麼使用這些算法,讓人感覺像是在堆砌名詞,印象很不好。因為我之前參加了很多AI算法比賽,項目裡寫的都是比賽經曆,這裡以比賽舉例。

一個好的例子:

我首先對資料EDA發現不少缺失值,使用xxx進行填充。然後根據賽題背景構造了xxx等特征。模型線下驗證發現過拟合現象,通過使用xxx特征篩選和正則化解決。同時使用aaa、bbb、ccc進行多模型權重融合。将融合後的數值作為最終結果值。參賽隊伍共xxx人,最終獲得冠軍。

這樣一段描述就很有層次地描述出了項目的推進過程,遇到的問題和改進方案,最終取得的成績。

2 自我介紹

一般面試開頭就是自我介紹。自我介紹不要照着履歷念,應分為三大塊:

  1. 個人資訊:學曆,校園經曆
  2. 項目:項目含金量如何,取得了怎樣不錯的成績。目的就是讓面試官覺得你很厲害。前提是符合事實,不要瞎編,否則發現後會被拉進黑名單。
  3. 技術棧:很多人會忽略這一重要點。算法範圍那麼廣,每個人都有側重點,說出自己擅長的技術棧,這樣面試官才好針對性提問。

作為開頭,一定不能緊張,不然會影響接下來面試的發揮。是以最好自己事先寫下來練習好,語速要平穩,保證在2分鐘左右即可。

3知識點

3.1 資料結構與算法

資料結構包含:數組、連結清單、棧、隊列、樹、散清單、圖。資料結構本質是描述資料與資料之間的關系

算法包含:排序、查找、五大經典算法(動态規劃、回溯、分支界限、分治、貪心)。計算機解決問題其實沒有任何奇技淫巧,它唯一的解決辦法就是窮舉。算法設計的本質無非就是先思考「如何窮舉」,然後再追求「如何聰明地窮舉」。「聰明的窮舉」分為兩部分:「去掉重複的窮舉」、「去掉不必要的窮舉」。比如,備忘錄法,用數組儲存求過的結果,用空間換時間,這就是去掉重複的窮舉;動态規劃根據最優子結構,使目前問題隻與某幾個子問題有關,進而大大減少問題分解次數,這就是去掉不必要窮舉。

注意:很多文章喜歡把遞歸當做一種算法,這樣是錯的。遞歸是一種程式設計寫法,如同循環一樣。

準備這一部分的最好方法就是刷題。算法發展時間短,不同于數學發展那麼多年,形成了定理公式。數學做一道題,是從這道題涉及到哪些公式着手。而算法做一道題,是看這道題涉及到哪些知識點,這些知識點與以往的哪些題目相聯系,相當于是把不會的題目,分解成會的題目,用以前的解法架構,幫助解決不會的題目。比如說,讓你求解一個迷宮,你要把這個問題層層抽象:迷宮 -> 圖的周遊 -> N 叉樹的周遊 -> 二叉樹的周遊。然後讓架構指導你寫具體的解法。是以整個過程是在鍛煉你的抽象思維,訓練你透過問題找架構。

抽象思維是程式員必備技能,因為計算機本質上就是一門抽象的藝術。具備好的抽象思維對學習能力也是一種極大地提高。後面我會單獨寫一篇文章,講解什麼是抽象思維,如何訓練抽象能力。

另外刷題要有章法,比如:先刷10道動态規劃,了解其套路後,再去刷回溯。而不是每天随機刷題。

資料推薦:

LeetCode網站、劍指offer

3.2 機器學習

人工智能、機器學習、深度學習關系如下:

秋招必備:斬獲騰訊offer的履歷分享!

我們一般說機器學習都是指除了深度學習以外的機器學習,也稱為傳統機器學習。雖然近幾年深度學習越來越火,但是很多領域還是在使用機器學習,并且學好機器學習,對于AI算法基礎和知識廣度都有很大提高。

機器學習模型非常多,全部掌握不現實,我給大家羅列幾個經典,也是面試中常考的模型:邏輯回歸、SVM、樹模型、內建學習、樸素貝葉斯、K-Means聚類、PCA。(EM、最大熵、機率圖這些考的少,能了解是加分項)。

在學習過程中,各個模型是互相聯系的,不要孤立去分析單個模型。比如:邏輯回歸,我認為是最基礎、也最重要的模型:

秋招必備:斬獲騰訊offer的履歷分享!
  1. 邏輯回歸=線性回歸+sigmoid激活函數,進而将回歸問題轉換為分類問題
  2. 邏輯回歸+矩陣分解,構成了推薦算法中常用的FM模型
  3. 邏輯回歸+softmax,進而将二分類問題轉化為多分類問題
  4. 邏輯回歸還可以看做單層神經網絡,相當于最簡單的深度學習模型

通過邏輯回歸由點及面,就能演化出如此多模型。再比如樹模型。我們把以決策樹為基礎的一系列模型統稱為樹模型,也是AI比賽中最常用的模型。

  1. 決策樹經曆了三次改進,ID3、C4.5、CART,主要差別在于一個根據資訊增益劃分特征、一個根據資訊增益率、一個根據基尼指數。
  2. 随機森林=決策樹+Bagging內建學習
  3. GBDT=決策樹+AdaBoost內建學習
  4. XGB是陳天奇2014年提出,相當于GBDT的工程改進版,在實用性和準确度上有很大提升。比如:使用泰勒二階展開近似損失函數,支援處理缺失值、在特性粒度上并行計算等等特性。
  5. LGB是微軟2016年提出,對XGB進行了改進,使用單邊梯度采樣算法減少不必要的樣本;在尋找最優分割點時采用直方圖算法使計算代價更小;支援類别特征...
  6. CGB是Yandex2017年提出,對類别特征進行了更完美的支援。

是以學習模型,要由點及面,層層遞進。這樣不僅友善了解,也有利于歸納總結,同時還能鍛煉搭建知識體系的能力。

資料推薦:

李航《統計學習方法》,我認認真真看完了這本書,并對重要模型公式進行了一步步推導,收獲很大。每次重讀這本書都能有新的收獲,值得反複閱讀。

周志華《機器學習》聽說也不錯

工具:

numpy、pandas、scikit-learn這三件套需要熟練掌握,特别是scikit-learn,幾乎實作了所有機器學習算法。如果自己想實作某個算法來加強了解,也可以參考scikit-learn源碼。

3.3 深度學習

前面也提到了,深度學習本屬于機器學習,但是鑒于其發展迅速、應用越來越廣泛,是以單獨拿出來說。深度學習每年新模型、新技術層出不窮,一味追求新技術不可取,要先打好基礎。比如:對于一個簡單的全連接配接神經網絡,包含訓練算法(正向傳播、反向傳播),激活函數(sigmoid、ReLU、Maxout、softmax等),正則化(L1和L2、Dropout、提前早停等),優化算法(随機梯度下降、Momentum、Adagrad、Adam等)

掌握了基礎後,再根據自身領域學習相關的模型。大部分人找工作屬于這三個領域:

  1. 計算機視覺(CV):卷積神經網絡(CNN)及其改進。
  2. 自然語言處理(NLP):循環神經網絡(RNN)及其改進,Transformer、Bert等。
  3. 推薦算法:Embeding、Wide & Deep及其改進。

這三個領域既有所不同,又互相聯系。比如:NLP中根據前面n個單詞預測下一個單詞,如果我把單詞看成商品,那麼這就成了推薦算法中個性化推薦問題。是以推薦算法中借鑒了很多NLP模型。是以我們在學習的時候不要僅局限于目前領域,也要關注其他領域。當其他領域出現新模型,取得不錯進展時,要思考能不能應用在自身領域上。總而言之,這些知識是對立統一,我們要用辯證的思維去學習,去思考。

資料推薦:

《DeepLearning》,又名「花書」被譽為深度學習領域聖經。這本書寫的很好,但是内容太多了,一口氣吃完不現實。适合當做工具書,時不時拿出來翻閱。

邱錫鵬《神經網絡與深度學習》

工具:

TensorFlow、Pytorch。工業上偏向于TensorFlow,學術界偏向于Pytorch。别壓注單個,建議兩個都學,至少要能看懂别人的代碼。因為論文代碼複現有的用TensorFlow,有的用Pytorch。

3.4 推薦算法

推薦系統包含了推薦算法。推薦系統架構如下:

秋招必備:斬獲騰訊offer的履歷分享!

圖檔來源于網絡

資料層:前後端通過埋點記錄使用者日志資料,KaFka消息隊列将資料存入HDFS大資料檔案系統中。這一層技術棧是Hadoop、Spark大資料元件

政策層:平常所說的推薦算法就是指這一層,需要重點掌握。首先是召回,主要根據使用者部分特征,從海量的物品庫裡,快速找回一小部分使用者潛在感興趣的物品,然後交給排序環節,排序環節可以融入較多特征,使用複雜模型,來精準地做個性化推薦。召回強調快,排序強調準。這一塊重點掌握模型:協同過濾、矩陣分解、FM、Embeding、Wide&Deep及其改進。

應用層:根據業務需求而不同。比如:廣告點選、商品推薦、短視訊推薦。

後面我會寫一篇文章,分享我的推薦算法學習路線。

資料推薦:

王喆《深度學習推薦系統》,這本書高屋建瓴的介紹了推薦系統整體架構,發展曆史以及未來趨勢,各種推薦模型的演化之路,很适合前期用來搭建推薦系統知識架構。但是具體的模型并沒有深入講解,還得自己去看論文。這個也很正常,作為算法人員,經常看論文是必須的,就像開發人員要時常看官方技術文檔。

3.5 其他

除了資料結構與算法之外,作業系統、計算機網絡、計算機組成原理、資料庫也是計算機中最基礎、最重要的課程。在開發崗面試中必考,算法崗考得相對少,但是掌握這些基礎知識,很能提升程式設計素養,建議還是學一學。雖然我是計算機科班出身,但是之前這方面比較薄弱,去年寒假,我在家把這些課程又重新好好學了一遍,收獲很大!後面我會面向非科班的算法人員,對這些課程各寫一篇文章進行形象化介紹,讓非科班算法人員既能有一個大概的了解,同時又能不拘泥于細節導緻颠倒學習重心。

AI算法技術方面,我不會寫基礎教程文章,因為這些教程網上太多了,我寫出來也不一定有别人好。我主要寫工作中經過實踐的算法技術和前沿知識。内容上一定要有自己的想法,不可照搬。

目前我研究所學生生涯已過了一半,這期間我最大的收獲不是AI算法知識,也不是那些比賽榮譽,而是學習思維和人生感悟。這兩把武器就像生活中的錨點,讓我面對人生洪流時不至于被沖垮。

繼續閱讀