2021/2022 臺灣 NewGrad SWE 面試心得分享

William
13 min readAug 26, 2023

--

一直以來都從ptt softjob版上的大家學了很多,因此想把這一年來的經驗與心得分享給大家,希望可以幫到跟以前的我一樣迷茫的大學生:)

  • 背景:112CS學士應屆畢,三份領域都不太一樣的實習經驗,大三跟教授做過語音方面的專題,發現自己不喜歡走ML,所以趕緊跳船。我投的領域蠻廣的(SWE / Backend / Data Eng / SRE / MLOps),基本上除了DS(自己不太喜歡碰model)都有投。
  • 已投(照時間順序):
    - 臺灣:Google, Microsoft, Dell, 趨勢, Agoda, Synology, AICS, Appier, Dcard, MixerBox, NetBase Quid, ShopLine, Kronos, Canonical, Amazon, Taboola
    - 新加坡:Stripe, Shopee, Foodpanda, Bytedance, ShopBack
  • 結果
    - 無聲卡:Microsoft, Dell, Bytedance, Appier
    - 感謝信:Stripe, ShopBack, Agoda, Dcard, Kronos
    - 主動放棄:趨勢, Canonical
    - Defer到2023 Campus Hire: FoodPanda, ShopLine
    - 面試後沒過:Google, Taboola
    - Offer Get: Synology, Shopee SG, AICS, MixerBox, Amazon
  • Note
    - 新加坡的除了Shopee以外都是履歷關被拒,不確定是因為履歷還是身份問題
    - 通常如果職缺介紹看起來像是要招Junior的我都會投看看(就算年資沒符合需求),畢竟有投有機會XD
    - Stripe在投履歷時需要填current location,結果選項沒有Taiwan,疑惑到寄信過去問,結果他們回信說很抱歉,麻煩先幫我選China(?)

心得

1. Google

### 10/19 HR 電話閒聊
年初時投了Google的暑期實習被無聲卡,10月初收到校招面試邀請,約10/19下午聊天。問了幾個基本的DS和演算法的問題,應該只是要確認能不能正常對話。

### 11/1 Phone Interview
考了一題經典的Leetcode Hard問題,幸好在準備時剛好有刷到…結果答完之後還有時間,被問了一題二維的延伸題,有答出來,進入下一階段。

### 12/07 Virtual Onsite
#### Virtual Onsite 1 : Behavioural Interview
一個Google Taiwan的工程師來跟我面,還跟我說以往NewGrad都只排30分鐘不知道為什麼我被排到45分鐘XD 感覺對方一直照稿上的問題唸,不太會依照我的回答繼續做深入的追問,不過整體過程流暢。最後15分鐘感覺他跟我都不知道還有什麼BQ可以問了,就開始聊天和問問題XD 問了績效的打法、轉組的難易度和熱門度、臺灣Google的部門負責內容、做軟/硬體程度的比重,還算聊蠻開心的。

#### Virtual Onsite: Technical Interview 1
一個感覺偏主管的人來面,問了一題二維matrix的題目。一開始沒想法,只能提一個時間複雜度很高的bruteforce解法。後來想用dp優化,幸好被主考官提示,用prefix sum把複雜度再壓一層。後來又跟主考官討論用binary search得出更優解但因為沒時間所以沒實作出來。

#### Virtual Onsite: Technical Interview 2
爆炸的一關。一個沒開鏡頭的工程師,一進來就直接丟了一個字串問題。明明應該是很簡單的leetcode easy,但我整個思緒混亂,以為這題很難,先說了一下bruteforce的作法跟複雜度,就開始爆炸亂用dp和tries嘗試解,但發現都沒有壓到複雜度。最後在數次請求提示下才想到簡單的prefix/postfix解,到此為止大概花了30分鐘。最後我花五分鐘寫出來,然後面試官發現時間不夠問follow up,所以就被問了類似腦筋急轉彎的問題,結果完全沒想法,所以這關基本上是爆了。

#### Virtual Onsite: Technical Interview 3
英文面試,面試官看起來是白淨的印度小生,印度腔模糊程度中等,就是Youtube線上課程你心裡會想說「又是印度腔」但是因為還勉強聽得懂所以不會關掉的那種程度。考了String manipulation,bruteforce沒什麼問題,但要壓複雜度的時候用錯資料結構(以為要用Rope但其實不用),等到他看不下去才跟我說,應該是因為這樣被扣分…最後口述最佳解做法但沒有實作。

#### Virtual Onsite: Technical Interview 4
- 英文面試,面試官是台灣Google的人,考了一題Topological Sort的題目,順順解出來,follow up用bfs解,也有寫出來,是唯一比較順利的一關。

### 心得
結果完全沒被考到DP和Tree,一堆準備好的資料結構都沒用到,反而考了兩題String,三題跟prefix sum相關的題目,覺得還是有運氣成分。不過也稍微反省一下自己,在面對題目時會太直覺地用比較複雜的方法去解,反而忽略簡單的方法,只能說Google還是Google。另外,Google的面試流程的確是蠻長的,因此把它排在第一個面試是對的。小抱怨一下,我的HR在他休長假前說要幫我送HC,結果過了三週之後再寄信問他,發現他短暫地回公司一週之後又去休假了,而且還沒幫我送出去…。

2. Shopee Singapore

10月底透過內推(感謝流浪獅城的俊霖大大!)投遞履歷,過了幾週收到OA邀請。

### 11/20 OA
考一題reverse linked list、一題string replacement的medium。他們用的線上編輯器如果`print(“<bold>”)`的話,stdout不會印出東西,害我花一堆時間debug…

### 11/29 HR Phone Call
我當初申請的是data engineer role at recommendation system & ads,但HR好像看我履歷覺得我比較適合做ML(因為我履歷上寫MLOps…),所以幫我轉到ML Engineer(不過我當初就是因為不喜歡做ML算法才選Data Engineer的…?)。電話一開始是職缺介紹,HR在講職缺介紹之前說他要準備一下,因為他中文不太好,我就說沒關係英文也可以XD。面談一開始HR先簡單介紹裡面的兩個ML Team在做什麼,然後請我選Team。不過我有跟HR提到說我對ML Algo比較不熟,也快速跟他帶一下現在實習在做什麼,之後他的確也幫我安排先面Data Engineer了。不過因為Data Engineer的面試需要考一些題目,所以也現場被問了幾題DS & Algo的題目(常用DS & sorting 複雜度、TCP Handshakes、SQL commands)。

另外,他有大概說一下新加坡的物價水準和大致花費(一餐100~120、一個月花費約台幣四萬)。我順便跟他確認一下工時,據他說是9:30 ~ 19:00,中間休息一個小時半(12:30 ~ 14:00),不過也有較晚上班的(10:00),一切都看組。兵役則是可以等當完兵再去。最後在沒有其他問題的狀況下結束這輪面試,HR給人的感覺是專業的。

### 12/9 Technical Interview 1
用Zoom跟一位中國主管面試。一開始先介紹他們組內在幹嘛,然後問了我對Data Engineer的暸解,被稱讚基本上蠻吻合的。然後就從履歷上問過去相關經歷,接著問了一個開放式問題(沒有寫code),如何用有限記憶體存取一個大檔案中的特定資料。這題牽扯到的知識蠻廣的,從基本的資料結構、演算法、OS concept、各種因素tradeoff,整體需要蠻多的討論與釐清問題,覺得還蠻好玩的。結束之後開啟online board,寫了一題leetcode和一題SQL,結束這回合。這位面試官會先確認我對每個領域的熟悉程度再決定要問我什麼問題,比如說我跟他說我對SQL語法沒有很熟悉但觀念還行,他也說沒關係,照樣出了SQL,只是我就用口述的方式描述我會怎麼做,覺得整體體驗蠻好的。他也說有些東西不會沒關係,進來再學就好,只是有些人壓力比較大會不適應,我覺得是變相表達裡面壓力偏大(?)。結束前有問了一些問題,印象比較深刻的是他說組內(中國人:星馬:台灣:Other)的比例大約是(6 : 1.5 : 1 : <0.5)XD

### Technical Interview 2
主要集中詢問MapReduce的問題,基本上就是舉很多使用情境,並根據使用情境去設計要用哪樣的mapping & reduction,並考量各種限制去做trade off,蠻有趣的。沒有MapReduce的先備知識也沒關係,面試官會簡單先解釋,但還是覺得如果要面Data Engineer的話還是能先知道並準備一下會比較好。

### 12/22 HR Chat
聊薪資結構,通知offer。

### 心得
整體而言面試蠻吃溝通的,不會感覺到是拿網路上的題庫來考你。他們會追著你的回答繼續鑽下去,而且題目會故意定義地很模糊,考驗釐清問題的能力,我覺得普遍來說外商的面試比較有這種趨勢。不過最後出來的薪資沒有到願意讓我去新加坡的水準,也比我預期中的低許多,不確定是因為這個職位招人預算不高、蝦皮母公司當時股價下滑、還是單純就是我的表現不夠格(這個原因可能性最大)。

3. Synology

群暉有來系上校招,透過當天投影片的連結線上投履歷,過幾天HR就通知面試了。

### Technical Interview
共兩位面試官,約早上9:30用Skype面試,面試職缺是雲端服務RD。自我介紹完考程式,第一題是經典的矩陣走路方式的變形,面試官分別請我用dp, recusive(其實也就是top-down DP)和bfs/dfs (queue/stack)的方式解這題,蠻有趣的。中間有遇到一些小bug,面試官也很有耐心等我debug完。第二題是實作一個後端服務,其中跟面試官來回溝通定義spec,牽扯到加密/load balancing/儲存hash value方式/expire time…等討論,算是蠻充實的brain storming。最後從履歷上挑幾個經歷問。沒什麼大問題。

### HR interview
直接接在Technical Interview後面,問的都是常見的behavioural question。其中有問到目前有面哪家,也是誠實說如果有Google去Google XD。另外有問說新鮮人核薪是統一標準嗎?回答是,會根據面試結果斟酌加減。工作時間彈性,8:30 ~ 10:00皆可。隔幾天收到offer get通知,約了線上meeting告知細節。

4. AICS

因為當初有在裡面實習過,所以直接請認識的人內推。

### Technical Interview 1
本來預計要考CS基本知識和一些BQ,實際上考了一堆邏輯問題(類似推論誰戴什麼顏色的帽子的那種推理問題)。不太知道考這些問題要幹嘛,但就當後面幾關的暖身(?)。

### Technical Interveiw 2 & 3
兩場面試一起寫,因為時間久遠細節有點記不清楚。考了一題array、一題binary search和兩題dp,體感上都是leetcode medium難度,其中甚至還有Google考古題。面試官都蠻年輕的,對答也蠻順暢,就這樣順順地過了。

### 主管聊天
主要分成兩部分:主管介紹公司團隊方向以及工作內容,和針對履歷問關於之前經歷的問題。不過因為之前在裡面待過,所以到後來比較偏向閒聊,氣氛蠻輕鬆的。團隊內部以智慧醫療為主,跟我兩年前在裡面做的又不太一樣。

### 心得
其實面試過程沒想像中差,可能之前的風波也有影響,總之我覺得是有認真對待面試者的。

5. MixerBox
透過朋友內推,兩天後拿到OA。

### Online Assessment
考三題,分別是prefix sum / stack / 類似2d走迷宮的問題。前兩題重算法,第三題比較實作麻煩的模擬題,花了不少時間。大概過了一兩天就約Onsite了。

### Onsite Interview

辦公室在捷運公館站的共構大樓裡面,辦公室裝潢很有新創感。總共有兩位面試官,面試過程需要實際用紙筆寫code,是我面試以來唯一一家這樣做的,很有趣,像是在學校跟助教討論作業一樣的感覺。第一位面試官先考了一題stack變化題試水溫,後來看還有時間出了一堆interval題目,同一個題目換個限制條件解法就完全不一樣,蠻燒腦的XD

第二位面試官一進來出了一題偏數學的題目,可能看我有點卡住,就開始用手機處理公事放我一個人用筆寫code。不過後來我發現解題方向錯誤,換個方向後就也跟他討論地有來有往,還不錯。覺得這邊的面試官都很像打比賽出身的,算法本身就很強。後來還有約一個Behavioural的三面,基本上問了很多我對新創公司以及個人職涯規劃的看法,有一種他們也有在為面試者著想,想確認面試者真的是適合向新創公司走的。最終來信給offer討論細節。

### 2023.8.26 後記

  • 當初本來也打算把下面三間寫完的,但是因為人在國外交換 + 回國當兵,智商下線了一陣子,也就沒把剩下的心得補完(不小心富樫了)。若想知道詳細的內容,歡迎來信詢問。

6. Canonical

在Meet.jobs的快速媒合活動上投遞的。當初想說這間算是外商,薪資range也算符合期待,才決定投的。面試流程偏冗長,最後因為個人興趣不符和手上有其他更符合條件的offer,決定停止面試流程。不過面試官人很好,面試後我們有額外花一些時間聊生涯規劃相關的問題,整體的感受不錯。

7. Taboola

當初面了兩關,第一關是OA,第二關是回家作業 + online討論題目解法。雖然面的是Algorithm Engineer,但被問到的題目都偏數學 & 統計,花了我一些時間寫回家作業,很像學校機率課的HW set。最後跟兩位以色列的面試官討論HW的解法後就被reject了,有寄信問面試官我哪邊表現得不夠好,但不意外地沒拿到回應。

8. Amazon Lab126

兩輪,第一輪考了leetcode medium。第二輪有五關,含簡化版的system design、leetcode medium、和一關BQ。其中16 principles在每一關都會挑其中幾個出來問,如果要面Amazon的話,建議可以把每條principle都想幾個具體的例子。一樣,若需要詳細面試過程可以來信詢問。

整體心得

重點:累積實習經驗、多面試、多溝通。

最後一段想寫給一些還在迷惘的大學生,其實也是想寫給兩年前的我自己。

多面試:面試絕對不是一蹴可及的技能。不用怕自己還沒準備好,在面試的過程中可以知道面試官常問的問題面向以及自己不足的部分。用面試去準備面試,我覺得是最有效率的準備方式。

多嘗試:人生不是只有一條路。如果你不確定自己是不是做研究的料,那就去跟老師,做看看專題;如果不確定自己喜不喜歡職場環境,那就想辦法去找實習,看看職場生活是不是你要的;如果不確定自己想不想去國外,可以想辦法先去國外交換,體驗國外生活和讀書環境。個人一直覺得身為軟體工程師最好的一點就是路永遠都很多條,端看你知不知道那邊有一條路。因此最好把握學生時期,人生中最有本錢犯錯的時候,勇敢試誤吧。

--

--