三年目睹之 — — 實習面試心得與紀錄

Jack Cheng
16 min readMay 22, 2019

--

現在大四,大學時期的最後一份實習工作塵埃落定,回頭想想第一份實習是從大二暑假開始,也應徵過不少實習,手邊都有每次面試的紀錄,但始終沒心思彙整,這次趁熱一次補齊,希望紀錄之餘也可以給剛好需要的人一些參考。

應徵實習職位主要為前端開發、後端開發、ML/DL 三個領域,有興趣的路人可以看看是否對你有所助益。

投遞過履歷的公司/單位有

  • 2019 Umbo CV [AI Engineering]
  • 2019 KKBOX [Machine Learning Intern]
  • 2019 趨勢科技 [全年實習-機器學習類]
  • 2018 Fourdesire [Engineering Intern]
  • 2018 LINE Taiwan [TechFresh Development Intern]
  • 2018 優拓資訊 [Data Scientist]
  • 2018 均一教育基金 [軟體研發組]
  • 2017 Fourdesire [Engineering Intern]
  • 2017 APPAR [軟體開發] [ML intern]

【 Umbo CV 】

實習職位:AI Engineering

應徵過程:104 人力銀行投遞履歷 →面試 →通知結果

面試時間:2019/05/14

面試地點:線上視訊(當下人在北京大學交換)

面試過程:

  1. HR 外語與你交談一會,轉給台灣工程師,考英聽 xD
  2. 兩位工程師,偏年輕,感覺裡面注滿心血與活力與新鮮的肝
  3. 自我介紹
  4. 針對自我介紹中的內容開始提問

以下的問題幾乎都會根據我的回答,再繼續問下去,所以是一個問答示的過程,而不是已經出好題目的那種形式。

4.1 「好奇 Few Shot Learning 怎麼做的?講解一下 Few Shot Learning 的定義與 scenario? 講解一下 Relation Network 。」

4.2 「不同 Databases 間(我舉 MySQL / MongoDB / ElasticSearch / HBase)的適用時機 ? 你如何選擇?」

4.3 「實作一個縮網址與反向查詢的服務 Backend 如何設計?你要如何實做縮網址的功能?如何避免 hash conflict 的問題?DB 如何選取、設計、結合?」(感覺是他們內部的一項開發項目)

4.4 「實作一個縮網址與反向查詢的服務 Backend 在大流量下,你要如何設計來舒緩?」

5. 程式題,在 collabedit 上當場撰寫

5.1 Fibonacci Sequence

這題很簡單,但要考慮輸入的合理性,然後要寫出 recursive 和 iterative 的兩種寫法。最後分析兩種寫法的 time / memory complexity。我 recursive 的 memory complexity 當下太緊張答錯,面試官會友善的引導你,給一個 clue 後便想出來,感覺比直接答對還加分,代表反應力、分析力。

5.2 The k-th largest number in an array (同個數字當成相同元素,像

一樣)

這題與一般的 The k-th largest number in an array 題不一樣的是,array 中會有重複的數字,但在算 The k-th largest number 時,重複的數字都只能佔一個位置,例如 [1,2,3,4,5,5] 第五大是 1 不是 5。因為限定不能使用 set() 這個函數,所以要嘛自己寫一個類似 set() 功能,要嘛就是在後續的 code 裡面處理掉重複的問題。此問題最強的解法相當然是 BFPRT 演算法,複雜度是 O(n)。但畢竟是面試題目,我選擇比較有把握的寫法,複雜度是 O(nk)。一樣會請你寫完分析 time/memory complexity。

6. 提問階段

因為考完程式題後,面試已經超過一小時了,所以他們就趕緊結束,開始進入最後階段的問題

6.1 面試官:「你對這份實習的工作內容想像大概是如何?」

他們先問我對於這個職缺的想像,然後他們也會告訴我這個職缺可能會涉及的內容,以及簡單的公司成員組成、平日工作模式等等。

6.2 我:「過去進入的實習生常常會在 on board 後遇到什麼樣的技術、經驗上的問題?」

7. HR 收尾

又是痛苦的英聽,還好很快。

面試心得:

是技術面很高的一間公司,資金和市場發展也很不錯的感覺,除了研究,也很注重產品開發,台灣部門人數不多,印象中他們說大概 40~60(有點忘記)左右?在國外倫敦之類的也有部門。很喜歡這種專精開發與這樣人數規模的公司,特別紮實。面試官感覺很年輕 xD 感覺公司內部都很新血特別 open 和有幹勁?面試官人都很好,感覺輕鬆,不會的地方都會慢慢引導你。唯一神奇的是,我準備了一大堆的 DL 問題要被考,結果問題幾乎都滿分散的,後來才知道因為這份職位會涉及的部份不僅僅是 DL 還會有其他 Pipeline 到產品化的部份,所以問題可能因此被分散著問。

結果

Offer Get

【 KKBOX 】

應徵過程:104 人力銀行投遞履歷 →一週實作測驗→面試 →通知結果

實作測驗:一週完成之前 2017 KKBOX 在 Kaggle 上的比賽,恰逢期中週,人生慘澹。必須通過實作測驗,才能進到面試關。

面試時間:2019/04/29

面試地點:線上視訊(因為我人當下在北京大學交換)

面試地點:線上視訊(當下人在北京大學交換)

面試過程:

  1. 兩位 ML 專業的面試官,沒有 HR 過程。
  2. 自我介紹
  3. 針對自我介紹中的內容開始提問

3.1 「過去 DL 寫過的 Model 或是 Projects 當中哪個最令你印象深刻?」

「(承上題)那請跟我們解釋 GAN /ACGAN。」

然後就是一連串的問答,包含一些技術性、優化與terminology 的問題。

3.2 「那再來一個印象深刻或是覺得困難的 Model?」

「(承上題)請解釋 Faster RCNN。」

然後又是一連串的問答,不過有些細節有點忘記,並沒有給出 100 分的回答嗚嗚。

「(承上題)你說那次 train 的不太成功,那再給你一次機會,你會如何改善優化?」

3.3 「解釋 XGBoost 。」

「請問 XGBoost 當中的 feature importance 是如何算的?」

3.4 「你也有前端經驗,那請簡單說明一下 ReactJS 和 VueJS 兩個 framework 差異與優缺點。」

3.5 「解釋 Cross Validation 並說明為何我們需要它?」

3.6 「你有 Chatbot 經驗,請分享一個 Project 。」

3.7 「如果現在 KKBOX 要開發一個 Chatbot ,請你發想一個,並說明功能與設計。」

「(承上題)在你的發想中,DL 的部份,請大概描述整個開發的 Pipeline 以及可能所需要的資源與技術。」

3.8 「今年你們系上有許多同學有投,你們有什麼競爭關係嘛?」

4. 程式題

因為已經有實作測驗的感覺,這裡他們就只是形式上的出一道題目,他們也說「放輕鬆,只是想看你會不會打 code 而已 xD」

4.1 Give two arrays — one is label array and the other is prediction array — implement function with output of confusion matrix.

5. 提問時間

5.1 我:「實習生的企劃會如何進行?」

5.2 我:「開發上有什麼工具或是程式語言上的限制嗎?」

面試心得

只有兩位面試官,語氣平穩,在回答得不錯時會有表情上的反饋。整體上我最擔心的根本不是面試本身,而是大陸的 VPN 真的非常不穩,超怕訊號斷光光,前一天反覆練習如何因為斷訊而道歉。但是那天不知道怎麼回事,竟然完全沒有斷過,感謝。好,回到面試,有一點令人非常舒服的是,回答的過程面試官都表現得非常中性,不是要把你考倒,也不是要回擊你,不會有令人不適的語氣與回應(對,我之前面試的均一就是讓我超級不舒服,這裡完全沒有馬賽克哈哈哈),是真的想要知道你的能力在哪裡的那種態度,令人感到很舒服,回答也很安心。整體上,技術性問題問得滿多,但還好有些有準備到,加上都是問到我相對有把握的內容,回答上比較充裕一些。

結果

Offer Get

【 趨勢科技 】

實習職位:全年實習 機器學習類

投遞時間:2019/05

應徵過程:104 人力銀行投遞履歷 →無收到下一步回信

過期投的 xDDDD 但聽朋友說好像有延期,雖然沒有公告延期的樣子,就想說還是投一下。

結果:

No reply

【 LINE Taiwan 】

實習職位:TechFresh (Development Intern)

應徵過程:Wanted 投遞履歷→一週實作測試→面試→電話通知結果

實作測驗:用 Web 或 Chatbot 來做自我介紹(二擇一),前者還要做 RWD+Lighthouse 測 performance,後者要研究並使用 Line Bot SDK。適逢期中,陷入地獄,為什麼實習實作測驗都要剛好在期中,而且大三的課最重嗚嗚(愛抱怨)…必須通過實作測驗,才能進到面試關。

面試時間:2018/05/04

面試過程:

  1. 先被 HR 帶到一間會議室,計時做紙本測驗。測驗為英文命題,大約 5–7 題,時間約 30–50 分鐘(確切時間忘記了…但時間應該會剛剛好,不會太趕。)以下為紙本測驗大致內容。

1.1「Bubble sort / Binary sort 的 averaged / worst complexity analysis」、「Binary Search/ Hash Search 的 averaged / worst complexity analysis」之類的。

1.2 TCP/IP 相關名詞解釋,還有一對和 Protocol 相關的問題,命題包含 port、DNS、Async、sliding window、OSI 7 Layers。如果剛好在學電腦網路概論相關課程的應該很吃香。我呢,那時候有些不懂,有些忘光光,完全不知道在回答什麼…(現在回想起來超級丟臉…)

1.3 HTTP Protocol 當中 Header 哪有些屬性?列舉 3–5 項。

1.4 九個點排成 3x3 的分佈,請用連續不中斷的四筆劃畫過所有的點。

1.5 Psudocode 考題:忘了哈哈哈。好像是 permutation 相關的。

1.6 還有一兩題我沒記下來。

2. 筆試結束,兩位面試官進來,後來就是帶領我們實習生的主管。

2.1 自我介紹

2.2 「分析一下 MongoDB 和其他 DB 差別,使用時機、優缺點各是什麼?」

2.3 「Socket 是什麼?解釋一下。」

2.4 「之前有寫過 APP 經驗,為什麼要用 React Native ?」

2.5 「你有 DL 經驗,能分析一下不同 Framework 彼此差異與優缺嗎?」

2.6 「NLP 有用過哪些套件或工具?有使用過 Jieba 嗎?」

2.7 「我們的實作測驗你選做 Chatbot,過程中有遇到什麼問題嗎?」

2.8 「你現在大三,那未來的計畫是怎麼樣呢?有要讀研究所嗎?」

3. 紙本測驗檢討

他們把我剛剛紙本測驗的作答掃描成電子檔,直接當場檢討…我的天哪,當下我真的很想挖洞把自己埋起來,完全不想承認那是我寫的答案,史上最丟臉的作答。然後就這樣一題又一題的檢討得體無完膚…

4. 提問時間

4.1 我:「大公司裡頭,開發規模很大,大家會因為使用不同程式語言而造成合作問題嗎?」

4.2 我:「實習生的工作內容和未來可能會接觸到的專案大概是什麼方向?」

面試心得:

環境真的很高級、整潔且活潑,感覺在裡面工作會是一種高級享受。面試過程中兩位面試官一位比較和善,一位比較嚴格,常常被嚴格的那位叮得滿頭包,和善的面試官看我招架不住會幫我一下xDDDD 不過後來回想,我連有些基本的問題都不會真的滿弱的,爛到嚇到吧哈哈哈,後來立刻回去惡補一波網路基礎知識。過程中真的很想離開,因為自己真的在這方面還太弱,老實說當初根本沒想到自己可以過關到最後的面試,一切都太意外。

結果:

Offer Get

【 Fourdesire 】

此實習我連續兩年都有投遞,因為流程是一樣的,所以合併撰寫。

實習職位:Engineering Intern

應徵過程:寄信投遞履歷→現場紙本測驗→面試→寄信通知結果

紙本測驗:現場紙本考試,必須先通過此關才能進到面試關卡。內容包含邏輯推理、離散數學,不包含程式與網路相關。以下為兩年紙本測驗所有有紀錄下來的題目。

  1. 給定三個點座標,求法向量。(考高中空間數學相關)
  2. 給兩個光劍的各兩個點座標,試判斷兩光劍是否有交集。(考高中空間數學相關)
  3. 給某個地圖 12 格,判定是否可以全走且回到原點。(考 Euler Path 相關)
  4. 給一個滿複雜的機械手臂結構,求旋轉矩陣、平移矩陣之類的東西,要全對應該滿難的…參數有點多,加上時間壓力,我也忘記我到底寫了什麼 xDD
  5. 七橋問題,證明或說明之。(又是 Euler Path 相關)
  6. 手電筒過橋問題。(命題可以參考這篇文章
  7. 排一列看前方帽子問題。(命題可以參考這篇文章
  8. 飲料配對問題,經典演繹推理題。(就是給 xxxx 是 yyy,aaa 不是 bbb 一堆條件,要你推理判斷最後的配對情況。)

面試時間:2017/05/25 與 2018/05/29

面試過程:

面試關卡滿特別,一週前會寄信通知你要準備 PPT 自我介紹,包含 7 分鐘 presentation 以及 3 分鐘 Q&A,並對於自我介紹的內容有一些必須包含項目的規範。

第一年:

  1. PPT 自我介紹
  2. 「你說你對許多領域有興趣,那能請你分享最近一次參與其他領域活動的經驗嗎?可以是參展、關注社會議題等等。」
  3. 「你今年大幾?如果有實習工作那之後會不會有時間上的衝突或壓力呢?」
  4. 「你是讀電機的,那是如何接觸這方面程式設計的呢?(有點忘記確切問法,不過就是在問如何接觸與學習程式。)」

第二年:

  1. PPT 自我介紹
  2. 「印象中去年你也有來面試,那這一年當中你自己覺得有哪些地方改變或進步的呢?」
  3. 「你現在大三,那未來學涯規劃是如何呢?」
  4. 「請你分享一下你覺得最有趣或最有難度的專案。」
  5. 「你作過滿多領域的東西,能分享你最喜歡的部份嗎?以及未來你可能會比較想要往哪一方面走呢?」

面試心得:

真的很喜歡這間公司的環境與氛圍,從所有細節都可以感受到蘊含無窮的巧思與質感,是一間令人驚豔又喜愛的新創公司。面試過程能感受到無比的貼心,從安排等待的地方、接待我們的人以及整個流程的順暢度,都無可挑剔,雖是一場場考試,就很享受在這空間的感覺。紙本測驗的部份,圍繞在邏輯推理上,幾乎與程式或是電資相關知識無關,很特別,甚至整個過程都沒有程式題 xDDD(替他們擔心錄取到不太會打 code 的人? xDD)因為這次是第二次面試這間公司,在流程上比較不擔心與焦慮,但會有「比較」的壓力,必須重新審視我與一年前的自己有什麼樣的進步。另外,因為是第二次面試才通過測試,老實說會有點擔心自己是不是憑實力通過測試的,會不會是因為覺得來兩次或是看到我的成長等其他因素而有加分(或扣分 xDDD)。

結果:

第一年:Rejection

第二年:Offer Get

【 優拓資訊 】

實習職位:Data Scientist

投遞時間:2018/02

應徵過程:寄信投遞履歷 →直接收到回絕信

這份實習工作是做 NLP,我那時候 NLP 連一個 model 都沒做過,純粹投來刺激自己,因為每次收到回絕信都會奮發向上 xD

然後我就趁著這個刺激所帶來的奮發感趕緊學習一波 ~

結果:

Rejection

拒絕信如下(為了給自己奮發感還特別存下來。)

有相當多的履歷寄來,然而我們只能面試有限的應徵者。當然,僅憑藉履歷等書面資料,肯定會有遺珠之憾。因此,優拓鼓勵應徵者於至少三個月後重新投遞一次履歷,並在這期間不斷精進 ML 技巧。您可以實作一些 paper 上的演算法並 open 出來,參與 Kaggle 競賽,或發表論文,即便只是在 Arxiv 上也相當不錯。事實上,優拓就曾經收過投遞第二次的實習生。

【 均一教育基金 】

實習職位:軟體研發組

應徵過程:寄信投遞履歷遠端測驗→面試→拒絕信

遠端測驗:

以寄信方式送達題目並計時 45 分鐘。

1. 請寫一個程式把裡面的字串反過來,但是單字的順序不變。

2. 請寫一個程式,Input 是一個數字,Output 是從 1 到這個數字,扣除掉所有 3 的倍數以及 5 的倍數,但是需要保留同時是 3 和 5 的倍數的總數。

3. (非程式題)房間裡有三個袋子,一個只裝鉛筆,一個只裝原子筆,第三個有鉛筆也有原子筆,袋子是不透明的,單從袋子的外表上看不出任何差異,你不知道哪一個袋子裝了什麼。除了袋子上各貼了一個標示(“鉛筆”、”原子子 筆”、”混和”),而且標示都是錯的(ex. 標有鉛筆的袋子一定不是只裝鉛筆)。你只能選一個袋子,然後拿出裡面一支筆看是鉛筆還是原子筆,然後你要推論出這三個袋子分別的情況。請列出您的作法,以及解釋為什麼這樣可以找到答案。

4. (非程式題)有三個人去餐廳點了一份現在最夯的冰雪奇緣雙人組,要價 900 元,付錢後,服務生發現今天套餐特價,只要 750 元,因此服務生應該退還 150 元給這三個人,但是他一時鬼迷心翹,按扛 60 元,只退了 90 元給這三個遊客。那麼:三人各出 300 元 ,服務生還給他們一人 30 元 = 三人各出 270 元 270元 × 3人 + 服務生生私吞的 60 元 = 810 + 60 = 870 !? 怎麼不是 900 元呢?還有 30元去哪了呢? 請用敘述的方式,儘量清楚解釋問題出在哪裡。

面試時間:2018/05/16

面試過程:

抱歉,因為這次的面試過程實在太生氣,所以有點忘記面試過程了哈哈哈哈。儘能夠提供上面的遠端測驗。

面試一開始會給你再做一份紙本測驗,然後時間過後會兩位面試官會進來跟討論,會要你一一解釋你的解法。然後再進入其他問答與自己介紹等環節。

面試心得:

這次面試實在有夠不舒服,一切都很好,唯獨有一位面試官令我憤慨。面試當中問到與 DL 有關的部份,可以看出來他的經驗並不是很豐富,很多地方概念不是很正確,然後他還一直質疑我,甚至用很不耐煩的語氣一直說他的想法才是對的,啊就真的不對啊…有點不明白在他自己不熟悉的領域為什麼還要這麼堅持,甚至態度還極差,心裡早就翻眼想走人了。最後我也草草的說對對對你是對的,想趕快結束。離開後,真的是氣到完全忘記前面面試考題與內容到底是什麼了…不過還是補充一下,這是我和面試官的私人恩怨(xDDD ?!)跟這份職位與單位完全無關喔,其他環節的人都非常和善喔!

結果:

Rejection

【 APPAR 】

實習職位:軟體開發

應徵過程:104 人力銀行投遞履歷→面試→寄信通知結果

面試時間:2017/05/24

面試過程:

  1. 因為是小新創,直接與老闆見面
  2. 自我介紹
  3. 老闆介紹公司
  4. 老闆介紹這份實習未來可能的工作

面試心得:

面試過程,老闆都非常的親切,也很認真跟我講解公司未來的展望,以及這份實習內容大致是什麼。因為那時是大二,完全沒有任何開發經驗,實在不知道該怎麼丟實習履歷,非常感謝這間公司願意收取一個零經驗的白老鼠。如果沒有這間實習的經驗,我實習之路大概根本不會開啟吧。總之是對我來說是一次非常關鍵且重要的經驗。

結果:

Offer Get

--

--

Jack Cheng

Interested in ML, algorithms, and back-end. Studied M.S. at NTU GICE.