這段時間在面純軟職位,受惠於許多板上的分享,也想要反饋自己的心路歷程。雖然從開始面試到現在只有三個月,也沒有順利拿到offer,但還是決定先分享,因為我覺得板上太多成功案例,卻很少看到未成功的文,導致幸存者偏差以及資訊不完善。希望這篇文可以幫助大家了解軟體產業的現況。
【背景】
美國uw-madison資工學士,沒有讀研究所。畢業後留在美國工作三年,主要做大型數據處理、網路API及分散式系統,也有碰一點ML模型部署。去年年底回台灣等當兵,今年五月退伍後開始投履歷。
【準備過程】
Leetcode 沒有刷像其他人那麼多,不過很多經典題目我都會利用不同套路寫很多遍。另外CSES也有很多不錯的題目,我刷了~80題。個人刷題全用C++,畢竟台灣科技業是由硬體主導。

另外也有花時間深入了解C++的一些核心觀念(smart pointer, heap/stack, lvalue/rvalue, pointer/reference, template, const vs constexpr 等等)跟常用container的底層運作。之前學的計算機網路/作業系統/計算機結構也有稍微複習一下。
Google: SWE: Testing Architecture / Fuschia
- D+0: recruiter 安排15分鐘會議,講解一下職缺跟面試流程。該職位比較偏向做testing/qa的,所以其實我沒什麼興趣,而且 fuschia 這個專案看起來沒什麼前景,也有朋友說該team不久之前才剛遭遇大裁員。但還是打算面面看,畢竟是Google。
- D+7: mock interview: 面試官是台灣人,考了一題medium,沒有很難。最後稍微給我一些回饋跟指引,比方說time complexity一定一定要答對、要確認題目的假設、以及要考慮邊界情況。
- D+14: 台灣面試官,中文面試,考了一題關於cpu scheduling 的題目。回想一下我當下真的是太緊張了,可能因為這是我睽違三年以來第一次面試。看到題目之後腦袋一片空白,光是了解題目的精髓就花了十幾分鐘。最後使用priority queue + hashmap 勉強寫出一個 sub-optimal solution,也做了dry-run,面試官也確認是正確的。time/space 也應該有答對。
- D+15: googlyness interview: 全中文,基本上就是behaviorial,問你關於你最大的挑戰、跟同事有紛爭如何處理、面對非技術性的困難如何克服。
- D+18: recruiter feedback call: feedback mixed, 雖然behaviorial 很順利但是技術面沒有達到最佳解所以不能繼續。非常可惜。
Qualcomm: QAIRT Software Engineer
- D+0: recruiter schedule interview
- D+5: 一面:全中文, 30分鐘問履歷、最近如何把AI引進你的日常工作,還有一些經典行為面試題目。後面30分鐘考一題經典的medium 題目,基本上跟leetcode一模一樣,我跟面試官解釋我的思路後大概五分鐘就寫出來了。
- D+13: 二面: 兩輪中文面試,各一小時。recruiter說如果第一關的面試官判定沒過就不會有下一關了。第一輪前三十分鐘問履歷,後面一樣考一題經典的medium,類似題目做過很多遍所以十分鐘以內就寫出來了。第二輪是一位看似蠻資深的工程師,但有別於之前的面試官,他不太客氣,問履歷的時候充滿了質疑的態度,還跟我說我之前的工作內容跟我在面的職位毫無相關,問我為什麼要投。再來他問我我有什麼優點,我說我喜歡用文字表達我的想法,之前在公司負責寫很多documentation 跟產品的說明,結果他問我你怎麼知道這些東西有人看。最後問了一題應該是medium/hard,關於 bitstring 的操縱,這題目我認為如果沒有先前接觸過一樣的題目很少人能夠當下想出解法。
後來發多次email跟進面試結果但都沒收到回應,感覺應該是涼了。我對這個職缺非常有興趣,高通也是一家我很嚮往的公司。該團隊是做AI 模型在qualcomm snapdragon 處理器上執行之中的軟體層面,類似於cuda。面試前我還花了老半天複習c++, os, embedded, 還有ai inference 的一些基本知識,但最終完全沒有用到,實在蠻失望的。
Amazon: SWE - eero
- D+0: recruiter call, 介紹eero 團隊跟講解面試流程。當天發OA, 要求一個星期內完成。
- D+2: 完成oa, 總共有兩題。第一題是演算法,有45分鐘時間限制,沒有很難但演算法執行前需要做一大堆資料處理,很多edge case。最後test case 全部過但不知道隱藏的測試有沒有過。第二題一小時,給你一個小型c++ codebase, 有15個test failure, 要求在codebase裡面修正錯誤,介面的右上角有提供AI助理。這個環節好像是測驗你的ai 使用技巧,比方說你可以把test error 丟給AI, 它可以提供一些建議和線索,例如說這個test case 涉及到程式庫裡面的哪一個部分,你就可以直接去那個地方修改錯誤。
-D+4: recruiter 通知oa 通過並安排一面。
-D+11: 一面: 全英文,一小時,30分鐘leadership principle, 30分鐘leetcode medium。關於leadership principle建議準備8-10個故事涵蓋16個LP,用STAR呈現,並且一定要練習口說。對自己的故事需要深入的了解,因為面試官會追問,可能會被問到小細節,所以對履歷上寫的東西自己要非常清楚。另外lp 故事在整個面試過程中不能夠重複,不然會被扣分。
- D+13:recruiter 通知一面過關,安排virtual onsite。總共4輪面試,可以選擇安排在不同天。我建議分2-3天面,感覺一天面四小時壓力過大而且到最後專注力容易耗盡。
- D+19: onsite r1: 全英文,一小時全部考leadership principle,總共問了三題,而且每一題都有2-3個followup。感覺氣氛很好,面試官問的問題都很有意思。因為類似題目練了很多遍所以很有自信的表達出來。
- D+20: onsite r2: 全英文, 跟美國主管面試。前面半小時問履歷+lp,後面則是問一題leetcode easy,不用刷題也能解出來的那種題目。這個面試官是在eero 很久的一位資深主管,對他們的產品有非常深入的了解。最後我有問到關於scalability 還有其他技術性的挑戰,他都有詳細地描述內部系統的運作。感覺整體而言聊的很開心,不太像是傳統上對下的面試。
- D+21: onsite r3+r4: 第一輪一樣全英文,問lp + domain knowledge + coding, 關於doubly-linked list 的實作,也是偏easy。中間還有問一些關於計算機網路的基本知識,因為面試前有複習,所以很有自信的回答。最後利用剩餘的時間跟面試官聊了一下關於eero team 的文化及工作模式。第二輪跟台灣主管面試,是唯一中文的面試。考lp + domain knowledge, 最後一題關於sliding window 的leetcode easy/medium。這關面試最後有點超時,因為前面lp + domain就已經花了40+分鐘,他問的問題很多,而且我在回答lp的時候他不停的打斷我,導致我無法把完整的star說出來。最後只有20分鐘寫演算法,而且這題雖然是easy但是有許多階段,而且還需要跟external file 互動,所以很費時。不過最後還是有順利寫完code,並且做dry run, 面試官也確認算法正確。
- D+26: 感謝信
面試心得
- 外商面試不確定性太高了,即便你自認為表現很好,offer到手之前不要對結果抱持任何期待。或許某一個面試官不看好你、headcount 不足、或者是某個競爭對手特別出眾,這些預想不到的因素實在太多所以不要過度踹則。之前在美國還有遇過offer 簽了之後,因為公司景氣不好而取消工作機會。
- 越久沒有拿到offer比較多的是心靈上的焦慮和對自己能力的懷疑。一定要注意身心健康,遇到挫折時建議找朋友聊天或是去運動降低皮質醇。
- 不要跟別人比較,網上的文通常都是順利拿到offer才會發,大多數人跟你一樣每天收到接連的感謝信。
- 以上是這三個月的面試經驗分享,過幾個月會再發下一篇更新!



