2021 新鮮人軟體工程師面試流程(Google/Microsoft/蝦皮/ASUS ...
文章推薦指數: 80 %
ML interview事前有先問面過蝦皮的朋友,原本以為只會問基本的ML,結果面試官看了我的履歷後問了一堆NLP相關的開放式問題,包括中文斷詞、語言模型等 ...
個人中心
我要投稿
我要發問
面試經驗
工作甘苦
求職知識家
行業職務
個人中心
知名企業
關鍵字搜尋
進階搜尋
所有文章類別
面試經驗
應徵技巧
工作甘苦
求職知識家
最新文章最多檢視最新回覆最多回覆
嚴選好文
新鮮人
工程師
視訊面試
二度就業
實習
名人經驗
文字放大
置頂
2021新鮮人軟體工程師面試流程(Google/Microsoft/蝦皮/ASUS/Verizon)|面試經驗分享
職務:軟體工程行業:軟體╱網路
文字放大
論壇發文
3571
發表2021-09-1514:35:13
本文由 小王 授權轉載,並同意修訂標題。
1.背景
-台大資工學+碩,實驗室主要在做NLP/DeepLeaning
-有三篇不同領域的topconferencepaper(ICASSP一作、EMNLP一作、CVPR共作),還有一篇跟RL相關workshoppaper
-大四/碩一時分別做過兩個ML相關的實習,碩一的實習除了ML外同時也參與了webfrontend/backend的開發
-除了ML,程式競賽、CTF、軟體工程、資料庫、web開發等等,各式奇怪的領域幾乎都有碰過,不過除了ML外都只是略懂皮毛
-跟同儕相較之下英文偏爛,沒有長期補過英文,當年學測壓線14級,英聽B,畢業門檻的英檢中高級聽力買題本練了一個月才壓線通過
-碩一就幾乎寫完碩論,今年1月就口試完了,專心準備面試
2.目標
從背景應該不難看出我是個興趣廣泛的人,甚至在NLP的實驗室不務正業做著不相關的研究。
所以在找工作時並沒有特別鎖定非ML相關的職缺不可。
最後有投的公司有 Google(SWE)、Microsoft(SWE)、Shopee(ML)、ASUS(AICS)、Verizon(SWE)
除了Verizon是網站上自己投的,沒有收到面試,剩下四家都是內推並得到面試機會
3.面試準備
3.1履歷
直接上懶人包:履歷範例
-當年在2019實習面試這篇就有提過了,有能力的話請用Latex+英文撰寫履歷,對大部分科技業/軟體業都是加分項目
-履歷請精簡,每個項目在1~2句話敘述你做了什麼、有什麼實際的影響力,不要放自傳浪費版面,能決定雇用你的人通常不會看。
真的沒東西放的話學校修課的project都比自傳好。
-公司沒要求的話請不要放個人照片!有些公司放照片是扣分項目,甚至我聽過有公司會直接篩掉有照片的履歷。
-善用你的人脈去內推,尤其熱門的職缺內推非常重要,像Verizon我沒內推連面試都不給,微軟我也自己投過一個ML的缺沒下文,後來找人內推SWE才拿到面試。
3.2解題
使用語言
除了Microsoft的職缺有指定要考C++,我刷題面試幾乎都是用python。
python的好處是code會比較短,可以節省面試時的coding複雜度,C++的好處則是STL功能很完整,某些特定的題目反而比python更方便。
但我個人是建議選自己熟悉的語言就好,沒有必要特別去為了面試去練一個自己不熟的語言
Leetcode:
扣掉前面偶爾沒事隨便寫的幾十題,我主要是在1月底口試完了才開始認真刷題,二月過年還放了一個禮拜。
再加上我4月初時跟同學借了premium帳號大概兩週刷了65題(6/29/30),我大概是不到3個月刷了400題左右。
刷題的重點不在於數量,而在於面試當下對各種題型的熟練度。
舉例來說,有些人可能一兩年間陸陸續續刷了500題以上,但面試當下出了一題很久沒寫過的題目就爆炸了。
所以我個人推薦的練習解題要分為三個階段:
1.認識各種演算法/資料結構
有時候遇到題目想不出來並不是題目很難或自己太笨,而是題目要考的演算法你根本沒有聽過。
最好的解法就是先去Leetcode旁邊的各個topic 找出所有自己沒看過、不熟悉的類型,想不到時不要抗拒看提示或解答,確認你的腦袋裡有安裝完該有的dependency才能有效率的刷題。
2.熟練各種題型
認識完各式算法之後就要開始懂得舉一反三,看到題目時要能快速列出可能有用的算法。
這時可以先試著隨機抽題目寫,寫一陣子後應該會發現自己有不熟的topic->回去練習不熟的topic->熟了再去隨機抽題找不熟的topic->loop。
練到隨機抽題抽不到不熟的題型就差不多了,除了某些真的很依賴臨場反應的hard題應該都要會寫。
3.維持手感
其實練到上一步就夠用了,但開始準備直到全部面試結束往往是一段慢長的時光,所以每天還是要持續練習維持手感。
以我個人的經驗來說,自己感覺是大概刷個200題左右後就練不太到新東西了,後面只是每天隨機抽題練手感,有時候一個下午甚至可以解個10幾題。
不過因為本身有碰過競程所以算法底子比一般人好一點,所以我前兩步驟上手的很快,底子不夠好的話剛開始熟練算法應該會比較慢,但練熟了後面試解題考驗的只是當下的手感而不是你總共刷過幾題。
模擬面試
除了線上刷題外,找人模擬面試也非常重要,畢竟面試當下的情境跟自己刷題是完全不一樣的,尤其是英文面試,邊解題邊用英文描述思路一定要找人練才有效。
我自己是有跟一同要找工作的同學固定約時間互相出題模擬,沒有適合練習的對象的話網路上也有付費mockinterview的服務,我沒有研究過但也許可以試試看。
3.3英文
前面提過我英文偏爛,對我而言開始練英文的轉捩點是大四時第一次出國參加conference,外國人提問時幾乎聽不懂只能跟他雞同鴨講,講到他自己放棄跟我溝通XD
之後我開始關注一些有興趣的英文youtuber,像我本身有在玩音樂就有追David504,他的語速非常慢很適合英聽爛的人入門。
或是平常有在打LOL之類的線上遊戲也可以看國外的實況或比賽。
一開始看不懂可以先開字幕或多回放幾次,看久了就慢慢減少看字幕或回放的比例。
前陣子在面試時剛好HololiveEN很紅,我也常常早上起床在面試前倒杯咖啡邊看GawrGura的實況等等。
準備英文的方式網路上很多人都有分享過,但我自己認為不管用甚麼方式準備,最重要的都是要有興趣。
從大四到碩二,我花了漫長的兩年才從完全聽不懂進步到有辦法用英文跟外國人面試,有興趣的準備方式才能持之以恆。
4.面試流程
Shopee-MachineLearningEngineer
3/24內推
3/29onlinecodingtest
4/6 codinginterview
4/13MLinterview
4/16offer
蝦皮的ML主要有兩塊:推薦系統跟關鍵字搜尋。
要找到真的在大型產品上應用的ML技術其實很難,所以想往ML發展的話蝦皮做的專案算是非常有競爭力。
Onlinecodingtest就是丟一個測驗網址請你一小時內解兩題(字串匹配,prefixsum),全程螢幕錄影。
字串匹配那題遇到網頁前端有bug測資過不了,花了快20分鐘幫他們debug,螢幕錄影大概就錄到有個來亂的人在那邊開F12debug。
不過還好兩題都是秒解沒什麼障礙,寫完後userexperience直接1星開噴高歌離席,結果還是過了。
Codinginterview是用zoom,面試官是中國人講中文,考了一題很簡單的水題+一題BST。
MLinterview事前有先問面過蝦皮的朋友,原本以為只會問基本的ML,結果面試官看了我的履歷後問了一堆NLP相關的開放式問題,包括中文斷詞、語言模型等等。
這關因為沒有特別準備所以我自認沒有答得很好,不過應該還算有講出基本的答案,過幾天HR就通知我offer了。
ASUSAICS
3/16內推
3/23phoneinterview
4/12onsiteinterview
4/14口頭offer
4/21HRoffer
AICS的主力產品是用NLP的技術做一些醫療相關的產品,目前已經有不少醫院跟AICS有合作了,聽說最近也要開始跟電商合作做廣告投放。
Phoneinterview是用Teams,考了一題twopointers。
解完後面試官給了兩個followup,但感覺像是臨時想的他也不確定正解,兩題我都給了DP解,最後大概解太快了想不到要問啥了不到半小時就提早結束進入閒聊環節。
Onsiteinterview是到關渡的ASUS立功大樓,不得不說真的是靠北遠又偏僻,附近除了costco連超商都不好找。
總共排了四關面試,前兩關都是問一些基本的ML問題,問完都有考簡單的解題(DP,linkedlist)。
不過這兩個面試官都是偏研究路線的,感覺不太熟leetcode,解題時就是看著我把code寫完,testcase跟複雜度都沒有仔細問。
第三關的面試官就是一般的SWE,問了一題DP,過程中有提出比較正常的問題跟followup。
最後一關是跟主管閒聊,過程中就是聽他嘴砲描繪AICS 的美好藍圖,誘拐涉世未深的學生說服你進入AICS的溫馨大家庭。
另外主管還有提到他們會開最頂級的offer,可以等我所有面試都結束後再跟他們談,即使拿到外商offer也會有competingoffer。
不過很遺憾的是ASUS的HR似乎跟AICS不同調,我面完後沒多久就通知我offer的數字了。
這裡要特別開噴ASUS的HR真的很機掰,約時間通話瘋狂放鳥就算了,問他competingoffer的事也只說已經不能更高了,一副不接拉倒隨便你,三天兩頭就奪命連環call催我趕快接offer。
過一陣子我跟蝦皮談到一個還算滿意的package後就直接跟HR說88有緣再相見。
不過真正的好戲還在後頭,我拒掉隔天主管就打電話問原因,敘述了HR的事蹟後主管表示HR根本沒有問過他,不然AICS那邊是願意等的。
除了我以外也有聽說其他人在AICS遇到類似的事,也有被主管關照。
跟主管意見回饋完後沒多久就陸續聽到其他面AICS的朋友有順利談到competingoffer,希望那個HR現在還在ㄏㄏ
Microsoft-SoftwareEngineer
2/23內推
3/12phoneinterview
3/26onlinetechinterview
3/30onlinetechinterview
4/13hiringcommittee
6/6 offer
我投的部門是PowerBI,沒聽過的話可以自己查一下這個產品。
PowerBI主要的開發部門是在美國,台灣只有大約10人的團隊,主要是在負責處理PowerBIAPI的後端資料。
由於這個部門主要是在美國,所以台灣的工程師是完全的自由工時不需要進辦公室,想要白天睡覺直接配合美國時間也行,不然聽說微軟有些部門是要打卡的。
但同時壞處就是有時候需要在早上六七點跟美國開會。
微軟的面試都是用自家的Teams。
Phoneinterview是一個台灣的工程師,用中文面試,考了一題binarysearch。
Onlinetechinterview分兩次,一次兩關種共四關。
第一關是一個在美國的中國人工程師,用中文面試,考了一題twopointer,解完後有問順便一些經典的OS題,像是parallelization、threading。
第二關是台灣的主管,開場自介是中文,但解題時有要求使用英文,考了一題slidingwindow。
第三關是印度人,考了一題可以用linkedlist解的題目,但他只有要求我實作暴搜解,雖然跟印度人溝通有點障礙,但其實只要慢慢講,有事沒事就喊一句pardonme,最後還是有順利解完。
最後一關是美國主管,也是印度人,考的是systemdesign,這裡算是我自己的失算,完全沒料到會遇到systemdesign也完全沒有準備,不過還好平常system的基本功不算太差,自認回答的還算可以,除了中間有一段因為溝通障礙鬼打牆了很久,後來聽HR說這關因為鬼打牆被給了很低分==
面完過了兩週沒消息本來以為大概是涼了,寄信問了HR才跟我說面試有合格,因為有表現的更好的面試者卡在前面所以要我等。
後來到處打聽了一下發現卡在前面的那個是認識的同學,而且他同時也在面Google等結果,最後等到6月他確定要去Google了才通知我offer。
Google-SoftwareEngineer(CampusHire)
2/5 內推
3/25phoneinterview
4/9 onlinetechinterview
4/15onlinetechinterview
5/18hiringcommittee(沒過)
6/7 teammatch
6/29offer
新鮮人投Google都是經過campushire,先面試通過後才teammatch決定要去哪個部門。
另外Google的招募流程是出了名的冗,我從投履歷到錄取花了將近五個月,如果有興趣面Google的朋友請一定要盡早丟履歷,不要想說最想去的留到最後才面,不然拖太久其他公司不等,Google又不幸沒上的話會出大事。
Phoneinterview是一個中國人講中文,不過Google的phoneinterview是世界共通的,所以有機會遇到外國人,要面Google的話第一關就要有講英文的心理準備。
考題是BFS+DP。
Onlinetechinterview跟微軟一樣分兩次4關,最後還有附帶一個簡短的behaviorinterview。
前兩關是台灣的工程師,沒限制要使用英文,但我遇到其中一個是在台灣的越南人所以是用英文。
後兩關則是英文限定,但也都是台灣人所以溝通起來不會太有障礙。
四關用的算法分別的是
BST
slidingwindow
Trie
DP+一個沒解出來,但事後發現可以binarysearch的followup。
題目這邊特別說明一下,只要被流出到網路上的題目就會被Google禁用,所以面Google時如果你遇到太簡單或Leetcode寫過的題目,不用懷疑100%還有followup,請盡快寫完解下一題。
Behaviorinterview沒什麼好講的,不要亂答都會過。
面試結束後才是整個流程中最漫長難熬的時光。
4/15面試結束當天HR就跟我要資料要送hiringcommittee,送完後等了一個多月,等到HR都離職了換了另一個HR接手,5/18才真的排到我的結果被review。
又很不幸的我的面試結果不夠好所以沒過。
但同時很幸運的是我的結果也許是在合格邊緣,又或剛好是台灣板橋新辦公室真的很缺人,HR決定先幫我teammatch,有match到的話再送一次committee通過的機率就會變高。
teammatch的流程是這樣:所有面試者的履歷跟面試結果會被集中到一個pool,各部門的主管可以在pool中挑選想要的人選進行面試,再決定要不要錄用。
想當然爾,面試結果不太好的人要match的難度會比較高,甚至有可能沒有match。
過了兩週後都沒消息,當時微軟要我做決定,我只好厚著臉皮寄信請HR幫忙,又很幸運的我遇到的HR很積極,主動把我的履歷轉給給其中一個team的主管,主管也說覺得很奇怪HR怎麼突然丟一個履歷請他盡快面試,叒很幸運的主管跟我聊完覺得面試表現無所謂想要收我,就這樣順利的再送一次committee並拿到offer了。
5.面試技巧
分享幾個我自己在面試中學到,以及從一些面試經驗豐富的人口中聽到的小技巧
不一定要寫出最佳解才能通過面試
想不出最佳解時不要慌張,很多時候面試官本來就沒有預期你要寫出最佳解,例如經典的字串匹配,我相信不會有面試官期望你在1小時內寫出KMP。
真的沒想法時可以先給出暴搜解,再思考有沒有辦法降低複雜度,例如最佳解是O(N),你把O(N^2)的暴搜壓到O(NlogN),給出一個次佳的解通常就能通過面試了。
Codingsyntax不一定要完全正確
面試只是要考你解題的思路而已,有時候遇到不好處裡的寫法可以口頭敘述就好,不用實作。
例如python的string是immutable,面試時你可以假設他是muttable,口頭告知面試官這個假設。
當然遇到會實際runcode的面試就不能這樣做,但大多數的面試都不會要求runcode,onsite的白板題甚至連電腦都不一定會有。
溝通、codingstyle的對結果的影響不一定比演算法小
有些公司對溝通跟codingstyle的評分比重不亞於演算法,尤其是有制度的大型軟體公司。
所以在面試時一定要跟面試官溝通,把腦海中的思路完整的講出來,codingstyle也一定要注意,尤其是每個變數命名都要有可讀性,不要用什麼a,b,c,s,l,tmp1,tmp2這種意義不明的變數名稱。
適時地向面試官尋求提示
這點算是要看面試官個人,有些面試官確實會死不給提示,但向大多數的面試官尋求提示都會給,只要不是從頭到尾都瘋狂要提示,通常都不會對結果有太大的扣分。
薪水
這邊提一個跟HR談判時很重要的技巧:事先打聽好各家公司的薪水範圍,知道各家公司開的上下限才能開出一個合理的價碼。
例如跟蝦皮談offer時HR告訴我新鮮人月薪大約是6000sgd,如果你乖乖開了差不多的價碼,恭喜你被lowball了。
因為我曾聽到有人拿過7000所以就直接開7000,HR最後也真的有去幫我爭取到一個很接近7000的數字。
另一個例子是微軟一開始開的offer其實只跟ASUS差不多,而且跟我說compete要拿其他家的合約給他們看。
但當時微軟給我決定的死線等不到Google給我正式offer,就口頭跟微軟說我打聽到Google會給的數字,讓HR知道我會放棄他們的offer後沒看合約也幫我match了。
如果你只是進來直接下拉想看重點的,恭喜你我很貼心的把重點整理在最後一段
月薪:Shopee>Google>Microsoft>ASUS>90k/m
年薪:Shopee>>>Google>=Microsoft>>>ASUS>1.5m/y
細節不能透漏太多也很難透漏太多,因為每家公司的會浮動的股票/獎金都不一樣。
例如蝦皮跟微軟的年薪主要是多在股票比例很高。
我要應徵軟體工程師
延伸閱讀>>>
揭秘10大面試流程!Google薪水真的如都市傳說之高?我的台灣Google面試心得
【聯發科MTK面試心得】聯發科3大面試準備方向,一舉拿下百萬Offer|面試經驗
14間台商與外商的「後端工程師」面試經驗,英文問題是必考、大小公司看重的不同
面試心得面試經驗軟體╱網路軟體工程軟體工程師面試網路邀稿嚴選好文
upvote
0
favorite
0
分享
upvote
0
favorite
0
回覆
分享
FANS
會員登入
(先登入會員才能回覆留言喔!)
上一篇:有點後悔離職|面試經驗分享下一篇:求職亂象,這3點千萬別踩雷|應徵技巧
想找工作?關鍵字立馬搜!
搜尋
週休二日
無經驗可
行政工作
助理工作
月薪三萬
知名企業
外商公司
作業員
推薦職缺
資深Java程式設計師0301孟華科技股份有限公司Java程式設計師0301孟華科技股份有限公司C#.Net程式設計師理財周刊股份有限公司研發五部-熱模擬資深工程師順達科技股份有限公司【總公司】程式設計師六角國際事業股份有限公司工研院資通所暑期實習生_間時約聘_資通所軟體系統開發實習生(X000)財團法人工業技術研究院
看更多相關職缺
想找工作?關鍵字立馬搜!
搜尋
週休二日
無經驗可
行政工作
助理工作
月薪三萬
知名企業
外商公司
作業員
延伸閱讀
更多文章載入中,請稍等...
職務資訊 軟體工程╱軟體╱網路
職務百科
薪資範圍
成功履歷
轉職推薦
延伸文章資訊
- 1軟體工程師vs 招聘主管:準備好這15個面試問題,順利過關!
面試問題– 對軟體工程師而言,面試過程,除了技術性的考試非常重要以外,跟招聘主管(Hiring Manager)的面試也是最終成功與否決定性非常大的一環。
- 2軟體工程師面試,問這6個問題留下好印象! - Glints Taiwan Blog
軟體工程師面試,問這6個問題留下好印象! · 請問公司與團隊的文化,還有什麼需要特別注意的地方嗎? · 請問團隊使用哪些而外的工具嗎? · 請問團隊現在遇到 ...
- 3前端工程師面試問題集 Front-end Job Interview Questions
前端工程師面試問題集. 譯注:此翻譯版,主要給不能流利的讀英文的人看,相關專有名詞還是保留原文,翻譯不好地方請協助Pull request。 此文件包含了一些前端開發的 ...
- 4前端面試法則二三事 - iT 邦幫忙
我模擬面試過很多人,絕大部分會直言:「這個我不會」、「不太清楚」,接著就沒下文了,其實這是很要不得的。原因是工程師的其中一個必備技能是必須探索自己不懂的問題, ...
- 5提升程式設計師的面試力:189道面試題目與解答第六版修訂版
我並不是一個招聘人員,我是一個軟體工程師,所以我知道當場被要求提出出色的演算法,然後在白板上寫出完美的程式碼是一種什麼樣的感覺。我經歷過,應徵者與面試官兩者 ...