第一次(失敗的)面試:記位元組跳動資料探勘崗位實習生面試經驗
我最開始對資料探勘演算法實習生這個崗位的預估是和機器學習有緊密聯絡的,於是就複習了一些演算法方面的東西,沒有集中刷Leetcode,沒想到面試官只問了我一個關於機器學習問題,還十分的偏數學,與我的預期差距很大。
公司給我的整體印象不錯,環境也很好,就是在給我找面試官和麵試房間的時候在系統裡找不到我的資訊,於是之後坐在前臺等著他們處理,感覺自己沒有收到重視。之後面試官來了給我帶到了一個空房間,房間裡有4個座位,房間佈置的還比較舒適。接下來是面試的過程。
首先面試官問了問我的學校,我是某大學大四在讀的學生,和我聊了聊之後的打算,打算出國,問我申了哪些學校什麼cornell,UMich,CMU感覺高階一點的就往上說。然後開始聊專案,我的第一個專案是飛思卡爾智慧車比賽,面試官可能對這個有一些研究,感覺是挺有興趣的問了問我現在的賽事規則,其中有一個Otsu演算法是我們在比賽中使用的演算法,我給面試官講了一下最大類間方差的思路實現自動閾值,之後也沒再多過問。
之後面試官詢問了我的課程設定,我們系的課程既有控制論,模電這樣偏硬體的課程,又有模式識別基礎,人工智慧基礎,計算智慧這樣偏軟體的課程。他就挑了一個模式識別問我都講了什麼,我就回答了一些分類演算法。然後他就展開問了一下邏輯迴歸的思路是什麼。由於頭一天接到面試通知沒來的及仔細看,所以回答的也不太好,就說到了極大似然估計,後面的沒說出來,這裡給大家推薦一個blog講邏輯迴歸講的很清楚的
在黑板前站了一分鐘發現說l不出來啥就換了別的話題。面試官問我資料結構和演算法學過吧,說一下知道哪些排序演算法。我說有快排,冒泡,希爾,堆排序,等等然後他問我前兩個的時間複雜度知道麼,其實這已經是大二學的課了,不太記得清楚,但是靠著模糊的印象反應過來nlogn和n方;面試官又問那你知道他們是不是穩定的呢:快排不穩定,冒泡穩定。
到這裡他可能覺得我的演算法基礎的功底還行,於是就問我來之前刷題了麼,我說沒有。他笑了笑說,那就問你一個簡單的演算法題目:如何檢查單鏈表中的環?
當時我看到這個題是懵逼的,很清楚曾經見過這個題,就是不知道怎麼解,沒辦法之後硬做,我就現場想出了暴力求解法,再開一個新連結串列儲存曾經訪問過的目標連結串列的地址,然後每次在舊鏈遞迴查詢新連結串列有沒有重複的地址,如果有,則證明成環。
面試官聽到這個解法是崩潰的,問我有沒有更好的解法,我說暫時不出來了。於是就讓我用程式碼實現一下,我用的是C語言寫的,感覺寫的不是很好,又檢查了幾遍,最後應該是能實現功能的,但是時間和空間複雜度都很高,然後就結束了。本來以為有2到3輪面試沒想到一下就結束了,心也涼了一半。總之,繼續努力吧。
Please Note:面試演算法崗位的時候一定一定要刷Leetcode,不管是機器學習還是深度學習什麼的,這考量的是一個程式設計者最基本的能力,還是很有用的,有些題現場想不一定會想到好解法,但是見過的話就一定能有思路的。
機器學習相關演算法的崗位一定要注重基礎,數學推導過程,只會使用庫函式和看技術文件並不會被看好的。至少3大經典演算法肯定要熟悉:LR,SVM,DT。祝好