今天已經(jīng)是11月初了,找工作的階段已經(jīng)進入尾聲。回想這半年的時間,充滿苦澀與艱辛,有幸拿到了幾個offer,騰訊和滴滴的SP,還有百度和華為的offer,秋招之路也畫上了一個圓滿的句號。下面分享一下自己這兩年的學(xué)習(xí)與近半年的求職路上的一些經(jīng)驗與心得,供后來人參考,不一定是最好的方法,但是大家可以借鑒一下,結(jié)合自身情況,找出最適合自己的方法。
先說一下樓主的情況,本科普通一本,碩士西南985。研究生期間走上了機器學(xué)習(xí)算法學(xué)習(xí)之路。參加過天池幾個比賽,拿到的成績一般,有幾個前20的比賽。本篇文章我只想把我學(xué)習(xí)與求職路上最干貨的東西分享給大家,那些很細致的學(xué)習(xí)路線或者求職面經(jīng)有很多大神已經(jīng)分享啦,大家可以去看一看~~~。
寫在前面的話:你是否真的決定走算法這條路。
我當(dāng)時想法很簡單,確實認(rèn)為算法,AI(機器學(xué)習(xí),深度學(xué)習(xí))這方面以后會有前途,也結(jié)合自身情況覺得可以去學(xué)一學(xué),當(dāng)真正走在路上時發(fā)現(xiàn)困難重重,曾經(jīng)一度認(rèn)為自己是不是不適合算法,但是沒有后悔,也沒有放棄,最后的結(jié)果還不錯。但是在今天這一個時間節(jié)點上,很多人都想學(xué)算法,找算法的工作,我們就要重新審視這一個問題了,你真的適合嗎,你真的有能力做到全國競爭者中的前百分之一嗎。如果對自己有信心,也覺得自己很有執(zhí)行力,并且能拿出每天8小時,持續(xù)12個月以上的學(xué)習(xí)時間,那就去做。但是我們不得不承認(rèn)的一個事實就是現(xiàn)在想做算法的人實在太多,未來一段時間各個公司能給出算法崗位HC至少不會比今年少,但是競爭人數(shù)會呈爆炸式增長,所以競爭必然會增大。
以下的部分分為兩個部分:學(xué)習(xí)與求職路上的心得和經(jīng)驗以及踩過的坑。
學(xué)習(xí)心得和經(jīng)驗
一、理論知識要扎實
既然是走算法之路,最基本的算法理論都必須要熟悉,最常見的要做到如數(shù)家珍。常見的分類,聚類,優(yōu)化算法,深度學(xué)習(xí)等等的算法最好能推導(dǎo)(要想面試表現(xiàn)做到前百分之一必須要會推導(dǎo),是加分項)。要融會貫通,對這些算法有自己的理解,面試的時候能說出自己與某某算法的一些心得和理解。比如面試官讓你講講XGB原理和優(yōu)缺點,你可以對比著GBDT或者LightGBM講,說說自己在使用的時候有什么trick。另外的算法就是數(shù)據(jù)結(jié)構(gòu)算法要掌握常見的題目。這部分也可以作為coding能力考查,最基本是看完《劍指offer》,《leetcode》,自己練習(xí)的時候可以手寫練一下,最后要達到能熟練手寫的程度。推薦在牛客網(wǎng)上的在線編程刷題,有精力的可以再看看《編程之美》和《程序員面試寶典》的內(nèi)容。
二、coding能力要過關(guān)
算法的同學(xué)coding能力是在面試中必須要考察的。所以自己的coding能力必須多練練,推薦在??途W(wǎng)的在線編程多多敲代碼。掌握類似leetcode medium程度的題目就可以了,hard程度的可以不用掌握。面試中一般會出幾道題目,要求手寫,能順利寫出的都是加分項。語言要掌握一大兩小三門語言,大語言是Java或者Cpp,小語言掌握python,SQL。有時間精力可以將常見的算法用python實現(xiàn)一下。語言不必掌握很深,但是要做到能熟練用Python或者SQL處理數(shù)據(jù),算法用Python也要掌握差不多。對于大語言來說基本語法和一些基本概念都要熟練掌握。
三、項目比賽經(jīng)歷
單單有理論的code能力是不夠的,最好能參加一兩個有含金量的比賽或者項目,盡力做一做,拿一個好名次,拿不到的話也要根據(jù)前幾名隊伍的答辯思路好好總結(jié)一下,用到什么算法,自己在項目比賽中負(fù)責(zé)什么工作,有什么創(chuàng)新點,自己有什么收獲等等,一定要好好總結(jié),因為這可能是面試官和你聊的最多的東西,所以提前一定要下功夫總結(jié)整理好。
四、實際工程trick
雖然我們都是在校生,但是面試官可能會問我們他在工作中遇到的實際工程問題,所以這部分也需要我們?nèi)ヌ崆傲私鈱W(xué)習(xí),最好的方法就是看別人的面經(jīng)進行總結(jié),下面我也會貼出自己遇到的問題,供大家參考。
五、所謂的智力題
這部分的問題最不好準(zhǔn)備,常見的一些問題可以準(zhǔn)備一下,但是不常見的問題就靠自己臨場發(fā)揮了,不過大家在平時多多留意一下。
求職心得和經(jīng)驗
一、關(guān)于每年3,4月份的實習(xí)
樓主在這個期間只投了阿里,在最后的HR面之后被掛。雖然沒去實習(xí),但是在這4-5場的面試中學(xué)習(xí)到很多。技術(shù)面一開始也很緊張,慢慢的查找自己的漏洞,然后在后面查漏補缺。所以推薦大家在3,4月份去投著試一試,雖然可能當(dāng)時的能力達不到公司要求,但是可以去增長一下經(jīng)驗。
二、簡歷
簡歷最好一頁,將最能代表自己能力的寫清楚,最好簡潔扼要。自己獲得的獎勵最好都寫上,但是盡量寫與崗位和公司match的,如獲得天池名次,國獎之類的。馬拉松獲得第幾之類的就可以不寫。
三、面試技巧
1. 面試通過=50%實力+30%運氣+20%技巧。
2. 首先要告訴自己,這不是一場面試,而是一場與自己未來同事之間的交流探討。盡量消除緊張心理,完全不緊張也是不可能的,但是還是要盡可能穩(wěn)下來。面試過程中盡量幽默,能做到和面試官談笑風(fēng)生你就贏了。在脈脈上看到的有人說做了面試官之后才發(fā)現(xiàn)其實你技術(shù)差不多就行,決定你過不過的就是看你順不順眼,所以最好能讓面試官在短短幾十分鐘里喜歡上你!
3. 在準(zhǔn)備面試的時候看過一個公眾號的文章,文章意思就是比如你的實力是80,那么你在面試中的表現(xiàn)一般是在60-100之間,如果你整場面試都表現(xiàn)平平,那么面試官對你的評分可能是60-80,但是如果你偶爾有一兩個問題沒回答好,但是另外的一兩個問題答的很完美,那么你很可能就是80-100分。面試官最后決定錄不錄用此人,更大程度上是根據(jù)面試者的最佳表現(xiàn)和結(jié)束時表現(xiàn)。所以要反復(fù)演練自己的最佳亮點和如何結(jié)束面試。
4. 電話面試的話要注意語速吐字,現(xiàn)場面試也要注意語速,可以用在草稿紙上寫一寫的方式幫助解釋。
5. 面試中遇到?jīng)]理解的問題要盡可能與面試官溝通,說不定他就在考你的溝通能力呢。
6. 在面試中遇到不會的或者完全不會的問題要在面試之前想好策略。我的策略一般是允許自己對于最多兩個問題直接說我不會,此策略一般是對于自己完全沒有把握的問題,讓面試官換另一個問題。如果你強答這個題的話只能是勉勉強強的回答一下。在一場面試中有1,2個問題說不會的沒有多大問題,但是對于其他的問題要盡量做到完美作答,這樣才有把握。
7. 關(guān)于HR面,樓主在面阿里實習(xí)生是第一次HR面,當(dāng)時聊的比較嗨,掛了,事后想想應(yīng)該是自己表現(xiàn)的太有個性和想法了,所以各位在HR面的時候盡量表現(xiàn)的老實規(guī)矩一點吧,這樣最好。。。
四、面試遇到的代表性問題
1. 比賽項目展開的問題
1.1 比賽中特征設(shè)計思路,為什么這么設(shè)計。
1.2 模型融合有什么創(chuàng)新點,為什么這么做。
1.3 針對大數(shù)據(jù)量,有什么處理方法,具體怎么做。
1.4 業(yè)界開源的分布式訓(xùn)練框架。
1.5 給出一個集群框架,每一個集群包括CPU,存儲,時序等等變量,運用什么算法或者策略使得總的效率最高。
1.6 對于某一個地區(qū)中的車輛和乘客怎樣合理安排司機-乘客使得滴滴總的收益最大(主要考慮距離)。
1.7 滴滴的拼車功能的拼車價怎么定,使用什么策略或者算法。
2. 算法理論方面
2.1 LR,SVM,KNN,GBDT,XGB推導(dǎo),算法細節(jié)(LR為何是sigmod,理論推導(dǎo)出sigmod,KNN距離度量方式,XGBoost為什么要用二階信息不用一階,LR和SVM對比,GBDT和XGB和LightGBM對比)。
2.2 CNN DNN RNN 細節(jié)以及相關(guān)問題(poll層,激活函數(shù),梯度消失彌散問題,LSTM結(jié)構(gòu)圖,深度網(wǎng)絡(luò)優(yōu)勢及缺點)。
2.3 常見排序算法的復(fù)雜度和一些細節(jié)以及改進優(yōu)化。
2.4 樹模型建模過程。
2.5 特征選擇方法。
2.6 模型訓(xùn)練停止方法。
2.7 正則化作用。
2.8 模型效果評價指標(biāo)。
2.9 AUC理解和計算方法。
2.10 Hadoop,Hive,Spark相關(guān)理論。
2.11 L_BFGS,DFP推導(dǎo)。
2.12 弱分類器組合成強分類器的理論證明。
2.13 FM,F(xiàn)MM,Rank_SVM算法細節(jié)。
2.14 map_reduce基本概念以及常見處理代碼。
2.15 過擬合的解決方法。
2.16 各個損失函數(shù)之間區(qū)別。
2.17 L1,L2正則化相關(guān)問題。
3. Coding
3.1 SQL查詢相關(guān)業(yè)務(wù)題目。
3.2 Java基礎(chǔ)(GC,死鎖,多線程,重載重寫等)。
3.3 Python基礎(chǔ)(常見數(shù)據(jù)結(jié)構(gòu)用法,類繼承,內(nèi)存管理)。
3.4 Linux處理文本日志相關(guān)常見命令。
3.5 給定n,螺旋打印矩陣。
3.6 Z字形打印樹。
3.7 基礎(chǔ)的數(shù)組,鏈表操作。
3.8 大巴車求陰影(至今沒明白什么意思)。
3.9 在一個一維坐標(biāo)軸中,給定 n 個線段起止點(ai,bi) (ai、bi 的取值在 double 范圍內(nèi)), 如何計算所有線段覆蓋的總長度,請編程實現(xiàn)。
3.10 。一個數(shù)組A[1,。..,n](n≥3),滿足A[1]≥A[2], A[n] ≥ A[n-1](第一個數(shù)比第二個數(shù)大,最后一個數(shù)比倒數(shù)第二個數(shù)大,其他位置不保證大小關(guān)系)。用最快的辦法找到一個i, 滿足A[i-1]≥A[i] ≤ A[i+1],并給復(fù)雜度。
3.11 輸入:兩個等長的數(shù)組a,b (a、b元素都不小于0),每次可對a數(shù)組做如下兩種改動中的一種
1)選取a數(shù)組中任意一個元素,將其值增加1;
2)將a數(shù)組中任取若干個元素,將其值都乘以2;
輸出:最少需要操作次數(shù),將a數(shù)組轉(zhuǎn)化成和b數(shù)組完全一樣;如果做不到,輸出-1,請編程實現(xiàn)。
3.12 數(shù)組里面連續(xù)值的和為S的區(qū)間,給出邊界。
4. 智力題/開放題
4.1 淘寶有1億總量的商品數(shù)量,你作為一個用戶通過什么辦法得到京東的商品總量。
4.2 連續(xù)遞增的數(shù)據(jù),拿出兩個,打亂順序,求拿出的兩個。
4.3 n個人圍城一圈握手問題,不能交叉,不能落單,求一共有多少種握手?jǐn)?shù)目(卡特蘭數(shù)推導(dǎo))。
4.4 54張撲克,抽去大小王,均分給4個人,問紅桃A和黑桃A在同一個人手中的概率。
4.5 對于一個query,”時效性” query的判斷,運用什么算法。
-
算法工程師
+關(guān)注
關(guān)注
2文章
30瀏覽量
6133
發(fā)布評論請先 登錄
相關(guān)推薦
評論