算法工程師:雙非渣碩是如何得到百度、京東雙SP

本人本科碩士皆雙非,和牛客大佬們沒得比,目前拿到的還能夠的offer就是百度SP和京東SP,都是作的推薦算法,其餘的不說了。前端

先說一下我的經歷吧,學校比較水,實驗室沒有項目,實習經歷:騰訊實習+滴滴實習   比賽經歷:幾個數據挖掘競賽Top5的名次。java

我的感受,算法崗確實看學校,但若是簡歷還能夠的話,仍是有面試機會的,內推投的簡歷,80%都給了面試機會吧。python

百度提早批(feed部):

3輪電話面,遠程桌面coding。程序員

百度的面試風格實際上是比較好把控的,基本就是項目問答、coding、機器學習算法、CS基礎,偶爾會有些機率題智力題。面試

算法題:算法

1. 兩個有序數組求中位數(leetcode)編程

2. 判斷平衡二叉樹(劍指offer)數組

3. 最長上升子序列(lintcode)網絡

4. 二叉樹轉雙向鏈表(劍指offer)數據結構

5. LRU cache實現(leetcode)

6. House Robber(leetcode)

機器學習問題:無非就是樹模型(gbdt、xgboost、rf、lightgbm)原理,LR、FM原理,w2v原理,深度學習在推薦系統上應用(和麪試官討論了google的兩篇paper,其中wide&deep network講的時間比較長),神經網絡embedding層和w2v中的embedding的實現區別,其餘的記不清了。

CS基礎:進程線程區別,多線程實現方式,線程衝突是什麼、怎麼解決,TCP三次握手細節,海量數據排序(分治),其餘的不記得。

京東提早批(廣告部):

2輪電話面,遠程寫code。

京東的面試我的以爲不是太難,廣告部今年招人比較多,面試內容的話也是圍繞項目+機器學習算法來問的,本人有京東算法賽Top20,可能也是個加分項吧。

算法題:鏈表翻轉、判斷平衡二叉樹、最長公共子序列、海量數據topk問題、蓄水池抽樣算法

機器學習問題:也是簡歷上寫的算法來問的,以及問了一些DL的基礎,不難。

蘑菇街:

2輪電話面+1輪CTO面。

蘑菇街的面試只是圍繞項目進行的,2輪各30分鐘左右,都是在問項目,以及項目中用到的技術、算法,不難。

騰訊:

對實習所在部門的工做不感興趣,因而提早離職參加了提早批。面了AI平臺部,感受是經歷過最難的面試,面試官的問題一個接着一個,有點咄咄逼人,無奈水平不夠,跪了,校招時候,作了筆試沒被通知面試。

1. 項目介紹 

2. 你這個項目中間哪些地方提高,中間過程分別提高了多少CTR? 

3. 你項目用的分佈式LR的是用什麼優化方法,參數怎麼調的,mini-batch的batch是多少? parameter-server原理,如何解決數據一致性? 

4. 會分佈式麼,hadoop,spark會麼,說說hadoop的災難處理機制 

5. hadoop一個節點數據量太大拖垮reduce,怎麼辦,Hadoop自己的處理機制是怎麼樣的,手工的話能夠怎麼調 

6. hadoop數據傾斜問題如何解決 

7. L一、L2的區別,L1爲何能夠保證稀疏? 

8. 各類最優化方法比較 擬牛頓法和牛頓法區別,哪一個收斂快?爲何? 

9. 深度學習的優化方法有哪些? sgd、adam、adgrad區別? adagrad詳細說一下?爲何adagrad適合處理稀疏梯度? 

10. DL經常使用的激活函數有哪些? 

11. relu和sigmoid有什麼區別,優勢有哪些? 

12. 什麼是梯度消失,標準的定義是什麼? 

13. DNN的初始化方法有哪些? 爲何要作初始化? kaiming初始化方法的過程是怎樣的? 

14. xgboost裏面的lambdarank的損失函數是什麼? 

15. xgboost在什麼地方作的剪枝,怎麼作的? 

16. xgboost如何分佈式?特徵分佈式和數據分佈式? 各有什麼存在的問題? 

17. lightgbm和xgboost有什麼區別?他們的loss同樣麼? 算法層面有什麼區別? 

18.lightgbm有哪些實現,各有什麼區別? 

阿里的話二面跪了,內推的阿里媽媽,難度比較高,跪了也是意料之中。

還有一些公司的面試沒有參加,滴滴(面試時間和騰訊筆試衝突了,放棄),網易(2次筆試都過了,不過拿到百度後就沒有去面了),搜狗(電話面了1面後,讓去現場面二面,放棄),拼多多(二面被面試官放鴿子)。

其餘的offer就是一些小公司了,蘑菇街、YY、Bigo這些,主要仍是問項目,參考意義不大。 

PS:Bigo的推薦算法團隊很是厲害,都是百度高T出來的,並且今年待遇很是給力。 

 

下面說一下我的的學習經歷吧。 

雖然是CS專業,但實驗室作的方向和ML半毛錢關係沒有,且實驗室也只有我一我的在搞ML,因此也算是野路子出身了。 

理論基礎:CS229視頻、西瓜書、統計學習方法、數據挖掘導論、推薦系統實踐、深度學習 

實踐基礎:機器學習實戰(研一時候照着書上代碼打了一遍)、利用Python進行數據分析(照着書敲過一遍)

完成了這些基本功以後就是參加一些比賽了,剛開始入門的時候搞天池和Datacastle比賽,成績都很水,而且是孤軍做戰,箇中心酸只有親身經歷才能體會,後來研二後開始和一些外校的大神組隊,拿了幾個還能夠的名次,也在大神身上學到了很多東西,因此我的感受作比賽最好仍是要組隊,思惟更加開闊,一我的悶頭作很容易放棄。研二上學期末開始去實習,實習作的也是搜索引擎、NLP、推薦算法相關。

 

再說一下面試須要準備哪些吧。

算法工程師的面試其實就是圍繞幾項來展開的。

1. 機器學習算法理論:LR、SVM、樹模型、FM/FFM、EM、LDA、word2vec、推薦算法等等,都會被問到,須要懂得算法的推導、適用場景、使用的Trick、分佈式實現。

2. 深度學習相關:CNN、RNN、LSTM的基本原理,不一樣激活函數的差別等等,若是是面的傳統機器學習崗的話,DL問的不深,但必定會問。

3. 數據結構與算法:leetcode高頻題、lintcode高頻題、劍指offer,大概這三樣準備好就夠了,校招前保證100多道題的積累量,面試時候寫code應該就手到擒來了。

4. CS基礎:計算機網絡、操做系統,推薦書籍:王道程序員面試寶典,這本書對於突擊面試頗有幫助。

5. 分佈式:Hadoop/Spark這些,屬於加分項,會問點基本原理,仍是須要看一下。

6. 編程語言:雖然作比賽都是用的Python,但C++或者Java必須掌握其中一個,面試也會問一些語言相關的

7. 海量數據處理:常常問的就是海量數據排序

Anyway,我的的秋招結束了(其實結束好久了),雖然有些遺憾,但拿的offer和薪資也都挺滿意了,滿足,開始弄畢業論文了,但願能順利畢業吧,就寫到着吧,語序有點混亂,湊合着看吧。

PS:最近私信個人朋友太多,這裏再補充點吧。

對於學校不那麼好的、又立志找算法工做的同窗,這裏給點建議:

1、儘快去實習!若是是3年學碩的話,研二上學期中下(11月-次年2月) 就能夠去進廠裏實習了,這樣作的好處是能夠避開春招實習生的招聘高峯,比較容易進大廠,據我所知,像百度、滴滴、頭條這些公司都有常年在招實習生的,固然了,大部分是在北京。那麼怎麼找這種實習呢,推薦幾種投簡歷的渠道:1. 實習僧 2. nlp job 3. 北郵人論壇的實習板塊。對於學校不那麼好的同窗,若是簡歷上有一二線公司的實習經歷,那麼內推簡歷經過篩選的可能性就大的多了。

2、 關於數據挖掘比賽,不少同窗問我如何入門這塊,個人建議是分步進行,1. 先熟悉python的基本語法、numpy、pandas、sklearn、gensim、keras這幾個比賽中經常使用的庫的使用;2. 精讀優秀比賽選手的代碼,學習比賽的套路;3. 作完以上兩步,就能夠開始參與比賽了,天池、CCF、DataCaslte、Kaggle等平臺的比賽均可以,不要貪多,同一個時間段最多參加2個比賽就能夠,而後天天堅持優化結果,雖然過程可能會有點枯燥,可是最終會有收穫的,通過觀察與親身實踐,這類比賽比較吃經驗(套路),要想取得比較好的名次,一般須要參加幾回比賽積累失敗的經驗才行,過程少則半年,多則一年。

3、算法題必定要刷! 若是時間緊,就刷上面說的三件套(leetcode高頻題、lintcode高頻題、劍指offer),固然,要多刷幾遍,作到看到題目馬上想到思路並寫出bug free的代碼。若是時間比較充裕,能夠刷刷leetcode中medium和hard的題目,鍛鍊思惟與編碼熟練度,總之,刷題是一個鍥而不捨的過程,切忌三天打魚兩天曬網!

4、專一於一個方向! 發現有些同窗(包括我年輕時候),總喜歡這搞點那搞點,今天學一下機器學習,明天學一下Java後臺,後臺再學一下前端。這種方法對於大部分人來講是錯誤的(大牛忽略)!你要搞機器學習就專心搞,三條線並行搞:1. python -> 刷比賽  2. java -> hadoop/mapreduce/spark 3. python -> 深度學習,工做沒你想象中那麼難找。

 

做者:智障哦

本文來源於牛客網

——————————

牛客網(www.nowcoder.com)

- 互聯網名企筆試真題

- 校招求職筆經&面經

- 程序員求職實習信息

- 程序員學習交流社區

相關文章
相關標籤/搜索