關鍵字搜尋
置頂

【紐約工程師無私分享】想進Amazon、Google不能錯過:科技公司常見的面試流程、考題

文/由 紐約工程師 Jack 授權轉載,並同意修訂標題
圖/pixabaylaboratorio linux,CC Licensed,經編輯合併。

文章最後更新於 2021年2月25日

Amazon, Google面試,在美國的面試到底是什麼樣子?都考察什麼能力?會不會考線上Coding?這一篇就是要來講講科技公司常見的3個面試流程,希望可以幫助你了解面試大概都會考些什麼。最後舉一些,我個人的失敗心酸血史,來幫助你進一步了解面試流程。


美國求職攻略

希望陪你走過美國求職馬拉松,整理了我自己、朋友的經驗,幫助你在逆境中,找到好工作!
內容包含:簡歷、LinkedIn、相關準備資源、準備面試的方法,希望讓你在美國求職路上更順暢。

  • 找工作資源彙整

[美國求職] #0 美國面試資源彙整,必備15個網站、2本書、4個Projects
[美國求職] #1 北美科技產業市場,SDE? DE? DS? DA? BA?

  • Resume & LinkedIn

[美國求職] #2 英文履歷的5個原則、履歷範本,Google, Amazon注重什麼?
[美國求職] #3 LinkedIn教學,提升找工作效率的3個技巧

  • 面試準備

[美國求職] #4 Amazon, Google面試,常見的3個面試流程
[北美求職] #5 如何準備面試?實用技巧?需要多少時間準備?

  • 學習資源推薦

履歷&LinkedIn:Career Hacking™: Resume, LinkedIn, Interviewing
技術面試準備:Master the Coding Interview: Data Structures + Algorithms
技術面試經典:Cracking the Coding Interview


這是美國求職,最常見的4個面試流程,但不是每個公司,都一定完全有4個流程,有些可能就直接On-site,有些則會有OA, Phone Interview, On-site。

這篇是概括性的,去解釋整個面試流程,每一間公司的面試細節,建議去查Glassdoor或是一畝三分地,來了解目前的面試流程。

學習資源:Master the Coding Interview: Data Structures + Algorithms,面試導向的教學課程,先會教你如何寫tech resume,大概公司的面試流程,裡面涵蓋7個必須知道的資料結構、最常考的4個演算法。個人大推。

文章目錄

  • 面試的4個階段

Phone Screen
Online Assessment
電話面試
On-site

  • 學習資源推薦
  • 面試經驗與失敗例子

大科技公司(Amazon, Google面試)
Amazon| Software Engineer 2
中型公司
MongoDB| Data Engineer
Cox | Software Engineer
Quantum Black | Junior Data Engineer
Xandr | Senior Software Engineer
小科技新創
Tarifica | Software Engineer
Rodo | Software Engineer
Click Therapeutics | Software Engineer

  • 面試準備常見問題

Q1: 如果要準備刷題,你會建議怎麼開始?
階段一:還在熟悉一種語言中
階段二:已經熟悉一種語言,從0開始刷題,需要補足DS, Algo知識
階段三:已經刷過幾題,已經有DS, Algo知識,了解Leetcode的介面
階段三:已經刷過50-100題,想知道怎麼提升效率
階段四:已經刷過150-200題一次,電話面試該怎麼準備?
階段五:已經刷過150-200題一次,已經電話面試過一兩次,想知道回饋
Q2: 如果要準備OOD,你會建議怎麼準備?
Q3: 如果要準備System Design,你會建議怎麼準備?
Q4: 如何提升簡歷,通過簡歷關?

  • 結論
  • 本週作業

作業一:瞭解你想申請公司的面試流程
作業二:學習用論壇,來找你申請公司的相關資訊

  • 鼓勵
  • 放鬆小品
  • 支持、聯絡我的3個方式
  • 北美求職攻略

面試的4個階段
Phone Screen

  • 形式:通常在進入面試流程以前,HR或是Head Hunter可能在求職網站看到你,或是你經由申請公司網站申請工作。他們會打一通電話給你,主要聊聊過去你的經歷,跟你想申請的職缺的細部內容。
    如果過了,通常就會把你的簡歷送到Team Hiring Manager,他們會決定要不要進行下一步,跟你進行面試(OA、電話面試、電話面試、On-site)。
    很多時候,可能Phone Screen完,沒有下文,也不要灰心!
  • 過程:一通15 – 30分鐘電話。
  • 內容:聊過去經歷、未來追求的職涯發展Match想申請的Role。
  • 建議:

把申請的Job description看清楚,並且把一些技能關鍵字圈起來。
把自己有Match申請職缺的技能,複習一下,口頭講解一次

如果你需要我幫你改簡歷的話,也可以預約我的「簡歷諮詢服務」,有讀者因此拿到了Facebook Offer。

Online Assessment

  • 形式:有很多大公司的第一個流程,就是Online Assessment,是一個Coding問題,藉此來測試面試者的Coding能力。
  • 內容:通常是2 – 3個coding Questions,時間通常在60 – 90分鐘,並且會有系統的Test Case來測試你的code。
  1. 時間限制:在你點開公司寄給你的Link會開始倒數計時
  2. 注意有沒有語言限制:目前大多數公司,都開放各種語言
  • 考察點:
  1. 基本程式語言的掌握度:你最熟悉的語言(ex: Java, Python, SQL…)
  2. 解決問題的思路:能不能解決問題,並且通過Test Case
  3. Coding Style:看你會不會,用有意義的名稱命名
  4. 掌握Corner Case:很多的Test Cases都有Corner Case
  • 建議:
    如果是常見的大公司(Google面試, Amazon面試),可以去一畝三分地、Glassdoor、Leetcode討論區,稍微了解一下最近的OA得出什麼類型的題目,可以提前先準備,等準備好了再打開連結。
  1. 提前做好功課
  2. 熟悉使用者介面:降低因為緊張,而一直找不到某些你需要的功能
  3. 深呼吸?(放輕鬆,你已經做足了功課,現在就是驗收的時刻,我每次都要跟自己這樣講XD)

電話面試

許多大科技公司(Google面試, Amazon面試),經過了Phone Screen後,在On-site面試之前,會安排一場電話面試,通常會比On-site簡單很多,時間也落在45 – 60分鐘左右。

  • 內容:以Amazon, Google面試為例,這大概是一個45 – 60分鐘過程,會問1 – 2的Coding Question。
  • 工具:公司常用CoderPad或是其他工具來做線上面試。
  • 考察點:
  1. 溝通能力:能不能釐清面試官所問的問題。
  2. 架構思路:釐清問題後,能不能清晰表達、並架構思路,解決問題
  3. 語言熟悉度:藉由Live Coding去了解面試者的語言掌握度
  4. 分析能力:能不能清楚的了解,自己設計的解法,時間複雜度、空間複雜度
  5. 時間掌握能力:能不能在有效的時間內,釐清問題、想出解法、闡述解法、debug、分析複雜度
  • 建議的流程:
  1. 明確題意:通過與面試官,明確交流,了解題意,這部分會讓面試官,了解你有良好的團隊意識、溝通能力。
  2. 講解大致思路:描述你打算用什麼「演算法」、「資料結構」,主要是要讓面試官,了解你的思路流程。如果你給出的解答,跟他想要的差大多,他有機會即時糾正你。目的,讓面試官瞭解你在做什麼!
  3. 實現演算法:優先處理邊界條件,在重要的地方,加上註釋,不斷地與面試官進行交流。
  4. 跑一個測試:用一個Test Case,走一遍你寫的code。目的,讓面試官確定你的演算法有效,同時可以在過程中,即時發現bug,糾正錯誤。同時,給面試官,留下你會寫單元測試的好習慣!
  5. 描述演算法空間、時間複雜度
  • 建議:
  1. 找個通訊良好、網路良好的地方(我就曾經有過通訊不好,都聽不太到面試官的聲音)
  2. 提早15分鐘,就找個安靜的地方,測試電腦
  3. 準備紙筆,可以記錄面試者問的問題,進而提問
  4. Think Out Loud:當你在解題的時候,一定要大聲地把解法講出來,面試官也會考察你的溝通能力。
  5. 熟悉線上共同編輯界面:公司常用CoderPad或是其他工具來做線上面試。
  • 常見的誤區:
  1. 解題時,不講話
  2. 打斷面試官講話,通常他們講話,是要給你Hints

On-site

當你通過了Phone Screen或Phone Interview,你會收到公司On-site的邀請,通常會是4 – 5組的工程師面試,大部份時候,最後一輪,會是Hiring Manager面試。

面試結束後,每個面試官都要寫下一份報告,去評估你的coding能力、溝通能力,解決問題的思路,最後會在整個面試結束後,開會做決定。

對於你而言,這是一個很好的機會去了解一個公司的文化,跟你未來同事互動的狀態,當你想成是一個雙向的互相了解的關係,可以從考試的狀態,變成雙向了解的狀態。

  • 時間:通常會是一整天(ex: 9am – 4 pm)
  • 建議:
  1. 做功課:一定要瀏覽最近的面試經驗
  2. 休息:前一天一定要睡飽
  3. 時間:提前準備2 – 4週
  4. 練習:在面試前,請假幾天,練習Coding(如果正在工作的話)
  5. 穿著:穿Business Casual
  6. 提早:提早30 – 40分鐘到公司
  • 例子:以Google面試為例,這一天會有四場技術面試,早上2場,下午2場,中間會有午餐面試。

I will study and get ready and someday my chance will come.

Abraham Lincoln


學習資源推薦

面試經驗與失敗例子

以下就來分享一些,我許多的失敗例子,供你們參考,目的希望可以讓你更加熟悉每個公司的面試流程,跟大概會考些什麼。

我想透過我個人的辛酸血史,幫助你了解,各個公司考察的東西。我更多經歷的是中小型企業,中小型企業,我覺得問題相對更彈性,比較難預測,網路上資訊也相對少。


大科技公司(Amazon, Google面試)

Amazon| Software Engineer 2
這是我的Amazon面試經驗,非常的慘痛,希望給大家Insights,提昇大家的成功率!

  • OA

上一畝三分地,稍微瀏覽了最近的題目,沒想到我的兩題裡,有一題超爆難…….,有2個Test Cases沒過。

但幸運的拿到了On-Site面試。

  • Onsite:5輪 共5小時
  1. System Design
  2. Coding: Leetcode難題,解完後,問時間複雜度,跟follow up如何提升效率。
  3. 純BQ
  4. Coding:非Leetcode,偏Big Data 題。(掛….)
  5. Object-Oriented Design:面試官人超好,非常熱情,設計一個類似Youtube的系統。

如果想準備System Design, Object-Oriented Design可以參考,我每個前輩、學長姐推薦的課程:

  1. Grokking the Object Oriented Design Interview
  2. Grokking the System Design Interview

這兩個課程,幾乎涵蓋所有面試,會問的問題,非常建議,面試前,投資自己,省下許多時間猜題!:D

拒絕:我其中一輪coding慘,講不出個所以然。


中型公司:MongoDB| Data Engineer

  • Phone Screen

跟內部HR聊聊,主要聊我的相關經驗,聽說MongoDB的Phone Screen關很重要,如果不契合,通常不會進入下個階段。

  • Phone Interview:1輪 共1小時

Leetcode中等難度,考Linked List 題目。

  • Onsite:5輪 共5小時
  1. Coding:一個原創題目,跟MongoDB內部相關,常用的資料結構,解題很快就解出來。主要在問有沒有用過Python Unit Test的package,然後討論如何設計Unit Test(沒有設計Unit Test經驗,後半慘)
  2. Data Engineer:主要聊Data Engineer Core Concept,Map Reduce,Kafka的原理,更多著重在分散式運算的原理。
  3. System Design:設計一個Data Pipeline,給DS跟公司內部使用,如果Query很慢,要如何解決。
  4. Behavior:聊聊我過去的經歷,跟遇到問題的反應,還有為什麼想來這個Team,跟未來想要專注的方向。
  5. Data Engineer:考Airflow基礎設置、EMR基礎設置、Scala基礎語言,就像是問答題一樣。

拒絕:因為沒有Unit Test經驗,跟分散式運算原理,沒有打的很好。


Cox | Software Engineer

  • Phone Screen

一個Head Hunter在LinkedIn上找到我,並且問我有沒有興趣,我就說有,然後就莫名其妙地獲得了Onsite。

  • Onsite:1輪 共60分鐘

這是我在美國的第一個On-site Interview,我當天沒算好時間還遲到了半個小時,還好還沒到我,兩個面試官,一輪60分鐘。

  • 問題:
  1. 簡歷:為什麼學士學歷不是CS,但決定要念CS
  2. Python:問了一些基本Python問題,set, list, tuple, garbage collection
  3. Django:問了基本設置,View, Model, Url如何設置

一開始就問我的簡歷,聊我的背景聊得太開心,結果就忘記考白板了,面試官還說,啊!我們時間沒有控制好,來不及考白版。

後來其中一個面試官送我出去時,他說他之前有在台灣工作四年,住在台大附近,並且說台大是間好學校,握握手。

隔天,Head Hunter就打給我很興奮的跟我說,我錄取了!我的第一個Offer!!


Quantum Black | Junior Data Engineer

一個麥肯錫買下來的科技新創公司,朋友錄取後,強烈推薦我申請看看,我就直接投了,HR就寄了OA給我。

  • OA:1輪 共90分鐘
  1. SQL
  2. Algorithm

用Hackerrank,90分鐘,三個問題,題目都不是常見的考題,面經也幾乎查不到,但難度不算太難。

  • Phone Interview 1:1輪 共60分鐘

電話面試,60分鐘,面試官主要是問我最喜歡的演算法是什麼,為什麼?我就回答了Python裡面內建sorting Algo,並且分析了時間、空間複雜度。

PS:我同學說,面試官相當喜歡我。(我心裡就想,啊!有機會拿offer嘛!!)

  • Phone Interview 2:1輪 共60分鐘

一個Principal Data Engineer給了我一個Data,並且設計了5 – 10問題,先是解釋了每個問題跟目標,然後中間給了我30分鐘去分析資料,然後完成這些問題。

中間就先斷線,我自己在電腦上跑一些分析。

然後30分鐘後,在撥電話給面試官,講解我怎麼分析,跟每個問題的答案。

  • 心得

結果,他們目前在招Principal Data Engineer,所以就跟我說,等年底招Junior的時候,再跟我聯絡,欲哭無淚 QAQ,


Xandr | Senior Software Engineer

一個廣告投放公司,原本叫做App Nexus,後來被AT&T收購。廣告組裡的Data Team。一畝三分地,就僅僅一條面試經驗。

  • Phone Screen:1輪 共20分鐘

一個Head Hunter從LinkedIn inmail問我有沒有興趣。可見LinkedIn多重要!?!

延伸閱讀:[北美求職] #3 LinkedIn教學,提升找工作效率的3個技巧

  • Phone Interview:1輪 共1小時

Hiring Manager(Senior Software Engineer)面試一題Leetcode簡單題,按造解題步驟、講解思維,並且走過幾個Test case。

延伸閱讀:Xandr电面 面經

  • Onsite:5輪 共5小時
  1. Coding: 考Leetcode類似題,但是面試官完全自由發揮,我答的非常差,光是講演算法設計,都沒機會上code。(掛)
  2. Coding & System Design: 考一個Leetcode簡易,很快地就解出來,Test Case全過。
  3. Product Design: 白板設計他們的新系統,從釐清PM的要求,了解目前系統,要整合目前系統,並且設計新的系統的後端。
  4. Hiring Manager: 上次已經聊過了,就繼續聊聊天XD
  5. VP: 一樣也是開心的聊聊天
  6. HR: 關心我一下,整理面試流程體驗,稍微講一下什麼時候會答覆我。

可能是第一輪整個炸掉,我很理所當然地收到了一個Reject。


小科技新創:Tarifica | Software Engineer

我畢業第一份Full Time工作,一個電信顧問新創,提供客戶,各國電信的資料與Benchmark分析。

  • Onsite:3輪,90分鐘
  1. Manger:稍微解釋一下公司是做什麼的。
  2. Software Engineer:給我了一張考試卷,考演算法、Python,大概15分鐘,兩面。
  3. Data Scientist:隨便跟我聊天

有Offer:隔天Manger打給我,收到offer隔週上工。


Rodo | Software Engineer

我的第二份Full Time工作,一間Car Leasing Platform的新創公司,位在曼哈頓。

  • Onsite:3輪,60分鐘

主要問我系統設計,

  1. 如何設計Data Pipeline?
  2. 如何設計error alert?
  3. SQL的基本問題

有Offer:後來CTO當下就問我說,我最快什麼時候可以上工,薪資問題,我就當下獲得了Offer!!!


Click Therapeutics | Software Engineer

一個做digital治療的新創公司,我覺得還滿酷的,一個Head Hunter推給我的。

  • Phone Interview:1輪 45分鐘

Senior Software Engineer面試,考一題類似Leetcode的題目。

我就講解我的想法,開始coding,然後分析我的時間複雜度、空間複雜度,面試官要我實際跑我的code,來確認我的code可以完成問題。

過了一週,我就收到onsite通知。

  • Onsite:2輪 共120分鐘
  1. Coding Session:電話面試,同個面試官,面一個Tree的題目,是一個Leetcode上沒有的題目。難度:中偏難
  2. System Design:設計一個停車場app,從app到DB,到Cache,流量考量。

收到拒絕:我應該是在系統設計上,沒有答的很好。


面試準備常見問題

Q1: 如果要準備刷題,你會建議怎麼開始?

這個問題,會根據你目前的狀態而言,我分為以下5個階段

  • 階段一:還在熟悉一種語言中

會建議挑一個你喜歡的,如果都還沒確定,可以從Python學起,我覺得是裡面門檻相對低。

Python:讓 Python 成為你的第二外語 我來美國前的Python啟蒙課程,從最基礎的語法、結構、簡單的例子,帶你學會Python。我就在當兵的時候,邊上這個課,沒想到之後就靠Python吃飯。
Java:Java Programming Masterclass for Software Developers 從最基礎的環境設置,編輯器,到Java語法,物件導向設計的教學。超過47萬學生上過的課。
C++:Beginning C++ Programming – From Beginner to Beyond 也是從最基礎的環境設置,到基礎C++語法,字串,寫Functions,到最後STL(Standard Template Library),超過9萬的學生,上過的課。

有我的專訪文章,我如何半路出家,從0學習程式。

延伸閱讀:非典型程式人:在太平洋彼岸 看見城式的光芒。程式、還是城市? 他在紐約 看見更多的可能性

  • 階段二:已經熟悉一種語言,從0開始刷題,需要補足DS, Algo知識

這個階段,就是要了解面試時,該注意什麼,除了開始了解Leetcode問題,大概要了解有哪些種類。

我會建議上這個課:Master the Coding Interview: Data Structures + Algorithms

面試導向的教學,裡面涵蓋7個必須知道的資料結構、最常考的4個演算法,超過5萬學生上課的課程。下圖是課程的內容大綱,也是技術面試需要會的內容。

  • 階段三:已經刷過幾題,已經有DS, Algo知識,了解Leetcode的介面

我會建議把Leetcode分成

  1. Array
  2. String
  3. Trees
    DFS
    BFS
  4. Graphs
  5. Linked Lists
  6. Recursion
  7. Sorting&Searching
  8. DP
  9. Design

我目前是這樣分類,按著去分類從easy開始刷題,然後練習medium。

  • 階段三:已經刷過50-100題,想知道怎麼提升效率

如果已經刷了50到100題,大概熟悉了Leetcode題目,並且開始按分類刷題了!

就繼續按著分類刷下去,把每個主題刷熟,並且每次按主題「總結」收穫。

  • 階段四:已經刷過150-200題一次,電話面試該怎麼準備?

我會建議找你的朋友、有面試經驗的朋友,或是已經在公司裡當面試官的朋友,進行Mock Interview。

並且面試前,要在一畝三分地、Leetcode上找面經,提前了解最近公司的面試走向

  1. Mock Interview
  2. 找面經
  3. 練習流程

這個階段,主要練習的是溝通、提問,跟練習將思路講解出來!

  1. 聆聽題目
  2. 覆述確認題目
  3. 提問:
    corner case
    Algo使用
    DS使用
  4. 講解思路
  5. 確認面試官同意
  6. coding
  7. 自己走過一次test case
  • 階段五:已經刷過150-200題一次,已經電話面試過一兩次,想知道回饋

可以再跟有經驗的人Mock Interview,然後將上述的流程熟練。

這時候你可能也會需要練習BQ,也可以將常見的BQ,打在Google Sheet,提升自己的應對能力。

Q2: 如果要準備OOD,你會建議怎麼準備?

我在會建議這個課程:Grokking the Object Oriented Design Interview,比起學校的課程,他是為了面試設計的。(我自己Amazon, MongoDB這兩間公司,就問了我裡面的問題)

這也是我在面試大廠前,問學長姐,他們一致推薦的課程,我自己上完也覺得很有效,面試的時候,也真的面了類似的問題。

所以你可以從0開始,並且了解科技公司面試時,會問什麼問題,快的話,大概一整天可以速速補起來,建議可以花一個週末,或一週準備。

Q3: 如果要準備System Design,你會建議怎麼準備?

我在會建議這個課程:Grokking the System Design Interview,比起學校的課程,他是為了面試設計的。(我自己Amazon, MongoDB這兩間公司,就問了我裡面的問題)

這也是我在面試大廠前,問學長姐,他們一致推薦的課程,我自己上完也覺得很有效,面試的時候,也真的面了類似的問題。

所以你可以從0開始,並且了解科技公司面試時,會問什麼問題,快的話,大概一整天可以速速補起來,建議可以花一個週末,或一週準備。

Q4: 如何提升簡歷,通過簡歷關?

我會建議可以參考:[北美求職] #2 英文履歷的5個原則、履歷範本,美國科技公司注重什麼?

我把我的簡歷拆解成,五大區塊,目前我的簡歷也都有通過大廠的簡歷關,所以希望對你有幫助。

文章裡,也有我錄製「Resume&LinkedIn」講座的影片,可以讓你參考。

如果你需要我幫你改簡歷的話,也可以預約我的「簡歷諮詢服務」,有讀者因此拿到了Facebook Offer。

結論

藉由分享常見的大公司面試(Google面試, Amazon面試)流程,跟我個人許多失敗的經驗,希望可以幫助你,了解市場在考察什麼,當你了解面試都在考察什麼,將可以進一步幫助你準備面試。

這也是為什麼「美國求職」系列,我是先寫面試流程,在寫怎麼準備面試。當了解了面試需要「考察」的內容,我覺得在準備面試過程中,也會更了解要怎麼準備。

  • 了解面試流程
  • 準備面試

下一週,我會寫,如何準備技術面試、非技術面試,這個過程通常需要準備3 – 6個月不等。

本週作業

  • 作業一:瞭解你想申請公司的面試流程

聯絡3個你想申請公司,並且有面試過該公司經驗的朋友、或已經在裡面工作的朋友,了解面試流程。

  1. 想申請的公司
  2. 跟朋友聊聊天

跟有經驗的人學習,總是成長的最快。
紐約工程師Jack

  • 作業二:學習用論壇,來找你申請公司的相關資訊

去Glassdoor或一畝三分地,查面試經驗,來了解公司都會問些什麼樣的問題。

  • Glassdoor
  • 一畝三分地面經版

鼓勵


最後,恭喜你,準備即將要到下個職涯階段,在北美找工作,比較像是一場馬拉松,可能需要提前準備,整個找工作過程也可能1 – 6個月不等。

也許過程中,會跌倒,會收到拒信,但沒關係,再爬起來,繼續奔跑,奔向夢想吧!我自己也是收過很多拒信,一次又一次的提升,我相信你也會找到你心儀的工作的!(共勉之 😀

累的時候,就聽聽歌,休息一下,再回來繼續練習、繼續奔跑,希望這個部落格,可以陪你走過追夢的一哩路!

會員登入 (先登入會員才能回覆留言喔!)
2021校園徵才

想找工作嗎?直接輸入你想要的工作關鍵字,馬上秒搜!

想找工作嗎?直接輸入你想要的工作關鍵字,馬上秒搜!

  延伸閱讀

  職務資訊


我要投稿
icon