[心得] 面試分享 Google/MS/Amazon/Roku
Medium 好讀版
https://bit.ly/3xUvBax
前言:
在 2021 這半年多的時間,共面試了九間公司,拿到了六個 offers。
過程中從版上得到很多有用的資訊,希望這篇分享也能對大家有點幫助。
-------------------[文長分隔線]----------------------------------
背景
十幾年的工作經驗,Android 底層 kernel, framework 到 app 都有摸過,待過台商歐商美商,千人大公司跟十人小新創都蹲過,近幾年一直在不同新創公司之間流浪。
TL;DR
No Offer:PayPay, ChitChat, Ubiquiti
Offer:BlueOcean, TomTom, Google, Amazon, Microsoft, Roku
---
1. PayPay — Android App
號稱日本最大的支付公司,如果錄取會要求 relocate 到日本。
看到積極擴編 Android app team 的消息,又說不需會日文,於是主動投遞。
面試流程:
履歷審查 -> Coding Challenge -> 一面 -> 二面 -> no offer
Coding Challenge 是要你寫一個匯率相關的 app,本身需求不難,大概就是要會接
remote api 到手機顯示的程度,但比較特別的是要求只能用 kotlin 並一定要寫 unit
tests。題目上說大約需要3–4小時,我覺得不太可能XD,最後花了一個週末寫完。交作
業後十天左右通知進到下一關面試。
第一場面試有兩個面試官,一位濃厚日本腔從頭到尾沒說超過五句話,另一位英文很好,主要是由他提問,一開始先從你寫的 Coding Challenge app 開始仔細地問你的架構設計,問你為什麼要用 A 寫法不用 B 寫法,unit test 測試為什麼是測這裡不是測試其他地方等等,然後依據你的回答帶出一些其他的 Android App 開發上的問題討論,像是記憶體管理,效能優化,apk size 縮小等等,個人覺得蠻專業的,都是問實務上會遇到的問題。中間也有就你的 resume 經歷提問,看到我有一些 C++的經驗,面試官忽然很有興趣的跟我討論了一些 JNI 相關的寫法,整個過程是蠻融洽的。
最後不免俗的考了一題 String Encoding,難度大概是 LeetCode Easy-Medium,順利解完以後加了一個 follow up,不知為何當下忽然腦袋當機,沒有解得很完全時間就到了,面試官就笑笑的說沒關係,結束了這場面試。而我視訊一結束馬上想到怎麼寫最佳解,心想完蛋了這關應該不會過。沒想到一週後收到通知要二面。
第二場面試是我遇過最奇妙的面試經驗,一開始面試官用英文說抱歉他英文不好所以會全程用日文面試,然後旁邊坐了一位女翻譯負責幫他翻譯成英文,我回答英文再靠翻譯轉成日文。可想而知這流程很卡,有時候講到一些專業術語時翻譯員一臉疑惑,我也不知道最後她最後到底翻了什麼XD
扣除溝通問題之外,面試內容是還蠻專業的。包含了 behavior question 和 一些基礎
的 system design,感覺上都是他們真實遇到的一些情境變化而來的考題,面試完當下覺得蠻有把握進入下一關的,結果沒想到幾天後收到一封不錄取通知,還寫說無法告知原因,沒得到任何 feedback 感覺很差啊!
整體來說 PayPay 的面試感覺是好的,過程中可以感受到他們對於產品品質的要求,注重單元測試,專業度上是加分的。溝通上雖然強調工程團隊不會日文沒關係,但像第二場面試這種需要翻譯的場合也許還是會遇到,可能適合懂一點日文的工程師去挑戰。另外大部分外商面試失敗都會給 feedback,希望你半年一年後再來試試,這點日商不知道是不是民情不同。我覺得畢竟面試時間都花了,能給一些 feedback 還是比較好的做法,希望他們未來能參考。
2. Ubiquiti — Android App
優比快是市佔不錯的網通公司,這間是獵人頭推薦的。
面試流程:一面 -> no offer
這場面試蠻災難的,從一開始溝通上就有點問題,獵人頭那邊是說第一場面試只會討論之前做過的 projects 還有 app 架構,結果還是考了一題 LeetCode Binary Tree,沒什麼準備的情況下勉強寫了出來,但 Code 有點醜 XD。而技術問題有些讓我蠻傻眼,像是請你背出你知道的 design patterns 之類的,我覺得面試官類型是那種心中有一個答案,你的回答如果不是他的解答就會追問到他滿意的回答為止。這種方式也沒什麼對錯,只是我面試的其他公司會比較注重你的思考過程和如何取捨,比較有討論互動。
過程如此不順,當然隔天就收到不繼續面試的回覆。
3. ChitChat 趣聊科技 — Android App
ChitChat 也是獵人頭推薦的新創公司。應該算是陸資,做的項目有點奇妙,應該說是遊走在灰色地帶的 app
面試流程:一面 -> no offer
一開始先是一個技術面試,過了一下履歷,問了一些 Android 問題都還算基本,然後比較有趣的是會問到一些平常面試不常見的問題,像是 apk decompile/smali/repack 等等,結束後接續另一場 manager 面試,詳細解釋了公司在做的項目,才讓我恍然大悟,原來世界上還有這種經營的方法。因為遊走在灰色地帶,所以我可能表現的興趣缺缺,面試官就問說:如果我們發 offer 給你,你是不是也不會來?我也很誠實的說應該不會 XD,他就笑笑說有興趣再聯絡我們,結束了這場面試。
4. BlueOcean 藍海智能 — AI system
藍海智能公司在竹北,主要做 AI 晶片的新創公司,朋友內推。
面試流程:一面 -> 二面 -> offer
第一場的面試官是軟體大主管和一位資深工程師,主要在問履歷做過相關的項目,以及你在其中負責的部分,過程中我有點疑惑,因為他們需要的人似乎跟我的專長沒有非常符合,頂多就是一些 Linux 開發的經驗算是相關。後來大主管有跟我解釋,因為他們做的東西很新,市場上也未必找得到完全符合需求的求職者,所以他們主要想找有基礎而且學習快的人。結束前閒聊了一下公司組織架構,基本上蠻扁平的,然後裡面好像蠻多人是從發哥跳槽的,也提到預計今年招到 100 人。
第二場面試就直接跟台灣的 GM 談了,大概過一下履歷之後就開始聊天了,GM 人蠻親切的,有特別聲明他們不是陸資,是外資+大陸老闆 XD,聊了一些公司發展願景之後就直接問我期待薪資,我就報了個期待數字,然後問竹北通勤很遠能不能補助交通費,他都寫在一個小本子上然後說內部評估後再跟我說。
結果:offer get. 薪資蠻有誠意的直接比我報的數字再 +20%。
5. TomTom — Automotive Systems (Android)
TomTom 在地圖領域大家應該不陌生,這次面試是 TomTom 的 Recruiter 從 LinkedIn 主動聯繫。
面試流程:一面 -> Android assessment -> 二面 -> offer
第一場面試官是兩位 PM ,全程英文。除了一些履歷相關的問題之外幾乎都在問
behavior questions,根據 Recruiter 的說法是 TomTom 希望先確定是適合公司文化的人,才會進到技術面試階段。
幾天後收到通知,下一關要寫一個 Android app assessment 上傳 source code,題目蠻單純的類似一個購物車 app,有一些必備需求及加分題,我覺得都沒有很困難。寫完上傳之後三天收到二面通知。
第二場面試有三名面試官 (PM/Android Lead/Architect),本來以為會深入討論
Android app assessment 的細節,結果只有稍微問一下架構為什麼這樣設計,接著問了一些基本的 Android 開發上常見的問題,以及履歷的一些細節,最後討論了一些
behavior questions 就結束了。整體而言算是比較輕鬆的一場技術面試。
結果:offer get. 薪資大概在我預期的邊緣。跟 Recruiter 溝通時委婉的提到其他公司的 offer 比較好,後來 Recruiter 也很有誠意幫忙回去溝通,三天後提了一個新
offer (微調 base+簽約金)。
6. Microsoft — Sr. Software Engineer
我面試的是微軟的 Device Team,目前主要產品是 Android 手機 Surface Duo,其實這個團隊主力是微軟併購 Movial 來的,所以對於在微軟做 Android 這件事就沒有很意外了。這次面試是微軟的 Recruiter 從 LinkedIn 主動聯繫。
面試流程:五關 (兩關中文三關英文 各 45 mins) -> offer
第一關 Coding test:寫了三題 LeetCode ,難度介於 Easy-Medium,涵蓋了 主要的資料結構 Linked List/Tree/Stack/Queue 等等。
第二關 Android questions:先從履歷中跟 Android Framework 比較相關的地方開始問起,懂 Window Manager 和 Activity Manager 會比較吃香,我這邊比較吃虧這兩塊都不是熟悉的領域,後來面試官還說:我怎麼覺得 BSP team 比較適合你 XD。
第三關第四關非常像:先問了一輪履歷經驗,再帶出一些 behavior questions,最後說來寫個 coding 吧,第三關出了一道 Linked List,第四關出了一題 Stack + follow up,都不難大概是 LeetCode Easy-Medium 等級。
第五關有點偏 system design,困難點在於直接把 Surface Duo 可能遇到的問題拿出來討論,像是雙螢幕 UI 交互的一些情境,如果有對這個產品下過功夫研究應該可以答的更好,我是回答得有點吃力啦,一來是對這產品真的沒有很熟,二來是英文沒有好的可以流暢的邊想邊回答,雖然最後拿到 positive feedback,但過程中真的汗流浹背。
結果:offer get. 薪資一線水準。
7. Google — Firmware Engineer
Pixel team。朋友內推
面試流程:六關 (五關中文一關英文 各 45 mins) -> offer
第一關 Coding test: LeetCode Bit Manipulation 變形題。
第二關 Embedded System Coding: ISR/Lock/Multi-threading 相關實作細節
第三關 Domain knowledge + Coding:Domain knowledge 問得很深,會根據你的回答再繼續追問細節。最後考了一題 LeetCode 沒看過的 string parsing 問題。
第四關 Behavior questions:討論一些工作上會遇到的情境,主要看你遇到一些困難的時候會用什麼方式應對,也提到跟不同時區團隊合作時需要大清早或深夜工作的情況。
第五關 Coding test:考了一題二維空間比大小,印象中 LeetCode 有看過類似但細節不同的問題。
第六關 Domain knowledge + Linux kernel questions:問了蠻多作業系統相關的細節,還好面試前有乖乖去複習過一遍 OS,大致都答的出來。
面試完 HR 說 feedback 都蠻正面的,但送 HC 等了一陣子,過了兩週才正式通過。
結果:offer get. 薪資一線水準。
8. Amazon — Embedded Software Engineer/System Development Engineer
這次面試是 Amazon 的 Recruiter 從 LinkedIn 主動聯繫。 部門是 Sidewalk team。
Amazon 面試最特別的就是非常強調他們的 14 leadership principles,有興趣的人可以搜尋一下關鍵字會看到很多討論。
面試流程:OA -> phone screen (中文 1 hr) -> on-site 四關 (全中文 各 1 hr) ->
Candidate Chat -> 加面一關 SysDE -> offer
Online Assessment:用 HackerRank 寫兩題 135 分鐘,除了寫程式以外還要用一個篇幅解釋你的想法,外加 15 分鐘的 work style questions。我覺得重點都不是在考演算法,而是細心和 edge case,我第一題測資 15/16 pass,第二題 11/16 pass,都沒有全過,當下想說慘了 OA 就要爆了,結果幸運的進到下一關 phone screen。
Phone Screen:由 Hiring Manager 面試,主要是討論履歷做過的案子,也分享了一下
Sidewalk team 目前的規劃及未來目標。也很感謝有特別提醒我 Amazon 非常注重
behavior questions,14 leadership principles 更是面試必問,讓我有所準備,不然後面幾關應該會被問倒。
第一關:30 mins behavior questions + 30 mins coding。前面 behavior questions
因為有所準備,當下要套入哪個 14 leadership principles 都還回答的蠻順利的。
Coding 部分出了一個棋牌遊戲,要你從 class 設計開始一直寫到某個指定的功能,我覺得時間有點太趕,前面還花了幾分鐘讀懂遊戲規則,最後硬寫了一個效能不好的版本出來。
第二關:30 mins behavior questions + 30 mins system design。System design 方面是設計一套 IOT 警示系統,從硬體、網路、雲端各種架構去思考這套系統,並討論不同情境底下的 trade off。關於 System Design 這方面比較沒有特別去準備,所以就以自己的經驗去提出第一個版本,再根據面試官的問題去修正。
第三關:behavior + embedded system + coding。這場除了老樣子 behavior
questions (14 leadership principles!!) 之外,問了比較多 embedded linux 相關的domain knowledge,像是 Booting sequence、memory layout、ISR 等等,最後剩十多分鐘忽然說還是來寫個 coding 吧,就出了一題計算 time interval overlap,難度應該
是 LeetCode Medium,這題因為下一場面試時間直接接在後面,剩十幾分鐘實在太趕,一開始方向不對就很難完成,最後有些部分只能用註解跟口述解釋我的作法。
第四關:behavior + coding。因為 onsite 是連續的面試,面到這場已經有點精神疲憊。Coding 題目跟 string encode/decode 有關,當下只能寫出一個非最佳解,看得出來面試官沒有很滿意,過程中大概也知道他希望的解法是什麼,但最後就有種氣力放盡的感覺 XD,有被連續面試轟炸過的人應該可以體會。
Candidate Chat:這場半小時是不計入面試評分的,由一位非常資深的 Amazon 大主管來跟你聊聊公司團隊工作等等,事後去搜尋了一下資歷相當驚人呀,我覺得這場還不錯,有一種被重視的感覺。
過了大概一週,收到 Recruiter feedback,簡單說就是 Domain knowledge 不錯但
Coding 差一些,Coding 的部分他們覺得 SDE 要能寫出最佳解,但我有些關沒有寫出來,所以想把我轉 SysDE,SysDE 在 Amazon 的定義就是在特定領域專精但 Coding 比較普通的職缺,於是要求我再加面一場 SysDE。本來當下覺得還要再面試! (心態炸裂),
但 Recruiter 很專業態度也很好,最後還是被說服了多面了一場,
基本上就是確認我 embedded system 方面的知識夠不夠而已。
結果:offer get. ESDE 轉 SysDE。薪資也是一線水準但底薪比較低,靠簽約金跟股票撐起來。
9. Roku — Sr. Software Engineer
Roku 是美國現在電視棒一哥,台灣團隊成立不久,公司設在竹北。這次面試是 Roku 的Recruiter 從 LinkedIn 主動聯繫。
面試流程:OA -> phone screen (英文 1.5 hrs)-> on-site 五關 (全英文 各 1 hr)
-> offer
Online Assessment:用 HackerRank 寫三題 60 分鐘,題目涵蓋 Bit
Manipulation/Sort/String/Array,我覺得題目相對來說不難,大概 45 分鐘寫完測資全過,花五分鐘整理一下 code 就交卷。
Phone Screen:花了一些時間討論履歷做過的案子以及一些 embedded system 相關的問題,然後考了一題 min/max grouping,寫了一兩個解法面試官覺得 ok,但問我有沒有更快的解法,我想了一個 DP 解但卡住寫不完,面試官最後說沒關係不用這麼複雜,還分享了一個不用 DP 但比較快的解法。
第一關:問了一堆 C++ 語法,static/extern/virtual function/shared_ptr 還有各種繼承問題等等,然後考了一題 hashmap,測資全過。
第二關:問了蠻多 embedded system 相關的問題,考了一題 group division,也是測資全過。
第三關:也是問履歷及 embedded system 相關的問題,考了一題 LeetCode Easy 等級的,測資全過。
第四關:一位英國人面試官,主要問 Behavior questions 以及介紹 Roku 的歷史、團隊及未來發展,也提到 Roku 現在正在大幅擴張階段,收了很多不同國家的人又要同時保存公司文化,是一個挑戰。
第五關:面試官是一個很嗨的大叔,但口音有點重,有時候真的聽不太懂他在說什麼,考了兩題 Coding,是那種 math trick 題,因為他很嗨會邊講邊大笑,所以光理解題目就花了好一番功夫,我覺得寫的不怎麼樣,但他似乎沒有很在意。
結果:offer get. Roku 薪資也是一線水準,比較特別的是可以讓你選擇股票佔總收入的比例 (9–20%),而且如果當年度股價跌太多,公司會補差價給你。(太佛心了吧!)
---
準備方向
一月開始寫 LeetCode,三月開始嘗試面試,六月密集面試,整個過程大概半年。
LeetCode 最後大概寫了 240 題,使用語言是 C++。
有蠻多人建議分類刷題,我自己是不太喜歡,因為會有先入為主的想法,比如說當你在
寫 stack 這個類別的題目時,還沒看題目你就知道這題跟 stack 有關,但當面試時其實你不知道會遇到哪種題目,如果練習時就保持這種未知感,我自己覺得比較有幫助。
我自己是從某位大大分享的
Blind Curated 75 https://leetcode.com/list/xoqag3yj/ 下手,
有點像是 75 個基本題型,其他的題目多半是從這些來衍伸,
基本題型寫完以後開始寫
CSpiration 250 (這網站好像時好時壞 可以搜尋一下關鍵字)
用一個 spreadsheet 做紀錄,遇到不會的或寫太慢的就標個記號過幾天再寫一次。
另外練習邊寫邊講是一個很好的方式,平常我們比較不會這樣寫Code,
但面試時重視的是你跟面試官之間的溝通,讓人家理解你的邏輯。
Linux 我是拿 jserv 大神的
Linux 核心設計系列講座 https://beta.hackfoldr.org/linux
當作複習講義,再惡補一些 embedded system 常考題來準備。
Behavior questions 建議直接準備一次 Amazon 面試,因為 A 社超級重視這個,準備過一次其他間的 behavior questions 相對都輕而易舉。
最後,務必至少找人 Mock Interview 一次,非常非常有用。
總結
我覺得這次疫情爆發對我來說剛好是個機會,幾乎所有的公司都改成線上面試,時間上也因為 WFH 的關係比較好安排。這次面試準備比較久,也很幸運的拿到了幾個不錯的
offer,特別感謝幾位朋友,不管是幫我 mock interview 或是分享面試方法,都對我有很大的幫助。
其實早在 2016 就曾經挑戰過 Facebook,當時第一輪面試就爆了,讓我一直有點陰影。事隔多年回頭看看,當時準備真的十分不足,不懂得跟面試官討論想法 (think out
load),練習的題目也不夠多,失敗也是很合理的。
但有時候覺得面試也很吃運氣,可能剛好跟面試官不對盤、剛好考了一題你最不會的問題、或是剛好有其他更厲害的人競爭同一個職缺,都有可能跟喜歡的工作擦身而過,能做的只有多認真準備與多面試幾間公司累積經驗吧!
希望這些分享能幫助到大家!
--
這包真的很solid
paypay 的部份感覺比較意外
好強
哥 你的射擊範圍有點廣 ....
推
不好意思 可以請問亞馬遜第一次電面完大概多久會有回音呢
,謝謝
強
推
回 felizzZ 大, 我是一週左右
感謝Chiel大大,祝你新公司一切順利
感謝Chiel大大,祝你新公司一切順利
感謝Chiel大大,祝你新公司一切順利
大推
恭喜,太強了!
cool cool
猛 不過領域也太廣
Think out loud
大神…
恭喜,方便透露什麼是一線水準嗎
超強
謝謝分享
PUSH
推
跨了超多領域,超強!
強者
推 好猛
太猛了
推,congrats!
超強!
這篇太強
好強…此文要收藏
推
根本神...
10+以上工作經驗一線的話以google來說大概L5~6
謝謝分享!
太猛了
PTT臥虎藏龍
MGA 都上,真強者
這真的超強 wow
Push
推推推
恭喜 好厲害啊
強者
太強了 想知道常問的 embedded system 的問題
推
我媽問我問甚麼跪在電腦前看著螢幕發呆...
好猛 感謝分享
好厲害!!而且還跨過這麼多領域
大神...太猛了
paypay跟你一樣無聲卡 ubi也跟你一樣感受
loud
好奇 ChitChat
強者推!
Ubiquiti, 最近也面試過, 跟原po一樣, 覺得是個面試災難
面試官感覺只想讓你背出專有名詞答案
不會專注問你過往的專案經歷, 還叫我背出我上上一家公司
用過的某個套件名稱, 早忘了
如果專注在專案做了什麼, 貢獻了什麼
Ubi 看樣子比較想找 Junior, 背熟專有名詞, 抓進來培育
猛
神人太多了 跪
來朝聖
推
猛
推推
推推感謝分享
Ubi 想找新人 但offer 給的比台商還低
真假 不是聽說U給的蠻不錯的嗎?
好奇大大最後去哪間?謝謝分享
原po去了Google
強
大神
強者推推
推
太神了...十幾年經驗沒倦怠還下來刷題(跪
推強者
推
勵志
強
holy…
原PO好強!
推
強者 給推
請收下小弟的膝蓋
感謝分享
推
感謝用心分享
十幾年工作經驗難怪 Google offer get 寫得那麼輕
鬆
太神了,跟大大看齊
太神了 感謝分享
太神惹..
推分享詳細
太厲害了
推推 恭喜原PO
推
推強者分享
好強喔
哈哈哈哈。優比快幫你推一個。BinaryTree 再老經驗y
沒準備也是當下會卡的。我卡了15分鐘解出來已經自認
還是個樣子了
這間這樣不用灰心,我只能反饋這答案。其他花花世界
太厲害惹~推推
太強了,真強者
強到爆
推 感謝大神分享
roku面試過 online就被刷掉了 想挑戰最好多刷點題目
而且要熟悉 45分要寫3題不是太容易
這篇真神人 !
推 強者
真厲害,感謝分享
神
mock過的探個頭
太猛了!
好猛 200多題就滿手offer
推大神
爆
[面試] 2021跳槽面試: Google/Linkedin/Oracle左思右想,身在科技業還是該承擔起分享面試經驗的責任 以下簡短介紹拿到面試途徑, 面試難易度評價及心得 跳槽職位介於SDE mid ~ senior level ------------------------------- Google (Offer)88
[心得] Google TW Software Engineer 面試心得本人目前在新加坡,最近剛收到offer,所以想來記錄一下心得 去年九月在linkedin收到hr面試邀請, 因為和hr說要準備一下,所以面試開始是在一個月後的十月 我自己比較喜歡寫c++,工作上用golang,刷題和面試都用c++ 1) Phone interview: medium65
[心得] Google TW SWE 面試心得# Google TW SWE 面試心得 背景: 3yoe,做了兩年豬屎屋後受不了工作型態轉職Backend,目前約一年後端經驗 無奈薪水太低加上今年上半年各種外商擴招就開始面試 3月在LinkedIn 收到Google recruiter面試邀約,大多數recruiter都建議可以先準備一個54
[心得] 2022 台灣 ML 面試心得 (AMZN/GOOG)嗨大家好,第一次在本版發心得文,希望可以對正在面試的各位有所幫助。 medium 好讀版請看 以下正文: Background 在今年決定離開前公司後,就期許自己未來順利找到工作的話,要記錄自己的面試過程,40
[心得][美國] 幾年的面試者+面試官經驗鑑於近年來LeetCode刷題被神化,被認為是面試必備 所以我想以5年多以來無論是當面試者還是當面試官的經驗 來分享一下如何準備面試 首先先分享一下我的經歷 我不是什麼強者,沒有參加過ACM競賽,Code jam頂多做兩題20
[心得] Android-幣安/熊貓/Funnow/Crypto.com過年前花了一段時間面試,我是面Android mid level(3-4 years+)的職缺,最近終於告 一段落了,這幾間面試過程下來感覺很棒,現在應該還有在徵人,跟大家分享一些過程, 希望有幫助 幣安Biance: Peer 面試2輪,manager面試1輪起跳,看有幾個manager想爭取,各面1次。20
[心得] Foodpanda / ShopbackPart 3 這應該是我最後一篇面試文 希望對這兩家公司有興趣的人有幫助 FoodPanda - Backend Engineer 面試全部都是"英文"19
[心得] 面試心得之前有發過一篇,後來想說等Amazon面完再一起發 今天終於把Amazon面完了,分享一些心得給大家 背景: 四大CS學碩,目前在MTK做軟韌體 程式能力就一般,跟板上大神比差很多14
[心得] 日本職缺 Paypay / Amazon JP / Rakuten除了台灣職缺外 我還有投了一些日本職缺 雖然本身會說一點日文 但還是希望在英語環境工作 我想這樣能儘量避免一些日本工作文化 如果有版友有其他日本公司覺得不錯 也可以推薦給我~ PayPay - Backend Engineer9
[心得] Line TW / VewdPart 2 Line TW Back-end developer 是透過HH介紹的 先跟大家說一下 對於Line TW 大家想像的工作 和 實際內容可能有些落差