背景介紹
原本想說自己背景沒有多厲害,不要丟人現眼XD,但寫著寫著就覺得可能還是需要提一下才可以理解我面試中被問的問題等等,所以寫個簡略的背景介紹
118資管碩一,研究領域是NLP,但對CV也很有興趣。
- 大三跟組員參加了遊戲公司舉辦的遊戲競賽,自己寫了所有Code並拿到第一名,得到公司輔導上架(投履歷的時候還沒上架)以及實習的機會
- 碩一上在外商軟體公司實習,做了一個面相客戶,跟NLP有關的專案
- 碩一下在國泰實習,做了一個跟CV(人臉辨識)有關的專案,擔任小組長,專案是18個專案中的第2名(投的時候還沒公佈)
- 大學系上畢業代表、書卷獎、GPA3.85左右
- 在校內Kaggle的IR(NLP方面)競賽第三名(但人數不多)
- 作品方面實作了一篇Google的論文「Noisy Student」(CV領域的semi-supervised learining的技巧)
面試分享
我大約三月底開始投履歷,有些公司在四月甚至五月才會釋出職缺,所以每隔一個禮拜我都會重刷一次有關注的公司的網站和104。大約在四月初可以投完第一波,在五月中投第二波。下面雖然有分暑期和學期實習,但學期實習也都是7月開始到年的1月。
面試中通常都會有的自我介紹和開放問答我幾乎是一套打天下,所以先寫在前面給大家參考,如果已經有自己的一套想法就跳過吧XD
- 自我介紹
自我介紹非常重要,面試官在問問題的時候通常都會先從經歷開始,我們可以透過自我介紹引導面試官問問題的方向,問出的問題也比較能自然應對,所以自我介紹的內容最好是你想讓面試官詢問的方向。
因為我的學歷在ML領域來說可能相對比較弱勢(大家都在做ML,一屆可能有將近一千人XD),所以我個人偏好火力展示,讓面試官詢問我技術問題的自我介紹,讓面試官知道我不是來玩玩的。因此我會將我的實習經歷、參賽經驗、作品用最簡短的字濃縮起來。
- 開頭
您好,我是就讀 ○○○ 大學 ○○○ 所 碩一的學生 ○○○,主要研究領域是 ○○○
先讓對方對你有個最簡單的了解,也能知道你碩班在幹嘛,對什麼有興趣。下一部分就是你跟別人相比最不同的地方,以我來說就是我的實習經歷。
- 經歷
我總共有 ○ 次的實習經歷,首先我想分享的是我的第一份實習,我在 xxx 公司擔任 ○○○。在實習期間我透過 ○○○的方式,成功將準確率從 ○○提升到 ○○。
這部分我認為是最重要的,第一個段落會建立起對方對你的印象,如果在這個部分讓面試官覺得你好像有點料,相信一定會對面試有很大的影響。如果沒有實習的話可以用參賽經驗或作品來代替。在這部分也是盡量減短,一句話盡量要有一個以上的關鍵字,並且用數字呈現你的成果,詳細的介紹可以等到面試官詢問後再講。
- 作品
在 ○○○ 領域,我總共有 ○ 份作品,第一份是關於 ○○○的作品。
通常實習過程都不會用到太先進的技術(至少我在實習中處理NLP的問題時沒有用到BERT這種模型),所以我會在這個段落表達我的ML能力,例如我會展示我NLP和CV的作品,讓對方知道我是有能力去應用比較新的模型的。
我覺得展現自己對最新技術的理解是滿重要的一件事,因為我在面試過程中,當主管開始介紹職缺的時候,幾乎都會希望實習生能提供他們沒有的想法/自己想出解法之類的,所以如果你只會大家都會的技術可能就比較沒有優勢。
- 開放問答
我比較不會為了面試分數去問問題,幾乎都是問我在意的點,列出來給大家參考一下XD
- 這個專案是我一個人做嗎?還是會跟其他實習生合作呢
- 我的一天大概會是怎麼樣的
- 專案內容的細節(e.g. 剛剛提到需要作出推薦系統,請問是類似graph做的推薦,還是偏向NLP的呢?)
- 實戰分享!
滿長的,可以挑問答或有興趣的看就好,以下先整理幾個建議給大家參考
- 寫在履歷上的東西 「一定」「一定」「一定」「一定」要超熟!
- 不要只準備ML的技巧,Python也要準備比較常見的問題(list vs array, set vs tuple…),可以講得深一點。
- ML的準備可以著重在概念部分(e.g. 模型理解、訓練技巧、常見問題等等)。程式碼比較少問,可以準備對框架的了解(e.g. pytorch的auto_grad)
- 如果很了解某些模型/技巧的原理,但沒有應用過的話也可以寫在履歷的skill裡面
Garmin - 製造工程處/製程整合部MES課_實習生
D(3/21)在官網投履歷
D+29(4/19)電話詢問意願+邀請面試
D+30(4/20)完成適性測驗、英文測驗
D+32(4/22)面試
D+45(5/05)感謝信
- 大概的職務內容
學期實習,用CV做瑕疵檢測,不排除有其他領域像是NLP或語音辨識的任務,有可能需要出差。
- 面試前作業
線上適性測驗、英文測驗
- 面試
在面試前先寫了一份Python(可以選其他語言)+ML的考卷,時間是一小時,有強調考卷是給正職寫的,只會參考而已。Python部分都是程式碼,大概是Class和List, Dict, Set, Tuple等資料型態的問題,個人認為沒有到很深入;ML則是七題概念題,問的也是滿基礎的問題,像是CNN為什麼適合CV、imbalance是什麼以及如何解決、KFold、Sigmoid vs ReLU vs leaky ReLU 優缺點…。
寫完後先面了人資,大概半小時,結束後三位面試官就進來了,看起來是一位主管+兩位工程師。首先是自我介紹,人資在信件中提到建議準備十分鐘以內的自我介紹PPT,我放了三個實習經驗+兩個ML作品,原本預計是八分鐘左右講完,但邊講主管會邊問,所以大概講了四十多分才講完。
- 自我介紹PPT,幾乎每個部分都有追問,這邊只列技術問題
- 在軟體外商公司的實習中,是用什麼方法把文字轉成向量的?
- 為什麼要用這種方法,有什麼考量嗎?
- BERT在Pretrain的時候是用什麼任務去train的?
- Kaggle比賽的metrics是用什麼(Precision@K)?他是怎麼衡量分數的?
- Kaggle比賽有沒有用什麼特別的技巧去提升模型表現?
- Noisy Student為什麼能夠提升模型的表現?
2. Precision Recall是什麼?
3. MSE vs MAE的差別,為什麼大家都用MSE?
4. 你覺得你有的semi-supervised learning能在在業界提供什麼幫助?
5. Class vs Interface 有什麼差別?
6. 資料結構對你寫程式有什麼幫助?
接下來的問題是面試官看了我的成績單後,覺得我沒修太多關於ML的課但懂得不少,問我是透過什麼管道學習的,我的回答中有李宏毅教授,所以衍生的問題。
7. 你說你有看過李宏毅的線代,那Eigen Vector和Eigen Value是什麼?
8. 李宏毅有很多主題,你有挑特定哪些看嗎?
9. 你說你有作李宏毅的作業,有些作業不是那麼簡單,你有跟誰討論嗎?
- 心得
當天整個流程下來花了三個小時左右,我覺得Garmin是很用心在挑人的,過程也聊得滿開心的,只不過可能是我有些問題沒有準備好,或是有比我更強的人,最後沒有拿到Offer有點小小小意外。不過對Garmin來說我的學經歷應該也沒有到非常突出,而且想到他們只收一個人,就有不少藉口可以調適,繼續準備下一場面試XD。另外我面的是汐止廠,對學生來說這邊真的有點遠,而且周遭以台北來說算是比較偏僻一點的地方。
Line — Tech Fresh Program _ EC Dev team(Data team)
Line的招募是收件截止後才會開始面試邀約,所以不用太著急。
D(4/20)在官網投履歷
D+24(5/14)收件截止
D+27(5/17)收到QA Team面試邀約
D+31(5/21)面試QA Team
D+35(5/25)收到Data Team面試邀約
D+37(5/27)面試Data Team
- 大概的職務內容
主要是NLP的任務,像是推薦系統,也會接觸後端和資料庫,以及製作報表。
- 面試前作業
實作相關的作業
- 面試
一開始是先被分配給QA Team,但面完後QA Team覺得我比較適合Data Team,所以幫我轉介給Data Team。面試時因為疫情所以遠端面試,有三位工程師面我。
- 經歷
- Python
- list, arrray, set, tuple…各種資料型態的比較,越詳細越好
- 程式碼裡面的__init__跟檔案名的__init__.py差異
- static method和class method的差異
- dictionary遇到key不在index裡面你會怎麼處理
- ML
- BERT有什麼重要的東西,讓它比LSTM之類的模型還強
- 用pytorch的考量,為什麼用pytorch不用tensorflow
- 假設一個Embedding有1百萬*1百萬 你的記憶體塞不下 你會怎麼做
- PLSA(我有寫在履歷上)
- PLSA的記憶體和運算速度要如何改善
- 你說有把BERT、RoBERTa、XLNet結合BM25 怎麼結合的
- 在用pytorch作ML的三個步驟
- 心得
跟網路上說「幾乎都是在問經歷」不一樣啊阿阿阿阿阿阿!!!!!經歷幾乎沒問什麼,問技術就算了,都是問比較底層的問題,我準備了很多跟模型理解、訓練細節有關的問題,完全沒被問到QQ。老實說有不少東西(例如履歷上的技能)是我應該要準備好但沒有準備的,面試完後真的挺後悔忽略了這些準備。面試結束後一個禮拜有寫信問人資結果,人資說當週會通知,但到現在都沒有收到信件,應該是被無聲卡了。
友達 — A+種子實習 影像處理實習生
D(4/15) 在104投履歷
D+4(4/19)龍潭廠電話詢問意願,因地點考量婉拒
D+12(4/27)台中廠電話詢問意願+邀請面試
D+22(5/07)面試
D+35(5/20)信件通知Offer Get
D+56(6/10)正式Offer Get
友達的招募是各廠區各自處理的,因此投遞履歷後如果有哪一廠區對你有興趣,就會連絡你。
- 大概的職務內容
暑期實習,用CV做瑕疵檢測,面試過程提到Noisy Student後,主管說可能可以利用這個技術提升表現。
- 面試前作業
無
- 面試
當時疫情還沒大爆發,但我在台北讀書,所以採遠端面試,只有主管面我。當天主管似乎忘記要面試,時間過了之後打電話詢問才知道他們今天也有徵才活動,請我再稍等一下XD
- 自我介紹
- 針對參與過的專案/作品詢問細節。例如我做過人臉辨識專案,被問了FaceNet的原理,以及為什麼他可以Work
- 職務介紹
- 心得
基本上都是問履歷上的東西,但因為這份工作是做CV的,所以也會透過這些問題了解我對CV的理解。其中主管有提到我的履歷看起來NLP的經驗比較多,但對我的Noisy Student和FaceNet都很有興趣,尤其是Noisy Student的Semi-Supervised也許可以應用在這個專案。
面了大概二十幾分鐘後我的部分就結束了,接下來主管花了很多時間跟我介紹這份職缺的內容,其實我聽起來覺得挺有趣的,但收到其他公司的Offer所以拒絕了。另外我在國泰實習的同事有做過完全相同的職位,他說這個專案的性質比較像是外包,就是用原來就有的技能做一個專案,公司比較難教你什麼技能。
ASUS - AI應用軟體
D(5/14)在104投履歷
D+21(6/04)電話詢問意願+邀請面試
D+24(6/07)面試
- 大概的職務內容
學期實習,用C#和Unity/Unreal引擎在ASUS的產品內開發一個跟ASUS有關的遊戲,提升使用者沾黏度;並加入推薦系統幫助分析使用者資料。
- 面試前作業
無
- 面試
首先先面人資,不得不說我覺得人資滿專業的,雖然每次面人資幾乎都是在問類似的問題,但人資引導問題的方式很順暢,幾乎就像是在聊天一樣,非常舒服(強調一下人資是男生XD)。
接下來是面主管,當時疫情已經爆發,因此採遠距面試,只有主管面我。
- 自我介紹+遊戲作品Demo
- 針對參與過的專案/作品詢問細節。例如我做過人臉辨識專案,被問了怎麼比對相識度之類的問題。
- 職務介紹
- 心得
基本上都是問履歷上的東西,不過也沒有問到太多細節。最後開放提問的環節我有問到一些技術上好奇的問題,主管也很有耐心地跟我講每一種方案以及優缺點,是一次不錯的面試體驗。
跟其他職位比較不一樣的是這份工作在遊戲開發的比重較多,ML的部分反而比較像是附加的,雖然我有自己負責過一款遊戲的程式碼開發,但考量到通勤、手邊有的Offer、目前有點排斥重新寫一套遊戲,因此中斷了流程。
台積電 - DNA實習計畫_IT部門
台積電我收到南科與竹科的面試邀約,分開寫的話重複性有點高,而且兩者彼此影響到最終結果,因此合併在一起寫成一個。
D(5/13)在官網投履歷
D+15(5/28)收到竹科廠面試邀請
D+18(5/31)收到南科廠面試邀請
D+18(5/31)完成HackerRank程式測驗(第一題寫完+第二題1個測試資料沒過)
D+19(6/01)面試竹科
D+21(6/03)面試南科
D+22(6/04)完成HackerRank程式測驗補考(第一題寫完+第二題寫完+第三題1個測試資料沒過)
D+22(6/04)南科廠人資流程開始
D+28(6/10)竹科廠人資流程開始
D+31(6/13)南科人資面試(10分鐘)
D+35(6/17)南科人資核對資料
D+38(6/20)南科Offer Get
D+41(6/23)竹科婉拒
這個時間軸裡面比較特別的有兩個,第一個是6/04的HackerRank的補考,在我面完竹科後,主管提到他覺得我是Qualified的,但希望我的成績更高,因此給我補考的機會,若補考通過後再繼續。第二個是6/23的竹科婉拒,是因為南科與竹科相比的話,我會傾向竹科多一些,因此收到南科Offer後第三天我寫信去詢問竹科進度,結果不久後南科人資就聯絡我說覺得我比較適合南科XD
- 大概的職務內容
南科:公司內部系統自動化
竹科:公司內部系統安控
- 面試前作業
HackerRank三題,難度應該為Eazy、Medium、Hard。
- 面試
- 竹科(問題順序有點忘記了)
因為疫情所以遠端面試,只有主管面我。
- 之前有寫過後端嗎
- 大概知道這個職位要幹嘛嗎
- 職位介紹
- 聊HackerRank寫的怎麼樣
整個過程十幾分鐘就結束了,也沒有請我自我介紹XD,主管問了幾個問題後跟我說覺得我是Qualified的,但程式測驗希望我補考,通過的話再繼續後續流程。
- 南科
因為疫情所以遠端面試,只有主管面我。
- 自我介紹
- 除了ML還有接觸過什麼技巧嗎
- 大概知道這個職位要幹嘛嗎
- 聊HackerRank寫的怎麼樣
- 聊天
大概三十幾分結束,當時還沒有補考HackerRank,但也許跟主管聊得比較開心,主管告訴我後續會直接跑人資流程,請我再稍等,同時建議我進行補考,因為這個成績有可能會延用到之後正職申請。
- 心得
我第一次HackerRank寫得不太理想,是第一題寫完+第二題1個測試資料沒過,所以如果是實習生的話在這個範圍左右「也許」有機會能夠用學經歷或和主管的契合度來彌補?另外我認為人資說我比較適合南科有可能是因為我跟南科主管聊得比較來,相比之下雖然竹科也覺得我Qualified,但面試的時候實在沒什麼話可聊,可能也會影響結果?
面試結果
Offer:友達、台積
中止:ASUS、蝦皮(因為內容跟想像的不一樣,但因為面試過程簡單所以沒有分享)
Reject:Garmin、Line、趨勢(寫完程式測驗後將近兩個月才收到感謝信)
無聲:Intel、IBM、台達
結語
暑期實習加上ML領域的職位真的是競爭猛烈,再加上又遇到疫情爆發少了一些機會,就我所知IBM今年似乎也停招了。老實說這次的面試結果比我想像的慘烈,而且我還有另外投一些公司,這邊只列出有進到面試階段的公司。
當初大學很低潮的時候會認為一些努力沒有什麼幫助,都是在浪費人生。但如今看來的話其實努力過的痕跡一直都在,可能是無形的或有形的影響你,所以不要覺得有任何努力是白費,它們可能在某一個時刻會突然幫助到你,繼續努力吧!