作者:xfcherish
鏈接:https://www.nowcoder.com/discuss/65323?type=0&order=0&pos=50&page=1
來源:牛客網
https://www.zhihu.com/question/59683332/answer/281642849 知乎回答的補充部分
* 在知乎上發過,但是被人指出貼題目是非常不好的行為,所以偷偷地發在這里
* 我基本不上牛客,如果要跟我討論問題還是請在知乎上聯系我
* 發現有錯誤的,歡迎指出
* 里面很多問題,我面試時也沒回答好,我也沒有標准答案
* 歡迎給我知乎的回答點贊 ^_^
(1)代碼題(leetcode類型),主要考察數據結構和基礎算法,以及代碼基本功
雖然這部分跟機器學習,深度學習關系不大,但也是面試的重中之重。基本每家公司的面試都問了大量的算法題和代碼題,即使是商湯、face++這樣的深度學習公司,考察這部分的時間也占到了我很多輪面試的60%甚至70%以上。我去face++面試的時候,面試官是residual net,shuffle net的作者;但他們的面試中,寫代碼題依舊是主要的部分。
大部分題目都不難,基本是leetcode medium的難度。但是要求在現場白板編程,思路要流暢,能做到一次性Bug-free. 並且,一般都是要給出時間復雜度和空間復雜度最優的做法。對於少數難度很大的題,也不要慌張。一般也不會一點思路也沒有,盡力給面試官展現自己的思考過程。面試官也會引導你,給一點小提示,沿着提示把題目慢慢做出來也是可以通過面試的。
以下是我所遇到的一些需要當場寫出完整代碼的題目:
<1> 二分查找。分別實現C++中的lower_bound和upper_bound.
<2> 排序。 手寫快速排序,歸並排序,堆排序都被問到過。
<3> 給你一個數組,求這個數組的最大子段積
時間復雜度可以到O(n)
<4> 給你一個數組,在這個數組中找出不重合的兩段,讓這兩段的字段和的差的絕對值最大。
時間復雜度可以到O(n)
<5> 給你一個數組,求一個k值,使得前k個數的方差 + 后面n-k個數的方差最小
時間復雜度可以到O(n)
<6> 給你一個只由0和1組成的字符串,找一個最長的子串,要求這個子串里面0和1的數目相等。
時間復雜度可以到O(n)
<7> 給你一個數組以及一個數K, 從這個數組里面選擇三個數,使得三個數的和小於等於K, 問有多少種選擇的方法?
時間復雜度可以到O(n^2)
<8> 給你一個只由0和1組成的矩陣,找出一個最大的子矩陣,要求這個子矩陣是方陣,並且這個子矩陣的所有元素為1
時間復雜度可以到O(n^2)
<9> 求一個字符串的最長回文子串
時間復雜度可以到O(n) (Manacher算法)
<10> 在一個數軸上移動,初始在0點,現在要到給定的某一個x點, 每一步有三種選擇,坐標加1,坐標減1,坐標乘以2,請問最少需要多少步從0點到x點。
<11> 給你一個集合,輸出這個集合的所有子集。
<12> 給你一個長度為n的數組,以及一個k值(k < n) 求出這個數組中每k個相鄰元素里面的最大值。其實也就是一個一維的max pooling
時間復雜度可以到O(n)
<13> 寫一個程序,在單位球面上隨機取點,也就是說保證隨機取到的點是均勻的。
<14> 給你一個長度為n的字符串s,以及m個短串(每個短串的長度小於10), 每個字符串都是基因序列,也就是說只含有A,T,C,G這四個字母。在字符串中找出所有可以和任何一個短串模糊匹配的子串。模糊匹配的定義,兩個字符串長度相等,並且至多有兩個字符不一樣,那么我們就可以說這兩個字符串是模糊匹配的。
<15> 其它一些描述很復雜的題這里就不列了。
(2)數學題或者"智力"題。
不會涉及特別高深的數學知識,一般就是工科數學(微積分,概率論,線性代數)和一些組合數學的問題。
下面是我在面試中被問到過的問題:
<1> 如果一個女生說她集齊了十二個星座的前男友,她前男友數量的期望是多少?
ps:這道題在知乎上有廣泛的討論,作為知乎重度用戶我也看到過。如果一個女生說,她集齊了十二個星座的前男友,我們應該如何估計她前男友的數量?
<2> 兩個人玩游戲。有n堆石頭,每堆分別有a1, a2, a3.... an個石頭,每次一個游戲者可以從任意一堆石頭里拿走至少一個石頭,也可以整堆拿走,但不能從多堆石頭里面拿。無法拿石頭的游戲者輸,請問這個游戲是否有先手必勝或者后手必勝的策略? 如果有,請說出這個策略,並證明這個策略能保證必勝。
<3> 一個一維數軸,起始點在原點。每次向左或者向右走一步,概率都是0.5. 請問回到原點的步數期望是多少?
<4> 一條長度為1的線段,隨機剪兩刀,求有一根大於0.5的概率。
<5> 講一下你理解的矩陣的秩。低秩矩陣有什么特點? 在圖像處理領域,這些特點有什么應用?
<6> 講一下你理解的特征值和特征向量。
<7> 為什么負梯度方向是使函數值下降最快的方向?簡單數學推導一下
(3)機器學習基礎
這部分建議參考周志華老師的《機器學習》。
下面是我在面試中被問到過的問題:
<1> 邏輯回歸和線性回歸對比有什么優點?
<2> 邏輯回歸可以處理非線性問題嗎?
<3> 分類問題有哪些評價指標?每種的適用場景。
<4> 講一下正則化,L1和L2正則化各自的特點和適用場景。
<5> 講一下常用的損失函數以及各自的適用場景。
<6> 講一下決策樹和隨機森林
<7> 講一下GBDT的細節,寫出GBDT的目標函數。 GBDT和Adaboost的區別與聯系
<8> 手推softmax loss公式
<9> 講一下SVM, SVM與LR有什么聯系。
<10>講一下PCA的步驟。PCA和SVD的區別和聯系
<11> 講一下ensemble
<12> 偏差和方差的區別。ensemble的方法中哪些是降低偏差,哪些是降低方差?
...... 這部分問得太瑣碎了,我能記起來的問題就這么多了。我的感覺,這部分問題大多數不是問得很深,所以不至於被問得啞口無言,總有得扯;但是要想給出一個特別深刻的回答,還是需要對機器學習的基礎算法了解比較透徹。
(4)深度學習基礎
這部分的准備,我推薦花書(Bengio的Deep learning)和 @魏秀參 學長的《解析卷積神經網絡-深度學習實踐手冊》
下面是我在面試中被問到過的問題:
<1> 手推BP
<2> 手推RNN和LSTM結構
<3> LSTM中每個gate的作用是什么,為什么跟RNN比起來,LSTM可以防止梯度消失
<4> 講一下pooling的作用, 為什么max pooling要更常用?哪些情況下,average pooling比max pooling更合適?
<5> 梯度消失和梯度爆炸的原因是什么? 有哪些解決方法?
<6> CNN和RNN的梯度消失是一樣的嗎?
<6> 有哪些防止過擬合的方法?
<7> 講一下激活函數sigmoid,tanh,relu. 各自的優點和適用場景?
<8> relu的負半軸導數都是0,這部分產生的梯度消失怎么辦?
<9> batch size對收斂速度的影響。
<10> 講一下batch normalization
<11> CNN做卷積運算的復雜度。如果一個CNN網絡的輸入channel數目和卷積核數目都減半,總的計算量變為原來的多少?
<12> 講一下AlexNet的具體結構,每層的作用
<13> 講一下你怎么理解dropout,分別從bagging和正則化的角度
<14> data augmentation有哪些技巧?
<15> 講一下你了解的優化方法,sgd, momentum, rmsprop, adam的區別和聯系
<16> 如果訓練的神經網絡不收斂,可能有哪些原因?
<17> 說一下你理解的卷積核, 1x1的卷積核有什么作用?
........
同上,這部分的很多問題也是每個人都或多或少能回答一點,但要答得很好還是需要功底的。
(5)科研上的開放性問題
這部分的問題沒有固定答案,也沒法很好地針對性准備。功在平時,多讀paper多思考,注意培養自己的insight和intuition
下面是我在面試中被問到過的問題:
<1> 選一個計算機視覺、深度學習、機器學習的子領域,講一下這個領域的發展脈絡,重點講出各種新方法提出時的motivation,以及談談這個領域以后會怎么發展。
<2> 講一下你最近看的印象比較深的paper
<3> 講一下經典的幾種網絡結構, AlexNet, VGG,GoogleNet, Residual Net等等,它們各自最重要的contribution
<4> 你看過最近很火的XXX paper嗎? 你對這個有什么看法?
......
(6) 編程語言、操作系統等方面的一些問題。
C++, Python, 操作系統,Linux命令等等。這部分問得比較少,但還是有的,不具體列了
(7)針對簡歷里項目/論文 / 實習的一些問題。
這部分因人而異,我個人的對大家也沒參考價值,也不列了。
作者:熊風
鏈接:https://www.zhihu.com/question/59683332/answer/281642849
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
最近投了一堆機器學習/深度學習/計算機視覺方向的公司,分享一下自己的經驗,希望對大家有幫助。
個人背景: 華科本科 + 港科大碩士(MPhil)
拿到的offer有騰訊優圖,阿里AI lab,今日頭條,滴滴研究院,商湯科技,曠視(face++),大疆,快手。絕大部分是ssp(super special),給到了普通碩士能給到的最高檔。
最新修改:經人提醒,我意識到直接po公司的原題是非常不好的行為。所以我修改一下答案,只能指明大概的考察范圍。在此對我的所有面試官表示抱歉,未經同意貼出了所有的面試題。
寫在前面的話
這個回答的適用對象主要還是本科和碩士。PhD找工作的套路跟碩士還是很不一樣的,所以這個回答的經驗對於手握幾篇一作頂會的PhD大神並沒啥參考意義。
我也和我們實驗室幾個找工作的PhD學長學姐聊過,他們的面試主要是講自己的research,有的甚至就是去公司給個talk,跟本科碩士的校招流程完全不同。現在也是AI方向PhD的黃金時代,沒畢業就被各大公司主動聯系,待遇也比我這種碩士高很多很多。
一. 整體建議
一定要找內推。
內推一般有兩種,第一種力度比較弱,在公司的內推系統上填一下你的名字,加快一下招聘流程;第二種力度比較強,直接把簡歷送到部門負責人手上。個人比較建議第二種,會省事很多。
原因如下:
(1)現在做機器學習的人實在太多了,在不找內推的情況下,流程會特別特別慢。即使你的簡歷比較優秀,也可能淹沒在茫茫大海中,不一定能被懂行的人看到。
(2)現在很多公司的筆試其實挺有難度的,就算是大神也有翻車的可能性。
(3)對於大公司而言,即使通過了簡歷篩選、筆試那一關,你也很難保證你的簡歷被合適的部門挑中。很可能過關斬將后,發現給你安排的面試官並不是太對口。尤其是深度學習這樣比較新的領域,一般部門的面試官多半也是近期自學的,對這個也是一知半解。所以如果是想去BAT這些大公司里面專門做AI的部門,按照正常校招流程走是不合適的,一定要找到那些部門的員工內推。
在我看來,如果是跪在簡歷篩選、筆試這些上面,連面試官都沒見到,就實在太可惜了。為了避免這一點,請認真找內推。最好能聯系到你想去的公司部門里的負責人,直接安排面試。
二. 面試經驗
面試遇到的題目,可以分為幾個大類:
(1)代碼題(leetcode類型),主要考察數據結構和基礎算法,以及代碼基本功
雖然這部分跟機器學習,深度學習關系不大,但也是面試的重中之重。基本每家公司的面試都問了大量的算法題和代碼題,即使是商湯、face++這樣的深度學習公司,考察這部分的時間也占到了我很多輪面試的60%甚至70%以上。我去face++面試的時候,面試官是residual net,shuffle net的作者;但他們的面試中,寫代碼題依舊是主要的部分。
大部分題目都不難,基本是leetcode medium的難度。但是要求在現場白板編程,思路要流暢,能做到一次性Bug-free. 並且,一般都是要給出時間復雜度和空間復雜度最優的做法。對於少數難度很大的題,也不要慌張。一般也不會一點思路也沒有,盡力給面試官展現自己的思考過程。面試官也會引導你,給一點小提示,沿着提示把題目慢慢做出來也是可以通過面試的。
以下是我所遇到的一些需要當場寫出完整代碼的題目:
/*******************************************************************
經人提醒,意識到直接貼具體的面試原題是非常不好的行為,該部分不在回答里放出來了。
*******************************************************************/
不過這部分有些是LeetCode原題,在這里我簡單地舉幾個例子,附上LeetCode題目鏈接:
(2)數學題或者"智力"題。
不會涉及特別高深的數學知識,一般就是工科數學(微積分,概率論,線性代數)和一些組合數學的問題。
下面是我在面試中被問到過的問題:
/*******************************************************************
經人提醒,意識到直接貼具體的面試原題是非常不好的行為,該部分不在回答里放出來了。
*******************************************************************/
這部分有些題也在知乎上被討論過,這里附上相應的知乎鏈接
如果一個女生說,她集齊了十二個星座的前男友,我們應該如何估計她前男友的數量?
(3)機器學習基礎
這部分建議參考周志華老師的《機器學習》。
下面是我在面試中被問到過的問題:
/*******************************************************************
經人提醒,意識到直接貼具體的面試原題是非常不好的行為,該部分不在回答里放出來了。
*******************************************************************/
列一下考察的知識點,並附上相關的優質知乎討論。
邏輯回歸,SVM,決策樹
各種機器學習的應用場景分別是什么?例如,k近鄰,貝葉斯,決策樹,svm,邏輯斯蒂回歸和最大熵模型。
主成分分析,奇異值分解
隨機森林,GBDT, 集成學習
為什么說bagging是減少variance,而boosting是減少bias?
基於樹的adaboost和Gradient Tree Boosting區別?
為什么在實際的 kaggle 比賽中 gbdt 和 random forest 效果非常好?
過擬合
機器學習中使用「正則化來防止過擬合」到底是一個什么原理?為什么正則化項就可以防止過擬合?
(4)深度學習基礎
這部分的准備,我推薦花書(Bengio的Deep learning)和
/*******************************************************************
經人提醒,意識到直接貼具體的面試原題是非常不好的行為,該部分不在回答里放出來了。
*******************************************************************/
列一下大概的考察點和相關的知乎討論。
卷積神經網絡,循環神經網絡,LSTM與GRU,梯度消失與梯度爆炸,激活函數,防止過擬合的方法,dropout,batch normalization,各類經典的網絡結構,各類優化方法
CNN(卷積神經網絡)、RNN(循環神經網絡)、DNN(深度神經網絡)的內部網絡結構有什么區別?
sgd有多種改進的形式(rmsprop,adadelta等),為什么大多數論文中仍然用sgd?
你有哪些deep learning(rnn、cnn)調參的經驗?
深度學習中 Batch Normalization為什么效果好?
為什么現在的CNN模型都是在GoogleNet、VGGNet或者AlexNet上調整的?
Krizhevsky等人是怎么想到在CNN里用Dropout和ReLu的?
(5)科研上的開放性問題
這部分的問題沒有固定答案,也沒法很好地針對性准備。功在平時,多讀paper多思考,注意培養自己的insight和intuition
下面是我在面試中被問到過的問題:
/*******************************************************************
經人提醒,意識到直接貼具體的面試原題是非常不好的行為,該部分不在回答里放出來了。
*******************************************************************/
這部分在知乎上也有很多討論,不具體列了。
(6) 編程語言、操作系統等方面的一些問題。
C++, Python, 操作系統,Linux命令等等。這部分問得比較少,但還是有的,不具體列了
(7)針對簡歷里項目/論文 / 實習的一些問題。
這部分因人而異,我個人的對大家也沒參考價值,也不列了。
三. 平時應該怎么准備
在大多數情況下,你能拿到什么樣的offer,其實已經被你的簡歷決定了。如果平時沒有積累相關的經歷和成果,很難只靠面試表現就拿到非常好的offer。所以建議大家平時積累算法崗所看重的一些干貨。
下面幾點算是找AI相關工作的加分項:
(1)一作的頂級會議論文
(2)AI領域知名公司的實習經歷(長期實習更好)
(3)相關方向有含金量的項目經歷
(4)計算機視覺競賽,數據挖掘競賽的獲獎或者優秀名次。現在這類競賽太多了,就不具體列了。
(5)程序設計競賽的獲獎(例如OI/ACM/topcoder之類的)
當然,名校、高GPA這些是針對所有領域都有用的加分項,同樣也是適用於這個領域的。
所以我的建議就是,如果自己所在的實驗室很厲害,資源豐富,就專心做科研,發paper; 如果所在的實驗室一般,沒法產出相關的優秀成果,可以考慮自己做比賽和找實習。有一份知名公司的實習經歷之后,找工作難度會下降很多。
最后,祝有志於AI這個領域的人都能拿到滿意的offer.
http://geek.csdn.net/news/detail/242141
這是一篇不太專業的算法工程師面經,希望能給非科班想要從事機器學習工作的同學或學弟學妹一些建議,同時也回饋給予我很大幫助的咕泡學院。目前拿到的offer有:網易、三星、聯想、vivo、斗魚、拼多多、獵聘等等。面經分為兩個部分:虐心面試實錄和一點人生經驗。先上干貨再BB,大家可以針對性的選擇自己需要的部分,祝大家最后都能拿到心儀的offer啦。
虐心面試實錄
網易郵件事業部 數據挖掘工程師 offer
整數翻轉,如何處理越界問題
C++多態,靜態聯編和動態聯編,虛函數表
GMM原理,增大數據量是否會更好
模型融合如何做
股票買賣問題,一次買賣和兩次買賣
提升樹的思想,隨機森林和提升樹的區別
EM算法數學原理
SVM推導,對偶性的作用,核函數有哪些,有什么區別
分布式計算框架了解哪些
百度商業平台部 數據挖掘工程師 二面掛
python兩個每行都是數字的文件合並,去重。
shell編程,編輯文件。
進程與線程的區別
卷積神經網絡介紹
SVM的推導
大文件求交集,如何解決哈希之后小文件還是放不進內存
堆排序代碼
連續和最大問題,如何證明?
3sum問題,時間復雜度
最短路問題,第K條最短路
vivo 人工智能工程師 sp offer
bp算法介紹,梯度彌散問題。
svm介紹,優缺點是什么,lr介紹,區別是什么
lr與線性回歸的區別
如果要預測房價,用什么模型
如果要預測房價,並且知道一個房間的房型信息,如何構建模型
sigmoid 函數的應用有哪些,為什么?
列舉十種常用的神經網絡模型
語音識別模型有哪些
如何識別一個人在喝酒,需要幾個模型
蘇寧 算法工程師 備胎池涼了
卷積神經網絡中卷積如何實現,激活函數的意義,損失函數有哪些,初始化參數如何選擇
用過哪些深度學習框架,TensorFlow中的session是什么,session和interactivesession的區別
如何實現卷積層權值共享
如何保存模型,讀取已有的模型
用過哪些深度學習模型,區別是什么。
了解哪些尋優算法
softmax損失函數是什么
c++ 的 const,static作用
new,delete原理
強制類型轉換cast之間的區別
騰訊IEG 應用研究 二面掛
svm推導,核函數的體現,常用的核函數有哪些
alexnet介紹
過擬合的原因,有哪些避免過擬合的trick
1G的文本統計詞頻,輸出頻率最高的1000個詞
手寫topk的代碼,快排。代碼還能如何優化,如果要上線的話還需要做哪些處理
如果分類樣本的標簽只有一定的概率可信,如何處理
過擬合的原因,有哪些防止過擬合的方法
mysql查詢一段時間中某個用戶的數據
三星電子中國研究院 機器學習研發工程師 offer
筆試:水管工之類的算法題,求最大深度
模型評價如何做,其中存在哪些問題
決策樹算法有哪些,隨機森林和GBDT的區別
降維方法,PCA原理
哈夫曼樹在機器學習中的應用
文本挖掘算法了解哪些
人流量預測系統如何設計
profession筆試:最優的進程調度算法,至少用多少個cpu
英語自我介紹,口語渣猝不及防
聯想研究院 模式識別研究員 offer
EM算法數學推導,如何證明算法收斂性
異常值的影響,如何消除
所有了解的機器學習算法有哪些,框架性講述
梯度下降算法了解哪些,優劣勢是什么
二叉樹中序遍歷,遞歸和非遞歸
linux操作指令了解哪些,文本處理指令有哪些
一億個數的文件,如何分成兩個文件a,b,使得a文件的數都小於b,同時文件大小要差不多。
拼多多 算法工程師 offer
均勻分布如何生成正態分布
SVM原理,支撐向量越多越好還是越少越好
二叉樹深度遍歷,時間復雜度和空間復雜度
二維排序矩陣搜索
項目中的長時間推廣問題,如何考慮樣本之間非獨立的影響。
編程題,矩陣中的最短路,有門有鑰匙。動態規划加狀態向量。
貝葉斯公式,實際如何計算,如何解決精度問題。
五八集團 算法工程師 二面掛
字符串轉數字
svm核函數有哪些,如何選取,手寫表達式
降維方法介紹
c的虛函數,虛函數指針和虛函數表存在哪兒
Linux 文件權限修改,參數介紹
模型的比較如何做
隨機森林和提升樹
卷積神經網絡原理
如何避免網絡的過擬合
如何網絡調優
獵聘 算法工程師 sp offer
Python 的數據結構有哪些
tuple 和set的區別,set的底層實現
hash表的算法有哪些
svm推導,一直到序列最小化求解。核函數如何體現,有哪些類型。
構建分類器的整個流程是什么
數據清洗方法,缺失值處理方法,降維方法
pca原理推導
決策樹算法的介紹
二維排序數組搜索
如何構建欺詐交易識別的模型?
不均衡的數據如何分類
新浪移動 數據挖掘工程師 錄用排序
歸並排序,二維排序數組搜索,中序遍歷重構二叉樹
svm推導,為什么要用拉格朗日乘數法,對偶問題是什么
KKT條件都有什么,如何求解svm的最優化問題
數據不均衡如何解決,抽樣得到的分類准確率如何轉換為原准確率。
邏輯回歸原理,推導求解方法。
為什么選用對數極大似然函數作為優化目標,用平方損失有什么問題。
邏輯回歸對特征有什么要求,是否需要做離散化,離散化的好處與壞處。
邏輯回歸的參數是否可以分布式求解,如何做分布式。
有三輛車,到達時間隨機,a車五分鍾一趟,b車十分鍾一趟,c車十五分鍾一趟,求平均等待時間
一點人生經驗
我是一名文科類院校的碩士(面試的時候不止一次被問是不是學計算機教育的),本科是信息專業。碩士科研是模式識別方面的,其實說數據分析更貼切,基本屬於浪費青春(建議各位喜歡計算機的學弟學妹:珍愛生命,遠離文科院校)。同時也因為老板的24小時貼心看護,毫無懸念的沒有實習機會,mmp。自己雖然非常喜歡機器學習,但是秋招之前的狀態是:編程基礎只會python,算法設計全靠調包,深度學習基本不會,分布式框架完全不懂。到七月份的時候,整個人喪到一定境界,感覺基本要告別互聯網了。
笨鳥先飛,七月中旬就開始准備秋招了,主要是打比賽、看書和刷題。八月底投簡歷,投過的公司非常多,然而收到面試的很少。慶幸自己比較能吹,效率還比較高,最后也拿到了一些心儀的offer。過程很痛苦,但是還好有個好收獲。總結一下這三個月自己的一些經驗感悟,希望對大家有幫助。因為自己是非科班出身,今后也要瘋狂補習,早日跟上大佬步伐,也希望多跟大佬們交流呀。
秋招准備
硬實力:項目經驗,競賽,簡歷。
對於自己的項目,數學邏輯上一定不能有漏洞。多多反思,想想自己模型的優勢,以及換其他模型會有啥問題,假裝有面試官提問自己回答。基本上做到這些,項目上就不會有問題。因為我沒有過實習經驗,所以對企業關注的技術了解的很少。我的建議是,一定要參加競賽,無論名次。找工作之前,跟寢室的老鐵一起參加了百度的機器學習競賽,雖然沒有名次但是真的是積累了很多經驗。也正是因為這個比賽,對圖像領域有了個概況的了解,動手能力也提高了不少。記住,企業要求的東西不會也沒關系,至少有個概括性了解,同時展現自己的學習能力和思考深度就行啦。
簡歷方面,記住一條:自己做過什么不重要,關鍵是企業想要什么。建議大家都以一個面試官的角度看待自己的簡歷,或者找找師兄師姐。我現在回頭看自己的第一版簡歷,感覺像是要去考博士。。
軟實力:編程基礎,手撕代碼,機器學習。
從八月到現在,leetcode刷了185道題,基本是middle+少量hard,牛客上刷了劍指offer和一些基礎題。我自己的感覺是,劍指offer用來入坑真的贊,leetcode真的要用心刷。邊刷題邊總結,基本刷到了150題的時候,就會進入一個百毒不侵的狀態。后期基本上就不怕筆試了,手撕代碼也很快。
機器學習方面,主要是刷小藍書《統計學習方法(李航)》和西瓜書《機器學習(周志華)》,經典的算法建議都手推一遍。重點關注損失函數,為什么這樣定義,有哪些優缺點,多思考方法間的比較。說實話,其實最后都可以總結出套路,后面有空我再總結下。。
面試
項目介紹
基本上每次面試開始都是項目介紹,建議事先准備一個項目介紹,聊的時候也不會慌亂錯過項目亮點。最好是准備兩個版本,一個是簡單介紹思想,一個是詳細介紹包括細節和公式。在講自己項目的時候,一定要突出技術難點以及自己的思考,最好有個清晰的框架性說明。針對項目可以預先准備一些問題,然后再講述的時候可以故意留幾個坑,挑起面試官興趣,攻其不備讓其入坑,這樣也更能體現自己對項目了解的深度,豈不美哉。
對於競賽方面,其實我自己沒有啥名次,方法也沒有創新。這種情況就盡量突出自己對於領域的了解,對於常用基礎模型原理的掌握程度,以及自己在應用時遇到的問題。我在競賽中是用的只有inception和resnet的微調和融合,以及數據增廣。工作很淺顯,但是講述的時候結合實際把inception和resnet的trick原理和優勢講清楚就行。
基礎知識
手撕代碼的時候,建議先講清楚思路再寫代碼,記得分析時間空間復雜度。如果有多種思路可以分析比較一下。再就是,不要慌,慢慢寫,手不要抖。。
機器學習算法的介紹,我一般分為兩步:第一步介紹算法基本思想,損失函數,適合於解決哪一類問題,有哪些缺點。如果面試官還有興趣,就開始第二步推公式。在明確每一步的目的的前提下,強烈建議把公式背下來直接寫答案,例如svm拉格朗日函數求導之后的結果,當場求導很浪費時間,不如用來多展現自己。在面試官提問的時候,可以暗中總結一下面試官喜歡的類型,如果一直問數學推導方面的問題,就多講講算法原理,如果問了很多實現方面的問題,就多講講算法實現方面的trick。這樣更有針對性,也更能讓面試官霸霸開心。
開放性問題
對於設計類問題,其實多看看面經就能知道主要的類型,多看看他人的解題思路同時結合自己擅長的算法一起思考,表述時邏輯清晰突出要點就行。個人建議:不要搶答,也不要邊想邊答。可以先在紙上記下問題中的關鍵點,以及對應的解決方案。可以提出多種方案,互相比較最后得到最好。讓面試官看到你的思考,但是不要出現那種講到一半講不下去的尷尬情況。
對於人格類問題,因為文科院校所以認識不少心理學大佬,投射之類的基本套路都naive。表現出對技術的熱誠和領導力就行。這種題說話越多越錯,你需要的只是熱愛技術的態度和堅定的眼神。
offer的選擇
offer選擇無非就兩個方面的問題:1. 公司環境,行業前景,技術發展。2. 面向薪資的編程。我也不了解很多公司,渣渣就不bb了。建議大家與熟悉的師兄師姐聊,同一屆的同學視野可能沒有那么遠。個人覺得,技術發展雖然重要,錢也不是關鍵問題,有的時候也需要多關心身邊的人呀。人生還長,有些事情不用那么着急的。
再BB兩句
俗話說的好!找工作這種事情,三分靠打拼,七分靠錦鯉!非科班確實很難,所以心態很重要!不要被眼前的不幸擊倒,眼前的困難都不是困難!后面運氣差的時候還多得很呢。。 總之,一定要調整心態,心態爆炸的時候要多多放松,有妹子抱妹子,沒妹子抱舍友,不能被情緒左右。無論結果如何,都要冷靜總結。
”那些無法將你打敗的,終會使你更強大。“
作者:王非池
java學習干貨面試經驗,不定期分享+Q群:282711949。
如果你正在找工作或者剛剛學校出來,又或者已經工作但是經常覺得難點很多,覺得自己java方面學的不夠精想要繼續學習的,想轉行怕學不會的,+Q群:282711949 了解咨詢java繼續學習。更有免費視頻等你來領取。
相關面經
http://www.cnblogs.com/ljy2013/p/7010308.html
回望過去與展望未來(數據挖掘)
2017年06月14日,距離畢業時間剛好是兩年整,一路走來,有太多的故事。作為一個非985,非211畢業的學生來講,相比之下,成長的道路上還是有些崎嶇不平,亦或是蜿蜒曲折的。可是人就是這樣,沒有一點曲折不平,反而顯得平淡無奇,無任何故事可言。
畢業之前,在深圳的一家醫療設備有限公司實習,招我進去實習的是一個滿頭白發,看上去很有學問的博士。並且還是中科大畢業的。誰知我進去才發現原來是個大坑,沒辦法,進來了就沒那么容易走了,主要是一方面實習生的身份比較尷尬,二來自己可以利用公司的資源自己學習一些技術也是不錯的。前前后后我在這個公司待了一整年。也當是在這個公司自己進修一年吧。
是的,我離開了實習的公司,來到現在的公司——互聯網金融公司。主要做的事情是數據挖掘相關工作。在這家公司遇到了不管是人生還是職場當中比較牛逼的同事。跟他們在一起工作,你每天都在進步。這也是我為什么后來非要去“大廠”的原因。跟聰明優秀的人一起工作,你收獲的不僅僅是工作上的,更多的是技術積累、以及一些做事的方式和方法。這些做事的方式和方法就能反應一個人的能力和水平。 甚至,與優秀的人在一起工作,你的眼界和視角都開始變得高級很多。這里簡要的說明一下:當你接到老板或者leader一個項目的話,首先需要了解的是項目的業務背景、項目的意義,項目當中存在的技術點,項目的評價方式和指標,以及后續上線或者優化的方法。 這對我來說有很大的幫助。
人生就是這樣,好景不長,在這個互聯網公司接連兩個比較優秀的leader離我們而去,去追求他們更好的人生,加上Boss對機器學習的技術並不是那么信任,在Boss眼中,機器學習暫時還做不出什么東西出來,最重要的還是數據。Boss有這樣的看法也是沒錯的,但是他忽略了我們做技術的人斗志或者說是自尊心吧。技術人員是需要得到的老板的肯定才會有成就感的,進而才會有工作上的動力。猶如將遇良才,將得有愛才之心和愛才之道,良才才會有后面的報以知遇之恩。而我們的老板忽視了這點。另一方面,在互聯網金融公司的數據量對於一個做大數據的人來講還是相當小的。這也是我們做技術存在局限性。
是的,你想的沒錯,有了前面的鋪墊,我就想着該去“大廠”里面積累積累了。才有了我想寫這篇博客的原因。主要是想記錄一下在去大廠面試的一些點點滴滴。
如果你打算去大廠,首先需要做一下幾件事情:
(1)復習你所涉及的領域里面的一些基礎知識,特別需要注意基礎知識里面的一些細節內容。我涉及的是機器學習領域,主要包括:
常規的機器學習算法的數學原理和公式推導,如:線性回歸、LR、SVM、ID3、C4.5、RF、GBDT、XGBoost
工程實現能力,主要表現在數據結構的算法題目。
實際的項目技術能力。如:推薦算法、深度學習。
(2)整理項目(讓面試官感興趣的項目經驗很重要)
首先需要明確項目的背景及其意義。
對自己的項目中的一些問題進行思考,需要從幾個大的方面去講,體現出邏輯性。
項目中使用的一些技術細節內容需要去吃透
在項目中的一些問題要有自己的看法和見解
最后項目取得了什么樣的成果
(3)考慮問題,需要從抽象的層面去考慮,分步解答,有一定的邏輯性。比如:如果讓你去涉及個推薦系統你會怎么考慮?回答問題的時候需要考慮一下幾個方面:
我們擁有那些用戶的數據源:如用戶瀏覽歷史、用戶歷史行為等
我們會根據具體的業務情況,考慮選擇什么模型比較合適。user-based or item-based。
根據前面的數據召回一定量的用戶或者物品。這個過程可能需要考慮數據量的問題。
排序
(4)找幾個中型的公司先去練練手(類似模擬考試一樣。)
通過幾個中型公司,對自己進行查缺補漏。
針對自己的漏洞進行重點補充。
這個過程其實是認清自己的過程,發現自己的問題,或者讓自己對問題的認識更深一步。這一步對自己的提升蠻大的。
(5)運氣的問題
有時候面試的時候,也是有運氣的。雖然這部門的因素所占的比例比較小。
這里面主要列舉一下我面試阿里巴巴和騰訊、京東的經歷:
阿里巴巴:
面試的崗位是阿里媽媽的搜索推薦組數據挖掘工程師崗位。
一面:面試官的語氣比較重,可能采用的打擊的面試方式,面試過程中問了一下幾個方面的問題:
針對項目問了一些問題。介紹項目的時候需要首先從幾個打的方面介紹,面試官會主動問細節的。一定要體現出你的項目邏輯出來。
機器學習的一些基本問題:L1和L2,LR,RF和GBDT等
數據結構的問題:ADTree結合實際的問題來問的
深度學習的問題:用tensorflow實現LR
二面:
介紹自己認為比較牛逼的項目
針對推薦系統,給定了一個場景,問我怎么設計
一些機器學習常用算法原理
三面:
介紹自己比較牛逼的項目
針對一些機器學習常用算法原理進行探討
問了一個大數據的問題,兩個巨大的文件,找相同的url
最終三面掛了。比較可惜。
騰訊:
一面:
介紹自己做的項目
針對項目細節內容進行提問
機器學習常用算法的原理
二面:
機器學習常用算法的原理
數據結構算法的實現,需要寫代碼
可惜,又掛了。
京東:
一面:
介紹自己做的項目
針對項目進行提問
針對工程能力進行提問
二面:
介紹自己做的項目
針對項目的細節內容進行提問
NLP相關的問題:近義詞,熱詞等
針對大數據工程能力進行考察
三面:
介紹自己的項目細節內容
項目的背景、意義、應用場景和效果的提升
講解公司業務邏輯,主要是考察邏輯能力和業務邏輯能力
閑聊
面試通過......
展望:
目前我所涉及的領域是:NLP、機器學習(推薦系統)、深度學習等領域。與中國的基本國情一致,還需要進一步提升自己的技術。主要會以下幾個方面考慮:
1、深度學習
完善自己深度學習的理論和技能。
2、機器學習(推薦算法)
積累更多的機器學習算法,主要偏向推薦系統中用戶意圖分析。
3、NLP
(1)自然語言處理應用在搜索推薦領域,主要涉及根據用戶的搜索(query)去分析用戶的意圖,進而才能更好的推薦給用戶。
(2)深度學習在NLP中的應用。
