1. 程式人生 > >2018.11-2018.12 實習經歷總結

2018.11-2018.12 實習經歷總結

用此文來總結實習中遇到的問題,解決方案和經驗。
投遞的公司(不包括試水的公司):愛奇藝,愛因斯坦,搜狐,百度,小米,騰訊,美團,頭條。
最後的成績:騰訊和搜狐掛了一面,小米掛了二面,最後拿到了愛因斯坦、愛奇藝、頭條的offer。

愛奇藝

整體感覺:只有一面就過了,時長30min,感覺不是核心部門

面試題目:比賽具體細節,如長尾資料和unbalance資料如何處理;專案演算法介紹

愛因斯坦

一面

1.預測北京明天的空氣質量指數
2.將口語化的語言處理成書面化的語言,問了比賽專案,沒有很深入

二面
  1. 寫歌詞專案,如何押韻
  2. 優化演算法的具體細節
  3. 矩陣運算:在不借助其他工具下,計算矩陣每一列的歸一化。
    第一個問題答了一下,感覺面試不是很關心,是我們做的太水了,沒有好講的?
    第二個問題,因為長時間沒有看這個推導,有些細節忘記了,到Momentum就不記得了
    第三個問題,到第二步出發轉換成乘法就推不出來了。不記得對角矩陣的概念。
    反饋是:要充分掌握自己寫在github和部落格園上的每個知識點,時不時地複習一下。

    三面
  4. LR演算法原理
    回答的時候,面試官說初函式、區域性最小值和全域性最小值
  5. ECOC演算法原理
  6. 給定一堆樣本,求兩句話之間的相似度
    第一個問題講解sigmoid(wx+b)是後驗概率,人家覺得和我理解的後驗概率的定義不一樣。
    第二個問題,testsample的確定,本質是按照樹的定義結構來判斷test sample,這點我自己應該搞清楚,不應該直接就否認了。
    第三個問題,求兩句話之間的相似度,第一次回答使用similarity等測度,沒有使用train samples,所以否定了,第二次用超大概念的理解特徵,物體的概念,本質就是從樣本中找到合適的特徵,再去test 樣本。

反饋:重新複習LR方法,用正常的思維解答。
在回答第三個問題的時候我沒有很上層的概念,也對樣本的概念不理解,思考了5秒鐘就開始給點提示,感覺太快了,我自己應該多思考一會的,如果實在不行就請求面試官給點提示(同時中間態度散漫,開玩笑性質的),在給了提示之後,自己還是沒有理解,又讓面試官講解了一下,之後才理解了樣本和test的關係。給出了用決策樹系列特徵的原因,但是解釋原因解釋不好,面試就停止在這裡了。所以為什麼選用決策樹系統分類器的原因。
感受:今天面試雖然也會有很多問題答不上來,但是溝通的還可以,自己能答的儘量答,不像是昨天心態不好,整個人面完之後都不好了。再接再厲!

搜狐

整體感覺:面試題目要求不是很難,但是問題很具體,細緻到每個input和output

一面
  • 簡單介紹一下自己
  • 做的三個專案
    • 寫歌詞軟體
      Seq2Seq模型、LSTM(三個門)、怎麼解決押韻、skip thought、
    • ECOC演算法
      演算法原理、優點
    • 比賽
      創造特徵、模型選擇、比較RF、GBDT和Xgboost
  • 手撕一道括號匹配的最大長度
    有點太粗心了、寫程式碼總是出bug,全靠print除錯

總結:為什麼會粗心:
拿到程式碼想到解決方案就很開心,直接上手寫了,沒有多想一下邊界條件和結果是否正確,不熟悉程式設計工具。
還有面試官提出了改進意見,但是我不太理解,就按照自己的想法做了,這時應該充分問完面試官之後在繼續。

反饋:
手撕程式碼不要直接上手,多想一下邊界條件,寫一下虛擬碼,最後才在程式設計軟體上寫。要不斷在leetcode上敲程式碼。
模型的介紹步驟在系統化一下。
Seq2Seq模型還不熟悉!在加強一下!

百度

一面

感受:百度一面面試官可能是做開發的不太懂技術,聽我講專案和技術不是特別懂。

  1. 給定一個數組,陣列中只有一個元素出現一次,其他元素都是出現了兩次,找到這個出現一次的數字。
  2. 給定一個字串,判斷括號是否匹配。寫出程式碼後問程式碼存在的bug是什麼。

反饋:
需要加強劍指offer的學習,把題目都做了。
同時要複習一下概率的問題。

二面

感受:

  1. 矩陣的旋轉
  2. 64匹馬,8個賽道,選出3匹馬,總共有多少種方案?
    URL指向的文章去重。
  3. 平常的學習方式,團隊合作,解決問題的方式,如何和人吵架怎麼辦?

小米

二面
  1. 計算兩個元素之間的相似度,通過排序的方式使相鄰兩個元素的相似度的小於某個差值。
    解法:圖問題,將某個元素的所有相似度小於閾值的元素找出來,形成圖,從圖中找到一條能夠完整把所有元素串起來的路徑。

  2. 求x的開根號方式,只是用加減乘除的方式
    解法:遍歷從1到x個數字i,判斷i*i是否是x。優化演算法:相當於是從陣列中找到一個元素使它的平方等於x。

  3. 給定一個流資料,從中取m個,求第n+1個元素選中的概率。

  4. 給了使用者id,APPid,使用APP的時間,次數和性別(target)
    要求建模:構造特徵和選擇模型

簡單地問了一下專案。會不會深度學習。

反饋:當時對於第一道程式設計問題完全沒有思路,當時的心態就不好了,後面也沒有想掙扎的慾望了。感覺心態有點涼。對於從來沒有出現過的題目,我無法準確分析出來。這種能力可能要看馮沁原的視訊才能學會。

美團

一面

專案問題:
介紹你做的最能體現能力的專案。仔細問了糾錯輸出編碼矩陣演算法,為什麼能解決unbalance的問題。
介紹比賽,用了什麼模型,xgboost的優點
介紹嘻哈寫歌詞的模型,仔細問了LSTM的梯度消失的問題,word2vec的優化點,具體實現
考察了一道程式碼題:陣列中的中位數問題。

反饋:
解決unbalance的問題的點可以在增加一個:資料複雜度的特點+不同的class label的樣本組合起來,形成一個二分類問題,這樣少樣本的class會樣本增多,unbalance的問題會減少。但是存在的問題是隻有兩個class之間的unbalance問題依然會存在,但是由於ECOC編碼矩陣的特點。

騰訊

一面

程式碼題:
將255排到陣列的後面
專案問題:
嘻哈寫歌詞,Attention,LSTM的梯度消失
決策樹的迴歸計算方式+資訊增益的計算方式

今日頭條

感受: 面試官一上來聽完介紹之後就開始上程式碼題,心態上有點緊張,可能之前一直是程式碼做的不好,覺得自己的程式碼功底有點弱,心態上就弱下去了. 面試官給了兩道題,第一次看題有點沒想清楚就有點慌,後來想清楚之後,因為是以前已經寫過的程式碼,所以沒特別想的清楚就開始做題了(看的面試官也是面無表情,覺得有些害怕),上來程式碼書寫上優點錯誤,後面又發現邏輯錯誤,幸好自己沒有慫,冷靜下來就開始想為什麼出錯,在面試官的提示下,經過兩次就修改正確了. 在第一道題之後莫名地就不緊張了,開始第二道題,思考第二道題的時候很冷靜,快速地給出了自己的想法. 面試官在聽我說完思路之後就直接說不用做了. 之後開始介紹專案,糾錯輸出編碼矩陣,但是存在的問題是我並沒有按照之前準備好的介紹,而是臨時開始一種介紹方法,我覺得這樣的後果是我不能預測我下一句說的是什麼也不能很有重點地突出我的專案優點.同時我看到面試官好像不是很感興趣的時候,我不敢繼續往下介紹了,我覺得我受面試官的影響很大. 這點需要改進.之後面試官讓我介紹LR模型的公式推導,我一聽就有點慌,我有些忘記了,所以趕緊找模型筆記. 我覺得這點不好,對模型筆記產生依賴了.之後在總結模型的時候需要按照損失函式和梯度推導的方向來總結模型. 就這樣就結束了整個面試過程.

最需要改進的點:
1. 不要說自己緊張,一定要淡定,面試之前對自己說三次淡定!
2. 不要慫程式設計題,詳細自己是有基礎的. 擺正心態,我現在刷題是增強程式設計熟練程度和理解題目以及實現想法的能力,我沒有辦法把所有的題目都做一遍,也不能保證面試的所有題目都會做,我應該拋棄面試會碰到原題的想法,從每道題的本身出發,當自己第一次做題.
3. 不要害怕面試官不喜歡或者不感興趣自己的專案, 我保證專案有1-2個亮點,如果面試官不感興趣的話就算了. 但是我要保證自己不害怕面試官,之後視訊面試的時候,儘量不看面試官.保證自己不受面試官的影響.
4. 每次面試之前都要留2個小時的時間來重新複習模型(基礎模型和RNN模型),保證面試的時候能熟悉細節.
之後一天的反思:
過了頭條的一面之後,我應該對自己的程式碼能力有自信,對到基礎的問題都能回答上來. 所以剩下的應該準備基礎模型的知識.
之後要做的是:改進一下LR模型的總結內容.

二面
  1. 程式碼題: 給定一維陣列,每個格子有權重,從第一個格子可以跳0-T步,求到最後一個格子的最小路徑
  2. 程式碼題: 限制跳的步數

講科研專案:
感受:
我沒有講清楚演算法為什麼能取得好的效果.
同時沒有和想法一樣的模型做比較.
沒有直接講最後一個模型,最經典的模型

反思:科研專案到底應該怎麼描述?

京東

一面

經過自己多次的嘗試, 把科研專案介紹介紹的非常流利, 所以面試過程很順利.
存在的問題:
介紹科研專案的時候,並沒有完全按照之前提綱來介紹, 怕面試官會覺得囉嗦,還是簡化了很多. 下次是否要簡化? 適當簡化, 每個點可以點到, 他有興趣讓我繼續深入說明的時候,我在說明.

二面

面試官的反饋:
1. 實習僧的簡歷不工整
2. 許多知識沒有很明確的說出來, 很像是背知識,沒有內化成為自己的知識

需要補充的點:
XGBoost的直方圖的實現:解決了什麼問題,怎麼解決的?
為什麼SVM能用核函式,其他函式是否能用核函式?