內容目錄
Toggle如果你正在尋找 Data Engineer 的工作,或是期待踏入相關領域,ALPHA Camp 蒐集並整理了大量的業界面試流程與常見的面試題庫 40 題,用面試官的角度思考,找出他到底要什麼!並從中了解資料工程師的工作內容是什麼,以及雇主對 Data Engineer 關注的4個能力重點:
- 資料素養與基礎知識
- 資料處理:取得、整理
- 資料分析、建模
- 雲端技術與部署
最後,我們會附上 Data Engineer 面試常見題庫做為結尾。題目內容也收羅了中英文的考題,讓你在面對本地跟外商的面試時,都能有萬全的準備。
知己知彼:從面試官的視角出發
想成為資料工程師,最重要的第一步,莫過於搞懂你應徵的公司跟職位 — 到底要求你具備哪些軟、硬能力?這也是 ALPHA Camp 一直在強調的 #OutcomeFirst —— 「以終為始」的思維。
要理解面試官的視角,第一步就是仔細的看你心儀職缺的 JD(職務敘述)。一份寫得好的 JD 可以幫助你了解雇主想要的人才特質與工作範圍。
從這個角度出發,你能夠看到這間公司對 Data Engineer 這個職位的期待與定義,可以針對這些角度回頭檢視自己的能力;你也會發現,面試官問的問題有 99% 都是從這邊延伸出來,所以這個步驟是相當關鍵的。
這裡給你一個範例,請試著閱讀這份 JD,列出企業的技能需求與工作內容。
從這 19 項敘述中,你看出什麼了呢?
首先是技術能力。這裡看到的應該是大家都能期待的技術關鍵字:
- SQL 以及至少一種的程式語言能力(Java/Python 尤佳)
- 具備基本的軟體與 data engineering 基礎知識
- Hadoop, MapReduce, Hive, Spark 等處理大數據相關工具
- Kubernetes, Docker 等容器平台
在學歷方面,企業希望是資工、量化金融、數學、物理等科系。這表示企業希望應徵者具有基本的資料素養與基礎邏輯思維。
而從工作內容中,我們也可以看出企業對軟實力也有一定的要求:
- 團隊合作——這個 Data Engineer 的位置,會跟客戶分析師與資料科學家合作
- 溝通與文件化 —— 需要具備溝通與技術文件撰寫能力
- 產品的 Ownership —— 從設計開發、架構、到佈署、測試,你將會參與產品的各個流程。所以要對從零到建立整個資料管理系統有一定的概念與經驗。
- 對軟體開發流程有認識 —— 如 continuous integration、TDD、敏捷開發等。
- 縝密的思維邏輯、膽大心細、解決問題 —— 特別提出希望應徵者具有縝密的思維邏輯與細心的特質,並期待進來的人才能輕鬆解決模棱兩可的問題並提出有影響力的解決方案。
這裡要注意的是,很多應徵者都會專注在技術能力的準備。他們認為只要能寫出程式語言、使用相關的工具、套件就可以了。但其實大部分的企業對於軟實力也是相當看重的,面試的時候,請務必能夠提出自己在參與專案上的相關經驗、甚至準備一些情境題,讓面試官了解你具備他們想要的人才特質,替自己加分。
免費點我下載數據技能路線指南
Data Engineer 的角色
另外,從這份工作內容的描述,你會發現 Data Engineer 的守備範圍非常廣。其實在很多企業裡,數據團隊的分工可能比一般的軟體團隊更複雜。
延伸閱讀:如果目前的你還沒有完全踏入 Data 領域,但有志於此,想要更深入了解 Data 團隊的分工與角色職責,推薦你看看 ALPHA Camp 的資料工程師維元老師的文章:資料科學家、資料分析師、資料工程師,實務上如何在資料團隊分工
也因為分工不一定很清楚,很多面試官愛在面試開始時問幾個與 Data Engineer 工作內容有關的題目,來評估你對自己的工作內容,是否有正確的期待。
針對工作內容的詢問重點:
- 你是否清楚 Data Engineer 在團隊角色中的定位
- 你對 Data Engineer 的工作核心與工作順序是否清楚
- 你的溝通/團隊協作能力與經驗
- 你如何拆解問題、是否重視細節
- 你是否了解這間公司的產品,並了解創建產品的思維邏輯
資料工程師薪水
資料工程師的薪水範圍很廣,有時候會跟資料科學家的薪水搞混,但要拿到百萬以上的年薪其實蠻容易看見。下面這個就是Meet.jobs的實際職缺。
面試 Data Engineer 的 4 大重點領域
1. 資料素養與基礎知識
這部分可以說是一個 Data Engineer 在學習中跟工作中一定會用到的部分了。舉凡工作的內容與順序、開發流程等都包含在這個部分。是面試的必考題,也是篩選的第一關。
針對資料素養的詢問重點:
- 你對資料的屬性與定義是否清楚
- 你對於 Python/ Java/ R /SQL 等語法工具的熟悉程度
- 你的統計學基礎
- 你的邏輯以及演算法的熟悉度(這部分可能會用 Leetcode 進行輔考)
2. 資料處理能力
對於 Data Engineer 來說,絕對跑不了的就是硬技術的考題了!
對於資料處理的流程是否熟悉、能不能熟練地使用資料處理的相關工具……這些都在考試範圍內,也佔了面試問題上最大部分的比例,是相當基礎的必考題。
一般的考題會用到 Python、SQL 與 ETL tools。除了 Python 以外,也有許多業界人士使用 R,但目前與未來的趨勢上仍以使用 Python 的人佔多數。
要注意的是,在這部分你只會語法工具是不夠的!更重要的是掌握這些工具的優缺點跟使用邏輯,能根據不同的應用場景,提出合適的解法。
這是從「剛上完課、具備知識的工具人」成為「能思考與實際運用資料處理的專業人士」最關鍵的一步喔!
針對資料處理的詢問重點:
- 能有效的用程式按需求處理資料
- 資料蒐集的能力
- 是否熟悉資料庫運作邏輯
- 能進行資料清理
- 熟悉 feature engineering 的知識與邏輯
- 對 ETL 工具的熟悉程度
3. 資料分析能力
進展到這裡,面試官們對你基礎的能力跟應對進退方面已經大概有底了,通常會決定成敗關鍵的大概就在第三步。
也許有人會問,資料分析跟建模,不是 Data Analyst 的工作嗎?事實上,大多數的企業,不一定會把內部的 Data team 各角色分割得很細,有可能這個 Data Engineer 的職位,會接觸到一部分的分析,以跟其他的團隊成員進行更密切的協作。甚至,這個就是面試官期望的加分能力!
你想想,若你能更同理後續資料被使用/被分析的場景,甚至能做一些初步/前期的分析,讓後續使用資料的團隊(如資料分析師)能更有效率地完成任務,具備這樣條件的你,就能立刻跟其他的應徵者拉出區別。
而在這個階段的工作內容,是需要 Data engineer 在取得資料後,做大量的整理與清洗、將資料視覺化呈現;也會運用許多統計的概念,進行資料的分析跟建模。
因此,應徵者能否具備高效率的工作品質,是面試官判斷的準則。
也因為各家公司的產品需求不同,各角色的職掌也不相同。這時候,請回到第一步,好好閱讀應徵職位的 JD。
在這個區塊,請把握三大技術,進行加強:
- 資料探索與視覺化 Data exploration & visualization
- 資料分析與統計 Data analysis & statistics
- 資料探勘與機器學習模型 Data mining & machine learning model
針對資料分析的詢問重點:
- 是否了解資料視覺化的目的與工作流程
- 是否能有效的使用如 Tableau 等業界常用的工具
- 能否運用統計的概念建立因果模型
- 能否有運用機器學習概念,甚至建立預測模型的經驗
4. 雲端技術&部署
在這一塊,Data Engineer 可以說是真正從「實驗室」走到了真實應用場景,把先前整理分析好的內容與打造的工具落地。許多大企業都會使用雲端工具,因此應徵者在對於雲端工具的使用邏輯與功能上,就需要一定程度的熟悉,甚至是相當的實戰經驗。而 Hadoop, Spark 等更是使用率相當普及的分散式框架,若能事先熟悉常用的功能,在面試時就更能與其他應聘者拉出差距。
在這個區塊,請把握這兩大技術,進行加強:
- 分散式框架如 Hadoop, Spark…
- 雲端工具如 AWS/ Azure/ GCP
針對雲端技術&部署的詢問重點:
- 你對 Hadoop, Spark 的使用經驗與熟悉程度
- 能否針對已建構的模型進行評估與優化
- 對雲端工具如 AWS 等的使用經驗與熟悉程度
- 能否運用雲端工具進行資料的串接
Data Engineer 面試常見題庫
了解過 Data Engineer 面試的四大重點領域後,以下是我們這陣子收集的面試題目:
工作內容與團隊角色
- 請說明什麼是 data engineering。
- 請說明建立一個 data warehouse 所需要的流程。
- 作為一個 data engineer 最重要的技能是什麼?
- 你認為一個 data engineer 在團隊的價值是什麼?
- 你最近是否有在學習新的有關資料處理的技術?請分享一下。
- 在你的想像中,這個職位會遇到哪些困難?你會怎麼處理?
資料素養與基礎知識
- 請問身為 Data engineer 的 core concept 是什麼?
- 請描述你創建新產品的方法。了解創建產品的思維邏輯、掌握 Data engineer 的工作核心、工作順序。
- 請解釋 structured & unstructred data,以及兩者的差別。
- 請問你會怎麼處理以下狀況: backups, failures, fault tolerances。
- 說出 NoSQL, RDBMs, Data Lake 的應用場景。
- 請描述 Data integrity 與 availability。
資料處理能力
- 二進位制字符串相加。
- 承上,若改成十進位制該怎麼做?
- 請提出三種方法,取得 list 中的every third item。
- 爬取博客來前100名的書的資料,包含書名、作者、分類等。最後,請算出分類的統計量,並找到前 5% 折扣的書籍。
- 給你兩個表,上面有許多不同血型的 acceptor 和 donor,請找出 acceptor > donor 的血型。
- 這裏有一張超過百萬筆資料的表格,資料量非常大。我們現在要在這張表格上新增一個欄位,但不希望增加任何 downtime。
- 你會怎麼進行配置?你會怎麼樣進行這件事情?
- 承上,請改用 my sql 回答這個問題。
- 你曾經使用過哪些 ETL tools 呢?你最喜歡哪一種?請敘述原因。
- 什麼是 Fact?他有哪些型態?
- 什麼是 ETL Testing?他跟 database Testing 有什麼不同?
- 請解釋以下有關 ETL 可能面對的 bugs:
- Calculation Bug
- User Interface Bug
- Source Bug
- Load Condition Bug
- ECP-related Bug
- 你會如何提高 ETL 的生產效率?
- Write a regular expression that confirms an email id using the python reg expression module “re”?
資料分析能力
- 過去是否有設計或打造 dashboard 的經驗?有任何作品可以分享?
- 如果給你一份資料,你會想要怎麼呈現?你的工作流程是?
- 請問什麼是 Tableau?他怎麼運作?
- 請解釋 behind-the-scene 概念。
- How calculations work or how a query is processed when a visualization is created.
- 請解釋以下名詞:cardinality, schema, key constraints, normalization, relationship, ERD, data model, entity, join。
- 在 data modeling 中常見的 schema 有哪些?
- 【場景題】這裡是忠孝東路的順成麵包店,請預估它一個月的營業額?
- 【場景題】松山機場一年大概有多少人次進出?
雲端技術與部署
- 你能用 Hadoop 做這些操作嗎?Data ingestion, storage, and processing。
- Hadoop 中 runtime 的某個地方異常的慢或資源用量異常,會是什麼原因?
- 請說明 Hadoop 與 Spark 兩者在技術上與應用上的差別。
- 請敘述部署 dashboards 到 Server 上的流程。
- 如何針對 late、以及 unorder 資料,使用 Dataflow 進行處理?
- 請問 Google BigQuery 是怎麼用的?
- Designing for security and compliance. Considerations include:
- Identity and access management (e.g., Cloud IAM)
- Data security (encryption, key management)
- Ensuring privacy (e.g., Data Loss Prevention API)
- Legal compliance (e.g., Health Insurance Portability and Accountability Act (HIPAA), Children’s Online Privacy Protection Act (COPPA), FedRAMP, General Data Protection Regulation (GDPR))
結語
在看完面試官重點提問整理跟 40 題常見面試題後,你對於接下來的學習路徑跟準備方向,有沒有更清晰了呢?
最後要說的是,永遠沒有 100% 把握的面試,但你可以有 100% 的準備。面試官可以從你回答的態度、思考的邏輯看出你對這次面試的信心。
最後再來一個超重要的 hint:若發現題目不清楚,千萬記得提問。
有些面試官會給出輕巧的情境描述,希望你陳述你思考的邏輯,同時也是在測試,若應徵者發現問題,是否會主動提問與溝通?因為在實際工作中,能主動問問題,是一個員工的重要能力!
因此,若你發現有些問題的內容尚不清楚,例如對方這麼做的目的為何?使用哪個資料庫?還是有什麼資料我可以取得的?—— 要記得先提問,再回答問題。
這不僅顯示你具有縝密的專案思維,也顯示對做這件事情的先後順序與工具邏輯相當清晰,可是能大大加分呢!