2022北美找工作 Experienced Hire — Data Engineer Part 1

Joe Liang
20 min readDec 24, 2021

--

本文分成兩部分,想寫給在台灣/海外已經有工作經驗,且鎖定Mid-level / Senior-level / Staff-level / Lead-level的北美求職者。本篇我將會分享我在美國申請Experienced Position of Data Engineer職缺的經驗,包含前期準備、面試過程到最後薪資福利談判的歷程。

正文開始之前先解釋一下自定義的EP與NP:

EP (Experienced Position):3年以上工作經驗的職缺,如 Mid-level / Senior-level / Staff-Level / Lead-level positions

NP (New Grad Position):剛畢業或0–2年工作經驗的新鮮人職缺

求職結果:

送213份申請,收8個Final Round,走完5個Final Round,5個Offer。
1. Disney — Lead Data Engineer (2021/11)
2. Packable — Lead Data Engineer (2021/11)
3. Freddie Mac — Senior Data Engineer (2021/11)
4. Monachil — Senior Data System Engineer (2021/11)
5. Silicon Valley Commerce — Technical Program Manager (2021/10)

最終決定:Disney
(本文也會稍微提到Expedia,CapitalOne,Amazon的面試資訊)

個人背景:

CMU — MISM BIDA,5年工作經驗:
-台灣金融業儲備幹部 2 years
-台灣金融業Data Engineer 2 years
-美國新創 Technical Program Manager 1 year (Part-time)

首先大家內心肯定都有一個疑問:「有沒有身份對於找工作差很多嗎?」我分享一下我的觀察。

有身份的求職者確實在就業市場上有幫助,但是對中小公司影響比較大。在中小公司中拿到面試的機會比較高,但對大公司來說,我認為實力跟運氣還是遠大過身份。以大公司的經驗來說,同學(包含我)投了Facebook EP/NP ,也透過內部referral申請,但還是在當週連面試都沒有就被直接拒絕。Apple也有請人refer,但也被發無聲卡。Amazon提供EP的面試機會,但也在面完後立刻收到拒絕信表示面試表現沒達到期待。

此外,像Facebook今年頒布了求職需要有身份的政策,大家會問這個影響大嗎?我認為確實也有影響。不過就我所知,身邊仍有很多無身份的同學拿到Facebook Offer。所以我認為大公司還是非常看求職者的面試表現以及當時有沒有缺。美國很多規矩都是能被打破的,如果讓Hiring Manager想要你,剛好那個時間又有缺, 都還是有機會的。因此不要預設立場,先投就對了。

求職時間軸:

  • 2021/08 整理Data Engineer Skillsets 、更新CV、整理JD
  • 2021/09 投沒興趣的公司、刷題、整理過去專案及技術
  • 2021/10 投有興趣的公司、面試
  • 2021/11 面試、收到Offer
  • 2021/12 談判Offer、終止面試

職缺種類&求職策略:

以下分享職缺種類比較及2個求職策略

EP v.s. NP

EP
職缺釋出時間:晚、較即時,期待1–2個月內onboard
競爭者數量:少,會被考慮的求職者通常要符合JD上面的工作年數
Team Match:通常是特定的team在招人,team match多在面試之前安排好

NP
職缺釋出時間:早,時間比較固定,會有一些program讓學生面試隔年的缺
競爭者數量:多,大家工作經驗多落在0–2年
Team Match:通常先選進來,再選team(return offer可能會直接進入原team)

這些是大方向比較,當然在美國有很多特殊情況。根據我個人經驗發現EP、NP在實際面試中有不少差異,比如說NP的Data Engineer面試會著重在coding skills,EP的Data Engineer除了coding skills之外看更多的是你的工作經驗有沒有貼近team正在做的事情。

求職策略1: 專注一種職缺類型 v.s. 同時準備多種職缺類型

我會建議一次準備一種職缺就好。美國職缺分非常細,像是分析(Business Analyst,Data Analyst)跟工程(Data Engineer,Software Engineer)在面試準備上就差很多,Technical Program Manager跟Product Manager甚至會考完全不同的問題。我相信多數人都會希望能投就多投,這沒什麼問題,但建議專注準備一種職缺方向,畢竟以後都還可以轉職,也很少人第一份工作就會做一輩子 。但集中一個方向準備,對自己來說時間也比較充裕,準備起來也比較容易。

我當初就鎖定了Data Engineer、Data Scientist、Technical Program Manager,還天真地以為自己有縮小準備範圍。同時又準備了分析,工程以及技術經理的skills。但由於每個領域都只碰一點點,面試官只要稍微問細一點就容易掛掉,後來我才調整策略,專注在Senior Data Engineer,才比較能準備進階的問題。

求職策略2: 投缺順序

我相信準備找工作的大家一定也知道,先投不重要的公司練習,把想要的公司面試盡可能往後放。我求職時雖然也採舉這樣的策略,但並不如想像中順利,在此分享一下個人的經驗:

原定策略:9月下半投沒興趣公司 → 10月上半投有興趣公司 & Refer
實際情況:10月上半無面試消息 →10下半先收有興趣公司面試,才陸續收到小公司面試

我雖然按照策略先投小公司,但還是先面試到大公司。後來找前輩討論後,推測還是太晚投給沒興趣的公司了。此外如果是透過內部refer通常人資回覆會較快,因此要做好隨時會開始面試的準備。這些變化導致我都直接和有興趣的公司練習面試,導致很多問題來不及修正,像是phone call沒聽懂對方的問題 / 沒理解面試官講的technical terms / live coding太緊張無法發揮。這些都是透過實際面試後,慢慢修正才獲得改善,但也已經錯失很多有興趣的公司的機會。所以我會建議再早一點開始投次要的公司,並早點找同學或校友做mock interview。

你很難事先準備好所有的問題,早點上戰場才會知道缺點在哪裡,累積一些經驗後,才能夠好好發揮你的實力。

Data Engineer面試種類(EP/NP皆適用)

Data Engineer會遇到的面試網路上介紹很多了,有些就不多解釋直接分享經驗跟建議。

1. Online Assessment(以下簡稱OA)
NP比較多會有這關,EP比較少。幾個我有收到的公司如Uber、Expedia、CapitalOne。常見的平台如HackerRank、CodeSignal。

*準備方向: 刷題! 此外,一畝三分地是寶典。我通常寫OA前會去一畝搜尋該公司的OA考古,論壇有很多熱心的人會”分享心得”,有時候你還有可能看到熱騰騰的版本,就不方便言傳,大家自行去搜尋看看。

2. Recruiter/Hiring Manager Phone Interview
EP基本上從這關開始,這邊跟NP最大差別在於Recruiter/Hiring Manager在這就會看你適合哪個team,有的會直接Team Match,省略很多Behavior Questions(以下簡稱BQ),直接問過去的專案跟經驗,看有沒有符合他們的需求,再決定要不要讓你跑面試流程。

*準備方向: 熟悉CV並準備好Stories。通常這關面試官會打開你的CV問問題,所以準備好每個Project/Skill的Stories很重要。另外,客製化自介也會有幫助,面試前看過該職缺的工作內容,調整自介,有Match到的Skill就在自介時強調。若讓面試官聽到一些關鍵字有Match到,就可能會提高Recruiter讓你跑面試流程的機率。

3. Live Coding / Technical Screen Interview
這一關我覺得EP跟NP是差不多的,不太會因為你是投EP就給Leetcode Hard Level的題目,我整體遇到蠻多Easy Level,所以我認為這關還是在確認基本Coding能力。此外,也看求職者怎麼跟面試官溝通,我遇到蠻多Coding完就繼續問你CV Skillsets的Technical Questions,所以基本上每一關都會想要知道你的經驗有沒有符合他們Team的需求。

*準備方向: 絕對要找人練習!找同學、找朋友、找校友都可以。自己刷Leetcode跟模擬面試完全是不同世界,請好好練習對別人說明自己的想法,把面試官當作合作的同事一同解決問題,不要把對方晾在一旁。如果你在練習時自己擔任面試官,而模擬面試的人埋頭打程式,你就能感受到有討論跟沒討論的巨大差異。面試官大多是很樂意跟你討論以及給提示的,一定要多問多討論。

4. Final Round
Final Round是最能分辨NP跟EP的環節,一般有4–5關,會考的種類有System Design、Live Coding、Technical Questions跟BQ。其中System Design是EP最最重要的一關,Data Engineer的面試主要以這關來分辨求職者適任Mid-level 或Senior-level/Staff-level/Lead-level positions。

*準備方向: Live Coding就跟前面的考法類似,System design / BQ / Technical Questions可以參考我下一段的Data Engineer Skillset準備。這裡就分享幾間大公司的Final Round流程。Final round真的會很累,面試到後面會懷疑人生的那種累。聽說有些人會把Final Round分好幾天,在這裡我建議盡量讓公司安排同一天,一來是長痛不如短痛,二來是讓公司方便在同個時間評估你的表現。以下Final Round流程是By Team,但不是整間公司都遵從一樣的流程,僅供大家參考:

Disney — Lead Data Engineer: 1 Coding / 1 System Design / 3 Technical Questions, BQ
Packable — Lead Data Engineer: 1 Coding / 1 System Design / 2 Technical Questions, BQ
Expedia — Sr. Data Engineer: 3 Coding / 2 Technical Questions, BQ
(已決定offer,主動放棄)
CapitalOne — Sr. Data Engineer: 2 Coding / 1 System Design / 2 Technical Questions, BQ (已決定offer,主動放棄)
Amazon — Data Engineer: 2 Coding / 2 Technical Questions + BQ
(已決定offer,主動放棄)

Data Engineer要準備什麼

以下內容以EP的Data Engineer為主,NP也可參考,Data Engineer要準備的skill項目我認為跟Software Engineer、Data Scientist、Data Analyst、Product Manager比起來相對多且雜,不同公司要求的Data Engineer可能不同,這裡我列出的skills會分成General Data Engineering Skills / Big Data Engineering Skills,項目蠻多,稍微挑重點講述。

[General Data Engineering Skills]

1. SQL
必備,主要環節:
A. Aggregation: Join / Groupby / Window functions
B. Subquery: 建議練習用CTE (Common Table Expression)較清楚也容易解釋
C. Conditions: Where / Order by都常考
練習網站:
A. Leetcode、HackerRank: 適合練function,建議計時
B. StrataScratch: 個人推薦當實戰用,題目很像面試會遇到的類型
備註:
知道概念後務必做題練習,我是把常用function都整理成自己的note,不熟或卡住就一直回去看note並反覆更新。

2. Python / Data Structure & Algorithm(以下簡稱DS&A)
必備,會把Python跟DS&A放在一起是因為我面試都用Python寫DS&A,怕語言的寫法會搞混,這樣比較一致就不用換語言。如果你投的Data Engineer是在Software Development部門的話,DS&A必考,但不需要像準備Software Engineer的人瘋狂練code,畢竟Data Engineer還有很多Skillset要準備,把DS&A想成清單內的其中一件事就好,不需要逼自己刷到Medium/Hard Level。我建議好好做Easy Level,再次強調EP在這關只是想知道基本Coding能力,與其刷一千題不如找同學、校友好好模擬Live Coding練10題,練習在別人面前寫程式。

Python Functions:
我強力推薦w3resource,在我準備Python的過程中這個網站像活水一般,即便之前工作用Python,但function太多還是很容易忘。這個網站把function、Python package分門別類,當發現哪個function/package不熟時,就去該區塊加強並練習題目。必練的function/package像是Pandas、處理Missing Value、處理Time Data、Python Data Type (List,Set,Dictionary…etc.)。

DS&A:
好好刷Leetcode Easy Level,行有餘力再去刷Medium Level。但我建議有多的時間就拿來準備其他skillset。Array Manipulation & HashMap是我面試最常遇到的題型。另外,也可以練習HackerRank、CodeSignal上面的題目順便熟悉Platform。很多Technical Screen Interview都是用這兩個網站上機考。

3. BQ / Stories
必備,非常重要的一環,準備EP的面試比起NP,會更看重過去經歷跟Leadership Experience。

BQ:
我遇到比較多的是Leadership Questions,比如說Most difficult situation as a project leader / How do you deal with conflicts when leading a team / How do you coach team members if they are not familiar with new technical skills。面試官大多期望投 EP的求職者要有Leadership經驗,想要知道你要怎麼帶一群工程師解決問題、完成任務。

Stories:
為什麼要有Stories來解釋過去經驗?你要做好CV裡面的每個Project跟Skill都會被問到,也要準備好任何Follow-Up Questions,準備例子是最好的闡述方式,面試官大多還是喜歡聽例子,比較能理解你做過什麼,也比較能讓他知道你這段經驗適不適合這個缺。也就是說,如果你能因應JD提供對應的例子,就能提高加分的可能性。但切記絕對不要捏造故事,講自己實際做過的事情就好。你可以稍微誇大表現,但千萬不要空講。

這兩塊我的準備方式是去學校的Career Service找人練習,2–3 hours/week的頻率加強英文表達能力。透過模擬面試是最有幫助的,也能練習讓自己有邏輯地回答。

4. Data Model & Database
可以準備Data Model Design、Schema Design(Star vs Snowflake)以及一些Database Concepts: Structured Data vs Unstructured Data、DataMart、Data Warehouse、RDBMS、ER Model、Normalization。可以Google其中一個詞 + Interview Questions去看一些top N Interview Questions。我在面試Amazon/Packable Data Engineer時,遇過面試官要我設計Data Model 然後用SQL Query設計好的model,除了這種考法之外其他遇到都是偏Conceptual Questions。

5. ETL & SDLC
把這兩塊放一起是因為都比較偏實務經驗,通常就是問你有沒有做過ETL,有沒有跑過整段SDLC的流程 — 從理解需求,開發到上線,有什麼失敗的經驗,怎麼處理。這邊也是建議講自己真的有做過的,如果工作沒有相關經驗,可以分享在學時做的小Project或者Side Project。EP面試蠻常遇到這類的問題,可見EP Data Engineer還是很看重這類的實務經驗。

6. System Design (主要是EP的面試會有,NP不太考)
EP必備,通常是Final Round有1–2關,是很多公司的Bar Raiser,公司常用這關表現決定你適任Mid-Level,Senior-Level or Lead-Level positions。

坦白說,這關我剛開始也很沒有把握,但很幸運地是我以前的工作接觸過地端/雲端的資料架構設計,找了許多資深前輩聊過後,我把以前做過的專案架構全部整理過,並標記什麼樣的需求可以使用什麼架構,兩個月不斷反覆找人練習系統設計的流程,這關是我花最多時間在準備的,但就結果來說也最有價值。

我認為System Design之所以是Bar Raiser是有道理的。Senior/Lead Positions需要知道很多Services/Tools,更重要的是,了解業務需求後,要怎麼決策該選擇哪個Services,並且讓團隊成員及老闆都認為很合理。一個設計會遇到非常許多質疑與挑戰,每個業務單位關注面向都不同,比如Data Flow更新速度夠不夠快,資料安不安全,除錯機制完整性,有沒有更好的Service取代,有多少成本考量。比我更有經驗的人太多了,所以我的策略就是盡可能把面試遇到的設計題目拉到我比較熟悉的領域,後面我會分享我面試的實際例子作為參考。

但如果你沒有實際架構設計的經驗也沒關係,在這裡提供一些線上影片,我認為對設計流程的思考脈絡蠻有幫助。個人建議的總結就是 — 把接觸過的架構整理起來並找人多練習流程,即使不是你自己設計的也沒關係,並練習自己熟悉的架構,同時反覆看影片熟悉流程,整理影片上提出的問題,想像如果今天你遇到了,要怎麼設計這個架構來解決問題。

InterviewBit : 有互動式介面可以練習System Design流程

Success in Tech, Exponent : 影片介紹各大公司產品的System Design

System Design Interview : 影片介紹System Design常見問題

[Big Data Engineering Skills]

1. Big Data & Large-Scale Computing (Hadoop & Spark)
建議把Hadoop / Spark原理弄熟,要解釋得出Hadoop 常用Components (HDFS,Hive,Yarn, HBase)以及MapReduce Process。另外,可以整理Hadoop vs RDBMS的差異。Spark 則是整理常用Transformation/Action functions,RDD怎麼運行,Cache/Broadcast如何使用。我比較常遇到是問Conceptual Questions跟使用經驗,如果這個EP的team常用到Spark就可能會以Live Coding的方式考Spark RDD or SparkSQL 來看你怎麼處理大量資料。我僅有遇到兩間公司有考Spark Live Coding,不常見但還是建議練習寫Spark程式以備不時之需。

2. Cloud Services & Engineering
EP必備,EP的Data Engineer很常被問有沒有Cloud Experience,System Design也可能會直接請你用Cloud Services設計Infrastructure。建議熟悉市面上至少一種Cloud Services(AWS、GCP、Azure),這幾家都有提供Free Credit試用。雲端資源現今很容易接觸到,除了工作跟上課,強烈建議做Side Project架在雲上面練習開機器使用Cloud Services。公司通常會把Cloud Experience放在加分項(Preferred Requirements)並列出主要用的雲,但不要覺得你只用過GCP就不能投只用AWS的Team,這幾個雲提供的服務不會差太多,公司不會因為你用不同服務就認為你不適任。

此外,公司通常不會突然轉換整個架構到別的雲,所以你可以提早先看有興趣的公司用什麼雲端服務,如果沒有接觸過就自己設一個Side Project去玩看看。提前準備一些實務經驗是很重要的。舉例來說,我個人常用AWS,但當我看到幾個有興趣公司是用GCP,而面試過程中剛好學校的產學合作(Capstone Project)需要跑大量資料,所以我就去跟教授提議開虛擬機器在GCP上面跑資料建模型,逼自己去熟悉服務並且嘗試設計架構,面試問到GCP時就可以把這些經驗分享給面試官。

3. Exploration Analysis / Machine Learning / Statistics
EP建議行有餘力再準備就好,雖說Data Engineer不太碰到分析與統計,但市面上的Data Engineer涵蓋的技能還是蠻廣的。有些公司會將分析經驗當作加分項,有些公司定義的Data Engineer會需要做Exploration Data Analysis。懂一些統計,ML模型在工作上其實是很有幫助。Data Engineer在資料預處理時如果先討論好模型要用的Data Type及Data Cleaning的方式,合作上會更有效率一些。

此外,在設計該模型要用的Data Pipeline時,如果熟悉建立模型End to End的流程,在設計上也比較能考量到更廣泛的面向。網路上有很多資源,在這邊就不佔篇幅,推薦StatQuest的影片,對於理解ML Model / Statistics的概念還蠻淺顯易懂。

4. Other Technical Skills
稍早有提到,Data Engineer Skillset多且雜,還需要準備什麼Skill就看你有興趣Team的工作內容,統整一下常見需要的Skill去加強。我建議還可以準備的Skills像是Kafka、Airflow、Docker、Git。準備面向可分為概念與實務,端看你要準備多深入。比如我當時有興趣的Team蠻多把Airflow當作加分項,但我以前工作跟學校沒有用到,所以找工作的時候我就簡單做一個Side Project,每天去Basketball Reference抓新的球賽數據到自己電腦,概念上就去看網路上分享的Airflow架構,實務上用Airflow管理整個Project Workflow並自己試寫DAG,過程中找熟悉Airflow的朋友討論遇到的問題。面試中當有被問到Airflow時,我就可以闡述這段經驗以及遇到什麼問題,怎麼解決。不要小看Side Project,即便Scope非常小,重點還是在於讓面試官知道你有用過並且你有心去學新技術,我相信在面試官心中是加分的。

Part 1到此,Part 2將接著分享我在Disney以及Packable的實戰面試經驗、拿到Offer後的談判以及找工作的心態

--

--