2021台灣CS相關實習面試經驗分享
對於一個大三的資工學生來說,2021前半年能做的事情不外乎做專題、準備考研、找實習。在這個全球CS畢業生數量大幅增加的競爭時代 [1],大三、大四是個自身成長的重要時期。選擇投入時間在何處便成為了重要的抉擇。對於想要提升自身學歷的台灣學生,考研是一個重要的管道。而想通過推甄升學或是想畢業後直接就業的同學則可以投入心力在專題以及尋找實習中。
在這樣的抉擇中,我將大三下的這段時間投入在尋找實習。考量到希望對未來的研究所申請以及就業產生幫助,我在進入大學前就決定要累積幾段實習經歷。由於希望這些經歷不管到哪裡都可以產生幫助,因此各大外商便成為了我的首選。
這篇文章將會分享我在這段時間面試的各家公司以及一些我的所見所聞。在累積了許多外商的面試經驗後,一來可以作為對自身經歷的一個紀錄,二來也是希望能通過自身的分享幫助到其他人。
面試前的重要準備
我認為找CS相關實習有三個主要面向,履歷面、技術面、面試面。這三個面向是在面試前就已經決定的東西,雖然可以通過面試能力更好的呈現,但這幾個面向的累積都不是短短幾天就可以臨時抱佛腳的。
履歷面
履歷面是指在你在履歷上所呈現的經歷。依我個人的觀察和觀點,我認為工作經驗是構成履歷面的最重要要素,過去所待過的公司的reputation、過去在工作中所做的事情,這些對於HR來說是很好的參考,這其實也顯示了為甚麼實習很重要的原因。
對於找第一份實習的同學來說,狀況就有點不同,我們拿不出第一份工作經歷,因此最重要的要素其實會變成學歷。或許你會聽過有人說學歷在找工作不重要。但實際上,外商跟大公司實習在比例上來說台清交還是佔多數的。除非履歷上有一些尤其突出的點或是有內推,否則很容易在海投階段就被HR篩除。
當然,構成履歷面的要素除了學歷外,還有side projects、研究經歷、競賽經歷等等。其中如果在比較solid的實驗室待過,對於自身經歷來說也是很大的加分(在台清交也是比較容易有這樣的機會)。另外一個跟學歷稍微沒那麼掛鉤的大概就是side projects,這一項來說我覺得要在履歷上發揮效果,還是要有一定的規模或是產生實際影響力,舉例而言,若是能對國際著名的open-source project有contribution,相信也是會有不少幫助。
技術面
再來,技術面是指你所擁有的skillsets。skillsets可以是網頁前後端、app前後端、ML或資安等等專長。台灣大部分CS實習職缺在找人時,其實會考慮到candidate skillsets與職缺的匹配程度。即使履歷過關且面試表現良好,但是卻沒有相關經驗,在與其他與職缺更匹配的candidta競爭時會有很高的機率被篩掉。
累積自身技術面的方法,有數種比較常見的方法。第一種是在課堂中學習並完成課堂project,然而CS的課程其實很多都是偏理論或是非實用的,不一定有這個機會。第二種是自學,通過線上課程或網路資源來學習相關技術知識,完成一些side projects。第三種是在實驗室或實習中直接學習並在工作中運用,我認為這是最有效且最具說服力能證明你擁有這些技能並可以運用在工作中的方法。
面試面
最後,面試面是指面試時的綜合能力,我認為這項基本上由英文、口才、刷題三者所構成。在面試外商時,英文溝通能力可以說是基本要求,在面試過程中,時常會有面試官以英文與我對談。另外,怎麼樣在短短的30分鐘到一小時展現你的人格特質、描述過往經歷都需要通過口才來呈現出來。
所謂的刷題是指你的演算法解題能力。美國矽谷的軟體公司不管是新創還是大公司,都很風靡用演算法解題作為面試評估candidate的一個手段[2, 3]。自然而然的,台灣的著名軟體外商也會有這套面試流程。對於極少數的IOI、ICPC大神來說,面試會遇到的題目根本是輕而易舉。
而對於像我這樣的一般人而言,基本上就是以刷leetcode上的題目來鍛鍊解題能力。刷得越多,在面試時遇到一樣的題目或是想出解法的機會也就越高。因此,有些人會以刷leetcode的題數來作為刷題能力的評估標準。
我自身的狀況
為了讓讀者能夠客觀參考我的面試經驗,在這裡我先說明一下我的背景。
NCU CSIE 大三,GPA 4.24/4.3,系上排名算前面,有一篇二作期刊論文,在中研院做過兩個月暑期兼任助理,在學校實驗室做了一年多的專題,另外有些課外活動,像Deloitte club、DSC,比賽有幾個ICPC和NCPC的小獎。
從履歷面來看,由於我的成績還算突出,加上一些不同面向的經歷,因此要過HR那關大多數是沒問題的。不過到了更深入的技術主管面試時,由於與他人競爭,一來是在校名上會輸人,二來可能相對來說我的經歷比較水,就有不少機會成為劣勢。
再來看到技術面,這點可以說是我自身最為劣勢的一項。整個大學期間,我基本上是以目標導向在做事,不太有額外的時間去學習一些課外的技術。也因此我的經歷跟skillset幾乎都偏往data science、Machine learning的方向(實驗室跟修課)。我原本的想法是朝General SWE的方向找工作,但是實際在台灣面試了這麼多職缺後才發現大部分公司還是以特定職缺在進行徵才的。目前我覺得在台灣有開General SWE的大公司似乎只有Google。
最後來到面試面,分成三個點來個別討論。我個人的英文口說能力可以應付基礎的口語溝通。另外我的口才算是不錯,有時候看到陌生人可以主動搭話聊天。刷題來說,我過去零零總總大概刷了100, 200題左右,其實相對其他人我這樣算刷得很少。在實際面試時,我大概只能夠給出一個最基本的解再加一個follow up,不過常常想不出最佳解。
各公司面試流程
我基本上是採取海投策略,少數公司會請好心的學長姊幫忙內推(感謝!),整體來說我應該投了有超過40個職缺。我在這裡只會把至少有收到OA或面試邀請的職缺分享上來,因為我也不知道我到底投了哪幾家。
* 有簽NDA的以及我目前任職的公司我會簡單帶過。
Overview
- 被拒或無聲: Amazon Ring, AWS, Mckinsey, Verizon Media, Synopsys QA, Google, ASUS AICS, Mercari, HPE PM, Trend Micro, WorldQuant, MicroSoft(TAI), IBM, Acer, Deloitte A&C, MicroSoft AI R&D(ENG)
- 主動停止面試流程: KKBOX, Carousell, Garmin, skymizer
- Offer: Academia Sinica, Delta Electronics, Qualcomm, Microsoft AI R&D(PM)
Amazon Ring — Software Dev Engineer Intern
- 2020/12月初投遞履歷
- 1月初一面
一開始就是考一題easy難度的演算法題,基本上我在這題很快就給出一個最佳解,不過有點瑕疵。我在資料結構上使用unordered_map,但實際上由於有給出問題的限制,因此只要簡單的用陣列存即可。另外還有問了一個resource scheduling的開放性問題,我就用OS的一些概念回答。
最後我有問面試官feedback,他給我的評價還不錯。不過我在面試過程中也發現他們要找有embedding system經驗和背景的人。總之最後就被刷掉了。
- 2月初感謝信
AWS
- 2020/12月初投遞履歷
- 1月中OA(inline assessment)
OA主要是一些虛擬的工作模擬,然後考網路概念的筆試。印象中我去年有面過AWS,對網路要有基礎,最好還要有擅長的domain knowledge。我在網路這塊很不熟,所以OA隨便做,就被拒了。
- 幾天後感謝信
Mckinsey DtV Lab — machine learning solution
- 1月初投遞履歷
- 1月底OA
很有趣的遊戲化測試,詳細內容可以去查Mckinsey官網。
- 1月底 online interview
面試過程主要以英文進行,開放性的問一些問題用ML去解。這場面試時我表現超級差,英文口語斷斷續續,還沒有辦法很好的想到一個好的ML solution去解他們的開放性問題。印象中他們說幾天就會有結果。
- 2月初感謝信
其實我被拒蠻正常的。我自己分析一來是我的背景跟能力沒有很符合他們要的人(ML為主),二來是我這場面試表現真的很爛。原因跟我自己面試經驗不足也有點關係,所以初期最好還是多找幾家練練面試比較好。
Verizon Media — Research Engineering Intern
- 忘記何時投遞履歷
- 3月初 online 一面
一面基本上都問些很簡單的基礎CS問題,然後考一題演算法,印象中好像算Easy難度,我當下也是給出一個最佳解。然後簡單聊聊就結束了。
- 4月初 online 二面
後來接到他二面的電話,這時候我已經被Google拒了,所以還挺高興的。二面時分別有三個人面,第一個是HR manager,簡單問了一些BQ(behavioral question)。
第二個問了一個開放性的ML系統設計問題,由於我ML不是很專精,自認我答的不是很好。第三個是一面的面試官,同樣也是考演算法,這次的問題分兩題,第一題難度大概easy ~ medium我也是當場給個最佳解,但我好像說錯解法的名字了。
後來他給出第二題時,我想說感覺難了一點,然後就給出一個解,我跟他溝通後發現我誤會題意了,重新釐清後發現其實是第一題的follow up,題目還是算簡單,第一題的解加一些code就最佳解了。
- 4月底催結果 感謝信
據HR說這職位有200多個投履歷、40多個1面、二面人數不告訴我。全部實習生HeadCount 13個,這職位2個HC,需求分別都有點不同。很特別的是這實習計畫只有8周,在台灣疫情還沒爆的當時就已經規畫全面遠距了。有趣的是我認識的兩個朋友也都有一起面這個職位到二面。聽朋友說最後這兩個HC都後來都給海龜了。
Synopsys QA
- 3月初投遞履歷
據我所知,他們會將履歷送進一個pool,然後最多3個team的主管可以邀你去面試。
- 3月初電話
QA team的主管直接打來簡單的聊一下經歷,問我會不會python,我就回應過去在中研院是用python寫實驗的。聊完後就直接約正式面試。
- 3月中一面
這次面試經驗真的挺特別的,這位主管採取很free的面談風格,其實就簡單的聊聊,他還請我吃中飯。了解一下工作情況,大致上是幫內部寫個以網頁呈現的內部工具。當時他有考慮包含我在內三個candidate,後來不知道選誰了。
- 無聲卡
Google — SWE intern
- 12月初一開放投遞我就請實驗室以前的學姊內推
Google是我非常想去的一家公司,所以我很早就關注Google的intern何時開放,就我個人的看法早投+內推都很重要,晚投head count很容易沒有,沒內推有掉入履歷海的風險。在這邊也向當初幫忙內推的學姐說聲謝謝!
- 2月底填面試方便時間的表單
- 3月中back-to-back interview
第一次難得拿到的Google面試,事前當然有刷一些題。Google的實習面試會有兩輪,很有趣的是我這次是被安排連續兩小時兩輪的back-to-back interview。
第一面的面試官問我一個差不多Medium ~ Hard的題目。我當下是先給他一個暴力解,想說後續再優化。很糟糕的是,我在這裡複雜度分析錯,我的解法O(N³)結果我分析成O(N²),原因在於我不知道原來unordered_map在mapping string時複雜度是O(N)。他提點完我之後告訴我,在Google這種底部實作細節的一些內容是基本常識。事後看這部分我真的犯了巨大錯誤,對於自己使用的一些資料結構或是內建函式千千萬萬要了解其實作細節。接著他請我降低時間複雜度,這裡我一開始真的沒什麼想法,後來他給我一些提示跟引導後,我就實作出一個O(N²)的follow up解法。最後時間差不多45分鐘了,他就問我有沒有能降到O(N)的想法,此時我完全沒想法,所以他直接告訴我方法了。真是慘淡的一場面試。
二面時的狀況就好多了,出個easy難度而且只要修過演算法一定寫過的題目。我說明完我的想法後就開始實作最佳解。接著他請我犧牲一些時間複雜度嘗試space O(1)的解法,這裡我卡了很久,分析一段時間後有慢慢接近解法的思路,不過最後一步還是由面試官提示我才想到。
- 下一周被HR拒
我自己分析下來未來面試上還需要多多改進 (1) 常使用的函式或資料結構要熟悉實作細節 (2) 多刷點題強化解題能力 (3) 多做Mock interview增強溝通能力,希望未來在面FAAMG時能夠表現得更好!
ASUS AICS — SDE intern
- 忘記何時投遞履歷
- 3月中OA
OA的程式題目蠻簡單的,有三題。
- 3月底 online interview
線上簡單聊一下經歷,然後進入正題考演算法,不難,我當時用backtracking解決。
- 4月初 onsite interview 連續四輪
同一天下午連續四輪跟四個不同面試官面對面實體面試,印象中題目至少都有Medium,暴力解之外還能有兩個follow up繼續去優化的題型。我大多可以給出暴力解跟一個優化後的follow up,但最佳解如果我沒解過很容易卡住想不出來。連續四個面完真的很累,面試前最好養足精神。
講個額外的小插曲,在面試前我看隔壁一個感覺也是來面試的人,我就隨口找他搭話,結果後來發現我們一堆面的都重疊,Verizon面同職位、微軟AI R&D面同職位,說不定整個圈子其實蠻小的?後來我們都會互相分享面試跟應徵資訊。
- 4月中感謝信
KKBOX — Tomorrow Lab Program
- 2月中投遞履歷
- 3月底OA
他們家的OA有四題程式題,老實說題目很簡單,但有點出的偏向細節處理,後來面試時候跟他們聊,他們是跟我講說只是確認一下candidate有基本的程式能力。
- 4月中 onsite interview
主要面試內容主要是圍繞在candidate過去做過的事情跟一些BQ。但我面試完後真的很推KKBOX,我在面試時能感受到他們在招收實習生時不是要求有多高深的技術能力,而是去尋求符合他們企業文化的人。整個面試給人的感覺也很尊重面試者,算是整個面下來,我很喜歡的一家公司。
- 5月初電話約二面,婉拒
會拒絕是我個人規劃上未來要出國,所以才先以外商為主。
Mercari
- 3月初投遞履歷
好像是日本的電商?當初還沒拿到Offer時看到這個線上實習就投投看了。
- 3月底OA
題目非常簡單,都是兩三行code可以解的。
- 4月中感謝信
HPE — Customer Program Manager
- 忘記何時投遞履歷
- 4月底 onsite interview
面試後發現,這職位完全沒有碰到coding,單純是職能整合解決問題。面試也是以聊天為主。人資當初還一直push我去面這個職位,另一個也是純CS的朋友面完很傻眼當場就婉拒了。
- 5月中感謝信
Trend Micro
- 忘記何時投遞履歷
- 3月底OA
OA是考演算法,我寫他們OA的感想是雖然題目簡單但寫起來挺有趣的。雖然我一堆同學都有拿到面試,不過我完全沒收到面試QQ。
- 5月底感謝信
WorldQuant — Data Science Intern
- 3月底投遞履歷
- 4月初OA
幾題演算法題,這絕對是我寫過最難的OA。老實說我很意外這家會發給我OA。
- 4月中感謝信
Microsoft — TAI
- 3月初請朋友內推
會投TAI不是RDI的原因是因為去年時我也有去面RDI然後過萬寶華那關就卡住,履歷沒被部門主管挑起來。今年想說TAI應該相對RDI競爭比較少,我就投這個track了。
- 3月底電話面試
我還記得他打電話過來時我剛好在吃飯,我只好趕緊走出餐廳到吵雜的路邊。基本上是簡單的問一下實習能配合的時間還有簡單的英文對談。
- 4月底與人力公司一面
面試時基本上以BQ為主,還有問一些很基礎的CS問題。中間有一段問答是用英文來做溝通。我猜我應該是有被人力公司move forward,但中間等有點久,我就請正在實習的朋友幫我問一下HR,才發現我履歷又沒被主管挑起來,我是不是跟這個計畫無緣啊XD。
- 6月初感謝信
Academia Sinica — summer intern
- 3月初書面申請
- 4月初Offer,婉拒
Delta Electronics — 最佳化演算法開發實習生
- 3月初書投遞履歷
- 4月初面試完,當場口頭Offer,婉拒
這家是採實體面試,在中壢工業區那塊,我當時坐計程車從學校過去。一開始是HR接洽我,他先給我一個很簡單的邏輯測驗題目,然後給我一些時間來答題。後來就請我在會議室等待,請面試人員來面試。
由於有兩個team都對我有興趣,所以就一次面對兩個team面談。過程中也發現,很少有資訊背景的去面他們中壢這地方的職缺。主要面試內容也是很簡單的介紹一下自己的履歷跟了解工作內容。基本上結束之後,HR當場就給我Verbal Offer要我考慮一下。後來拿到別家Offer後我就拒了。
IBM — Associate Application Consultant summer intern
- 3月中投遞履歷
- 4月初OA
IBM也是採取遊戲化的測試,不過更吃重直覺跟反應能力,老實說我覺得還蠻難的。
- 5月初一面
在這關基本上也是以BQ為主,會介紹這個職位的工作內容,也會請你講述一遍你過去的經歷和做過的事情。沒有問到甚麼技術問題,我也蠻訝異的。
- 5月底感謝信
Acer — summer intern
- 忘記何時投遞履歷
- 4月初OA
基本上就是智力測驗。
- 4月底感謝信
Carousell — Software Engineering Intern
- 忘記何時投遞履歷
- 4月中OA
是演算法題目,我印象中難度不高,有基本程式能力應該能輕鬆處理。
- 4月底約面試,婉拒
Garmin — Research&DevelopmentCore Tech_實習生
- 3月中投遞履歷
- 5月初面試,主動暫停應徵流程
我原本想婉拒這次面試,結果來不及寫信。面試流程有點複雜,還要做多益模擬測驗,我想說沒要面就沒做了。基本上面試時也是以面談為主,講述一下自己過去的經歷還有工作內容。結束後我就跟HR說我已經有Offer,所以後續應該不會再面了。
Qualcomm — IT engineer intern
- 4月中被HR從履歷pool撈起來約面試
- 4月中面試
面試是由兩位主管主持,一開始也是先做個自我介紹,整場面試的氣氛很輕鬆,到中間有請我們使用英文對談,從對話中也了解到這份工作需要很多英文對談,可能會需要熟悉一下外國口音。
這次面試我自己表現得挺積極的,另外在英語對談的部分,溝通上很順暢。再加上candidate似乎不多,所以才拿到Offer。
- 隔週Offer,一段時間後才婉拒
Deloitte A&C
- 4月中內部管道面試,被拒
由於我去年有參加Deloitte club,所以HR在有缺的時候就先連絡我了。面試其實也是很簡單的了解一下背景跟說明這份工作在幹嘛。不過,我提到說我明年會想出國,面試官就跟我說這個intern會希望能夠轉正,算是婉拒我了。
skymizer
- 忘記何時投遞履歷
- 4月中邀約面試,婉拒
Microsoft AI R&D — backend engineering intern
- 忘記何時投遞履歷
- 4月中邀約面試
- 4月底電話面試
這次電話面試我覺得只是簡單的聊聊天確認狀況。基本上是很簡單的問一些資料結構跟一些基礎的CS知識。然後確認一下實習可以多長,每周能去多少天這類資訊。
- 5月初 onsite 一面
正常來說總共有3輪,各一小時。每輪都是考演算法,難度的話約莫都在medium左右,但是至少都有一個follow up,我覺得跟面ASUS AICS的難度跟模式很像。這次面試時,我的狀況還不錯,都能夠在清晰描述想法的情況下給出解來,面試官通常也都會請我再解出題目的變形來。
三輪結束之後,很意外的我被加面了。其中一個部門主管想當面和當天所有面試者聊一下,所以才有這輪加面。基本上就是簡單的介紹一下我過去的經驗,然後主管向我說明一下工作的內容還有一些BQ。我也以很休閒的心態去聊一些我想了解的問題。可能是這場面談我表現得比較健談,所以主管就詢問我對PM intern有沒有興趣。因此,另外的被安排了一個跟PM主管的談話,也是簡單的自我介紹和提問。算是額外的加開了一個PM intern的hiring process。
我後來跑去研究了一下,發現蠻多科技公司,facebook、google、microsoft之類的,他們的PM很多都是有CS背景的,算是一個打破我過往認知的事情。
後來,這個職位是我一個台大資工朋友跟另一個台大資工的上了,他們好像是想找ML背景強一點的。
Microsoft AI R&D — Program Manager intern
- 5月初 online 一面
這次面試和上一屆PM實習生跟PM主管面談,基本上問題就比較偏向對產品design的問題跟一些BQ,老實說這是我第一次面這類型的面試,所以我自覺沒有答得特別好。不過,面完一個月後就意外收到Offer了。
- Offer get,決定入職微軟啦!
總結
這幾個月面下來真的超級辛苦。從一開始的投履歷就要大量的投,隨時關注新的實習職缺,盡早投遞履歷。到後來一直被拒,手上卻還沒有任何Offer,陷入找不到工作的恐懼。同時還要兼顧學校的課業及專題。而再拿到Offer之後,如何協調deadline成為一件難事,想等更好的公司,卻又擔心兩頭空。即便過程如此艱辛,但整個尋找實習的過程卻都是很難得的經驗,我從中也獲益良多。
很幸運的是,與我一同打拼的強者朋友也都很幸運地上岸紛紛拿到外商的實習機會。事後通過聽聞朋友消息或網路上的分享,了解到今年除了競爭激烈外,也有疫情導致暫停的悲劇發生。
總的來說,有時候找工作真的挺吃運氣與緣分的。如果找不到實習或工作的話,我相信只是運氣不太好罷了。相信自己的潛能,持續努力打磨自身的能力,肯定能夠獲得應有的成果的。
聲明:上述部分內容若公司覺得不妥,請連絡我撤掉。