AI/ML/DL/CV 相關面試心得(長文)

過去曾受益於許多面試經驗,現在輪到小弟出社會面試了,前來回饋心得。個人背景:115應屆CS碩,雜事纏身拖到10月才開始面試,研究領域為 Computer Vision 相關,碩論做 3D Object Detection 偏自動駕駛領域。104履歷設定不開放,只找 ML/CV 相關職位主動投(關鍵字:AI、機器學習、深度學習、電腦視覺,以及上述英文),鎖定台北區域,有過濾掉不少看起來有風險的職缺。

聰泰科技

面試官是 Kaggle 拿過冠軍的高手,一開始介紹了公司的業務和盈利來源,後主要詢問我的工作經歷和碩論,注重模型的架構、實驗比較和遇到的困難,然後純聊技術,從 Kaggle 到本人 GitHub 上的項目都有涉及。該公司的業務來源範圍很大,幾乎涵蓋了電腦視覺的幾個應用,面試官也介紹了幾個比較刁鑽的客戶案例,例如車內乘載人數偵測和壽司輸送帶的即時座標定位與分類等。後面強調公司很注重不同領域部門間的合作,以及處理不同晶片上架構的兼容問題。

第二關是公司副總前來面談,以產品解度介紹公司,感覺他傾向於找到相同價值觀的人,認為只要把子領域發揮到極致就會有價值,有點工匠精神的韻味,雙方相談甚歡。最後口頭得知取得了 offer ,薪水符合期望,副總很熱情地帶我逛了一圈公司,環境是開放式的,設備很齊,也看到了蠻多剛剛提到的產品和 CV 相關應用,總體來說挺滿意的,數天後收到 HR 正式 offer。這次的感想是技術職和管理職會從不同角度看待產品和同事/員工,面試時可以根據對方角色(和個性)來決定話題重心,大膽表達自己的想法。

結果:Offer Get。

北京零零無限科技

知名無人機公司,今年在台北開的新據點,原本面試排滿想延一個禮拜,不過 HR 說 VP 下禮拜回大陸前想見我一面,所以擠出了時間提早面試。開始是一小時的筆試,範圍包含電腦視覺、機器學習、深度學習和機率統計。我寫滿了兩面白紙,主要是問到某些模型(ResNet)和 Boosting 方法(AdaBoost)不知不覺多扯了一些;機率問題很簡單,貝氏定理就能解決;有題基礎的電腦視覺問題因為太久沒碰沒完整答出,只憑印象寫了一些推測,算是可惜的地方。

第二關是兩位算法工程師的技術面試,首先自我介紹,被問了碩論細節、黑客松經歷和 GitHub 上的項目,誇了一句技術涉獵領域廣,因為有個東方 Project 相關的項目還被說有點宅(笑)。我問了工作內容、專案如何進行、為何進入這間公司、最有挑戰的部分等,兩位面試官很親切,談起來就像和朋友聊天,能看出平常工作氣氛不錯。台北辦公室負責追蹤演算法,由於只依賴主 Camera 因此較有挑戰性。因為過了中午,面試官還幫我買了個便當,很是感謝他們。

第三關的 VP 來自北京總部,過去在 Nokia 和 HP 工作,十分親切。一開始詢問對公司的了解程度,由於我在兩年前就看過展示影片並持續關注,老實地表達對初代 Hover Camera 的喜愛。另外問了以算法工程師的角度,對無人機未來應用的設想。這裡受限於我的想像力,大致提了極限運動跟隨、航拍高度等功能,就技術層面分析實現的利弊和限制,他提了個不同方位路線跟隨個人覺得很有趣,也討論到了和競爭對手大疆做的消費者受眾區別,聊天中學到很多東西。接下來是人格特質方面的問題,包含自己的缺點、平時興趣、能為公司帶來的貢獻等,最後因為看我是個小粉絲還透露了一些二代的未公開資訊給我,非常期待二代的面世!第四關是 HR 面試,討論了待遇和福利工時, HR 問題偏向個性和對公司的興趣,希望可以找到志同道合的人作為骨幹,並表示之後還會有電話二面。

隔天就收到北京的 SW 主管電話二面了,使用 WeChat 電談,對話內容比較偏向技術,聊著自己也不知不覺變成北京腔 XD。由於不能現場展示投影片,針對碩論討論了挺長一段時間,還被說了怎麼不趕緊投會議或期刊(因為錯過了 CVPR 2018 )。結尾我問了北京部門狀況和公司未來的產品佈局。電談比較大的感想是最好提前準備履歷和面試備忘錄放在面前,方便隨時提醒自己待會要說什麼,最好避免雙方有同時安靜的時刻(除非正在思考)。一個禮拜後 HR 告知取得 offer ,經過溝通很努力的幫我爭取 bouns, COO 也和我 WeChat 電談交換了雙方的意見,可以感受到他們對求職者的重視。

結果:Offer Get。

兆洋資訊

美商,首先是兩小時的上機考試,共八題,一題資料庫、一題 CSS flexbox 相關問題、一題 JavaScript 實作題、一題 Node.js 功能實作,剩下四題都是演算法相關問題,在 LeetCode 大約是 Easy 等級。我很快就注意到這份題組名稱是 Full Stack Developer ,不禁懷疑自己投錯職位,詢問 HR 得知 AI 職位也是給這份試題,就默默開始埋頭苦寫了。資料庫題目有點複雜,我沒能給出最佳 query ,浪費不少時間; flexbox 和 JS 都屬於有經驗就會解的類型,輕鬆完成; Node.js 實作他有給雛形,基本不難;程式題都用 C++ 解決,有題一直有部分測資沒通過,時間快到才發現看錯題目(掩面),其他題目都算簡單,複雜度幾乎都在 O(N) ,也沒遇到 DP 題目。結束後由 HR 做了簡單的面試,同樣自我介紹、問題和提出期望待遇,比較特別的是 HR 說因為員工訓練成本,入職後會簽最低服務年限條款(一年),我本身不排斥這類合約。

兩天後接到美國主管打過來的電話二面,中文,談了快一小時(國際話費不貴嗎?!),開頭誇了一頓,似乎是上機考成績和履歷不錯。之後開始介紹公司在美國的業務,不過和我期望不同的是目前他們 CV 應用僅在文本識別場景,主管希望我也能參與 Web 開發,說是他們的產品主力,看中我在這方面的經歷和技術,口頭確定了 offer ,薪水和年終都給期望之上。同時也能外派去美國加州新建的據點,會處理好機票、簽證與住宿,期間月薪會再多數千美金。和主管討論了公司未來方向和產品重心,對方很有誠意,因此雖然工作內容和想像的有差異,內心也有點動搖,當天 HR 就寄了 offer 過來。

結果:Offer Get。

台達電子(台達研究院)

面試前需要上系統填寫履歷。 HR 準備了熱茶後就開始技術面試,兩位面試官分別來自 IoT 部門和 Life Science 部門(我投後者)。他們對我的碩論很感興趣,注重在我研究的過程(選擇問題、改良點、架構設想、科學驗證),被問的東西包含:如何進一步的提升模型性能(可改善處)、與比較模型的差異與理論根據、假設 Detection 目標種類改變如何重構模型等,被誇了如果投頂會有機會上。也問了傳統電腦視覺和深度學習興起後的變革與改進,我概括性描述了物件識別、追蹤、分割等領域的歷史和相關論文,同時提到以前較難實現的領域如生成模型、NLP、VQA 等,但仍有領域是傳統方法主導(如SLAM),人格特質部分被問在團隊中大多扮演的角色。再來我問了他們進公司的原因,兩位剛好都是研替簽下去轉正的,側面證明他們對公司的喜愛,基本上也是個允許大膽研究嘗試的好環境。另外介紹了我要投的部門,主要做醫療影像的 VQA 技術,可能因為剛才誤打誤撞提到,面試官介紹時態度很好。最後因為氣氛不錯,斗膽向面試官們問了我可以改進的地方,不過只被稱讚了很有熱忱有自信有條理,沒聽到缺點有點可惜(我不是抖M)。

一個禮拜後 HR 來電談了半小時,大致幫我分析了薪資結構(大公司的年終分紅導向)、福利和詢問我對工作內容的需求,多推薦了個 Machine Learning Data Scientist 職缺,並約了二面時間(兩個職缺一起)。二面第一關為 Data Scientist 職缺的初面,面試官是兩位工程師,聊天了解到他們部門偏結構資料和 AOI ,談到技術太投入結果超過時間沒問到問題。第二關兩個職缺的主管都來了,自介完後被問了投台達的理由和期望環境,自認回答得不錯。他們也提到目前開始嘗試建立 AI 平台部門,期望達到統整各部門技術和讓跨部門合作更加容易,因此可選擇題目種類非常多,既可以深入研究一個主題,也能多方嘗試增加技術廣度。面試過程很和樂,最後又和 HR 討論了期望待遇。數天後了解待遇落點和結構,考量各種因素主動放棄職缺。

結果:主動結束流程。

Opus Microsystems(先進微)

目前面的職位描述裡和我碩論領域最貼近的公司。開場寫了一份題目很少的性向測驗,之後兩位工程師(資深和技術 Leader )來和我閒聊,沒幾分鐘創辦人兼 CEO 的洪博士也進來了,於是開始自我介紹。由於該公司有 3D 感測經驗,解說起 LiDAR 等點雲資料對方皆是相當了解,問題也很刁鑽,包含研究上的思路和失敗經歷、細部架構替代方案的優劣等,也問了一些我沒提到的部分,例如地勢起伏對 3D Point Cloud 的影響和改善和做 Voxelization 的各種方案優劣。然後聊到了黑客松時的團隊合作經驗,包含如何分工和收穫等。

接下來跟 CEO 一對一面談,他介紹了公司的產品線、未來展望和戰略佈局,分析擴展市場以及台灣公司在中國的競爭力問題,我本身對這方面非常有興趣,聊起來很是快樂。適合我的部門有兩三個,包含了還沒正式成立的部分,公司正在轉型佈局期間,野心很大,期間提到了不少管理層決策的判斷基準和思考方向,不知覺學了很多管理知識。他同時希望算法工程師除了按照需求設計,也可以有自己的想法和基本的大局意識,該公司就是以人數少而有力發展到現在。之後問了為何創立該公司,聽到了許多有趣的故事,包含最初做創投的經歷、往 MEMS 領域創業的過程和波折、台灣和國外的投資視野差異、和股東的股權利益糾葛等,又是一波知識洗禮。最後回到正題給出了期望待遇和詢問公司福利,總共談了三小時多,意猶未盡。幾天後收到 HR 正式 offer ,待遇不錯。

結果:Offer Get。

Tomofun

知名寵物科技新創, Furbo 當年群眾募資挺有名的,現在也逐漸茁壯成長。我一按門鈴就有狗狗熱情的過來迎接,到會議室路上一直嘗試舔我的手,超可愛!聽他們介紹是每天會有值班的寵物,應該有控制數量避免公司大亂 XD,環境很明亮時尚,充滿各種新奇的寵物玩具,開放式辦公環境。面試官人數挺多,兩位 AI 部門工程師、一位 RD 主管和一位 HR,我開場就問了何時要出貓貓版本 Furbo ,對方主管笑著說會先等狗狗版市場開發穩定再擴展,面試氣氛變得歡樂許多。工程師問了 YOLO 的實作過程和大型專案的合作經驗, HR 問了演講經歷(如何有這個機會)、最有挑戰性的項目、團隊中扮演的角色、別人對自己的看法、自己的缺點、喜歡的工作環境和不喜歡做的事情,大多問題都有事先準備過所以自認回答得還算得體。主管表示這個職缺是研究導向,多數時間會研究指定 topic 的最新進展以及如何應用到產品上,基本上 Furbo 的可發展性還很高,包含動物情緒分析、更精確的動作識別、精華影片合集等,因此部門會逐漸擴張。他們也介紹了目前公司的主要市場歐美國家和收益增長情形,比我想像中的還高出許多,且背後有趨勢的投資,近年內經營應該會繼續成長。

接下來只留了主管和 HR 談論待遇相關部分,我除了福利之外問了專案進行模式,一般計畫會採用 Scrum 來進行,而 AI 部門由於偏研究,因此週期相對來說會比較長,跟其他部門有蠻大差別。最後表示還有電話二面, HR 帶我逛了一圈公司,中間有看到影片出現過的明星狗勾,忍住了跑過去摸的慾望離開了。一天後接到電話面試,主管對於我的表現持正面態度,並且確認了期望待遇,我有表現出想進公司的意願,因此他們給出了不錯的 Package(包含分紅、股票等),並且幫我做了詳細的收益分析,感受到很大的誠意。很快地就收到正式 Offer ,後來還接到趨勢創辦人張明正電話,小談了一下 Tomofun 團隊,老實說受寵若驚。

結果:Offer Get。

浩鑫電腦

面試前有要求填相關資料寄 Email 給 HR,包含針對專業領域的自我推薦、個性自評和期望工作內容等。開場簽了個資使用同意書,第一關是 HR 面試,對方親和力很強且相當健談,談了期望工作內容、公司類型和大篇幅的個人經歷以及專業技能,也問了偏好有資深工程師帶還是全新團隊成為骨幹,這位 HR 很擅長引導和切換問題,談起來相當愉快。

第二關是技術主管面試,主管是發過 CVPR 的前輩,對電腦視覺領域相當熟稔,面試部門主要以人臉識別為主軸,問題包含:對當前人臉識別模型或演算法的介紹、基於傳統電腦視覺方法和基於深度學習方法的人臉識別比較與差異、對於新的人臉需要多少資料才能學習、假設有充足的運算資源,從無到有建置一個人臉辨識系統的過程、承上題,該系統潛在的其他應用等。問題都是繞著人臉識別,因此只要對這領域有經驗基本上都能流暢回答,甚至舉一反三。這關過程有點像做研究時的腦力激盪,個人認為挺有趣,隨著問答進展越能順暢表達想法,另外有提到我的 Web 經歷會是加分項(有較多與後端串接部分)。總過程大約兩個小時半,後續因為個人時間因素(已超過我設的面試期限)取消。

結果:時間因素中止。

未來市

新創公司,佈局挺大,內容無法透露太多,經過了三關面試(主管、CTO、HR),技術問題包含:假設缺少大量資料,如何建構能用在實務上的深度學習模型、對某些電腦視覺問題的應用設想等。主管和 CTO 對公司都充滿信心,有感覺到新創獨有的熱忱和鬥志。最後 HR 介紹了公司待遇和福利,值得一提的是她溫和地提醒了我有時語速會太快,對此非常感謝她,少數會告訴我改進點的面試官。整場總共談了三小時多,之後 HR 邀請我和創辦人二面,不過因為個人時間因素(已到我設的面試期限)取消。

結果:時間因素中止。

Viscovery

第一關是電話面試,介紹了公司目前的產品走向(與我過去了解的 Viscovery 不同了)和職務內容,之後自我介紹,在電談中解釋某些東西比想像中難,主要針對我論文模型有比較深的提問,中間提到 Single Shot MultiBox Detector 討論了其優缺點。第二關到現場面試,門口放了很多零食 XD,兩位工程師首先和我介紹公司真實現況,知無不言,十分誠懇,請我不用怕放手問,還主動提起沒說的敏感問題,使我反而更有信任感。被問了 Underfitting 和極大種類資料的處理問題,我回答分類樹、分類標籤、特徵清洗、調整正規化手段等。接著是白板題,問題不難,偏測試細心程度、邏輯和設計層面的思想,合格通過。後來又聊了很多面試的歷程心得,對方都不吝於分享,感覺是共事起來會很歡樂的 Team !

第三關是主管和 PM 面試,主管詳述了公司轉型到落地產品的規劃,並統整了公司現有客群、收入和計畫,我可以根據興趣選擇 Team (都有缺人)。被問了團隊分工經驗、如果遇到不擅長的領域會如何開始著手、對客戶和 PM 和工程師三方溝通流程的看法等,對方很親和好溝通。第四關是 HR ,確認了我對公司的看法以及告知薪資結構和福利,還分享了公司失敗到重新站起來的過程,整體面試感覺很不錯。一天後收到正式 Offer ,待遇很有誠意。

結果:Offer Get。

QNAP

知名 NAS 製造企業,首先是一小時半的筆試,包含了邏輯數學題、 Python 基礎(回答輸出)、機器學習(PCA、SVM、梯度下降、Overfitting、BN、CNN)和性向測驗(題目不多),自己寫起來感覺是全對沒問題,無法得知最終成績。第二關是技術面試,主管和我有挺多技術共通點(尤其是在 Web 和 ML 方面),而且同樣熱衷參加開源活動(聽說整個部門都是),聊起來很開心。他介紹了職位工作內容和相關部門,主要看重我技能樹點的很廣這點,希望可以作為目前分工太細的 Team 的跨組工程師。比較有趣的是問我的 Lua 大多用在哪些地方,我不好意思地回答:寫遊戲腳本(ㄍㄨㄚˋ),主管聽了哈哈大笑。

第三關是白板題,面試官為軟體架構師,題目不方便直接透露。一開始討論解法,我首先表示使用 Hash Table 可以算出最佳解,時間複雜度 O(n) 。他問了 Hash Table 的缺點,我回答空間成本和碰撞造成的效能損失不能兩全,他就假設輸入極大,運算單元無法負荷 Hash Table ,此時最佳解是什麼?我很快提出了先進行排序,再二分搜尋,此時複雜度為 O(nlogn),他又問如果輸入已經排序過,最佳解此時為何?我先提出應為最優解應為 O(n) ,然而如果繼續對 n 個值二分搜尋複雜度依然會同上,所以瓶頸在於搜尋步驟,直覺想到不必搜尋而記錄位置來比較(空間換取時間),複雜度就能達到最優。面試官到此表示差不多可以寫在白板上,並建議我想好極端案例、需求,動筆後即開始計時。寫的有點急漏檢查了空輸入情況,其他問題不大。後來因為耗時很短,又出了個加分題,主要是做額外的字串處理要求。他結束時表示我解題速度太快,不知不覺節奏被我帶走 XD,忘了提醒我要確認好題目「真正需求」(例如輸出格式),現實情況也很常出現雙方認為的「需求」其實不對等的情況,學了寶貴的一課。和面試官一起討論思考的過程很棒,個人認為是面試中最有趣的環節。最後是 HR 面試,介紹公司現狀和詢問我的期望待遇,整場面試大約四小時多。大約一週後 HR 告知核薪的大致落點,由於那時差不多鎖定好期望 Offer 了,我了解後就主動放棄該職缺。

結果:主動結束流程。

宜睿科技

機器人新創公司,進門就看到了搬運機器人和服務機器人,公司 Logo 很有科技時尚感。面試官為主管和博士工程師,被問了黑客松中搜集資料的方法、標記自動化的想法等。他們目前核心業務是可跨層移動的搬運機器人,目前在 DL 方面比較缺人,現階段需要提升障礙物識別率和速度,並克服電梯內多人偵測,同時避免鏡子導致的誤判問題。後來額外被主管問了 Linux Programing 和 MAC 層 CSMA 運作機制,我坦白不會(說起來也跟我工作內容不相關…)。兩位都很親和務實,討論完待遇就表示明天就有結果,果然隔天就收到正式 Offer ,很有效率。

結果:Offer Get。

中強光電

本來是投錯職位,因為他要求是博士學歷的資深主任級工程師,後來部門主管主動來電和我談了一小時,了解他們也正在尋找年輕新血。團隊目前只有少數幾人,全都是資深精英,主管本身是 Google 前員工,做自動駕駛和寫 GPU 的先驅,他表示看過履歷和 GitHub 覺得我挺有潛力,想邀請來新竹面試看看,聽他描述面試難度挺高,心中忐忑不安。當地交通比想像中麻煩很多,搭到最近的地方還要走約半小時的路程(附近完全沒公車)。

首先是線上英文測驗,類似多益,我犯了個大失誤是到閱讀測驗想看剩幾題,點到最後一頁系統給我直接交卷… 大約少了 12 題的分數,提早了快 20 分鐘,有跟 HR 反應不過大概沒什麼用。大公司常出現的性向測驗快速解決。緊接著 HR 面試,他對我只知道公司有做投影機有些不滿(因為邀約有點匆忙沒能充分了解公司),向我介紹了公司發展至今的三個部門:投影機、背光、 RD 研究中心。後者是新部門,為了拓展新領域所建,強調了核心精神是「賺錢」和「快」,我所投的 Team 更是特種部隊,處理的都是最難的計畫。然後是主管和工程師面試,不廢話直接大量問題開場,有印象的包含:

  1. CNN 除了 CV 領域還有什麼應用,優點在哪
  2. CNN 相較 MLP 的優勢
  3. 舉出令人印象深刻的模型和其應用
  4. L1 / L2 的差異
  5. 機器學習方法中哪些不需要做 Normalization
  6. FAST Corner Detection
  7. 說明幾種 loss function 和其使用領域
  8. Entropy 在機器學習可能有哪些應用

基本上都盡力回答,然而還是有部分題目沒答好(如 FAST、不需要 Normalization 的方法等),主管表示勉強合格,工程師表示還不錯(不知道是不是安慰 QQ),他們主要想把只看內容農場的半路出家 ML 求職者篩掉。接下來他們邊問履歷上的技能邊聊天,我詢問了工作現狀,感覺時程真的挺趕,專案也都不簡單,加班保證能報加班費。最後再次和 HR 談話,他跟我特別提醒這個 Team 都是技術狂人,可以一天內做出其他工程師兩倍以上的結果,也可以連續數天高強度工作,他表示也不希望進去之後才發現不適合,勞資雙方都會很痛苦。最後談了期望待遇,得知可能要先在新竹學習一年,我婉轉表達了拒絕訊息,因此到目前為止還沒收到回覆。

結果:無聲卡。

獵頭公司

特別提在後面,共有兩家獵頭和我聯絡過,算是比較新鮮的體驗,他們表示這領域由於沒有多少真正的「資深」人員,因此有潛力的新人也會是目標。介紹接洽過幾間公司,某間可惜的是由於對面流程問題後來沒有去成;另一間媒合還沒完成我就決定其他 offer 了。認識獵頭好處是他們會給你求職上的不少經驗,甚至你在投履歷前可以詢問他們對公司的看法或直接引薦,是個互惠互利的長期合作過程。個人認為這領域可以主動去聯絡獵頭,不用害怕自己是新鮮人,收穫會比想像的大。

總結

針對不同類型和規模的公司有對應的面試技巧,事前準備好簡潔專業的履歷、適當複習 CS 基礎和特定領域知識、練習自我介紹,以及寫一張備忘錄,提醒自介的關鍵字和該問的問題,這方面板上近期有系列文章可以參考。切記新創務必詢問 business model 、 客戶來源(有無客戶)、盈利來源(有無盈利)和背後資金(投資人?融資?)等,這關係到你是否能在一段時間內和公司共同成長,對方通常也會樂於告知。大公司通常是底薪不高偏向分紅,多關注 Project 進行流程、管理階層風格、部門重要性(賺錢部門?還是舉無輕重的附屬部門?)。適當的表達對公司的瞭解和(發自內心的)喜歡點很重要,另外個人認為對技術的熱忱很能打動面試官,這方面要從自己的履歷、經歷和口頭描述發揮。

面試到後來會有些疲倦感,但收穫也很大,不斷的面試可以更好得知自己在市場上的價值,藉由談話也能吸收很多養分(經過多間高手指教,論文改進版的靈感都來了 XD)。希望這篇落落長的心得可以幫助到各位!