Data Engineer 面試題
來自各公司指南的代表性 Data Engineer 面試題,依考察重點分組。它們是備考範例,不是任何公司經確認的題庫。
行為面 (18)
請談談你曾經負責處理一項其他團隊所依賴之資料品質問題的經驗。
請談談你曾負責的資料管線在正式環境中故障的經歷。你採取了什麼行動,之後又有什麼改變?
請描述一次你與利害關係人對資料模型意見不一致的經歷,以及最後如何解決。
每日作業部分失敗後,你會如何確保重新執行是安全的?
請談談你設計過的一個資料模型,該模型在上線後必須進行變更。
請描述你設計過的一個資料模型,它在上線後必須修改。你當初哪裡判斷錯誤?
撰寫一段查詢,找出每台裝置在滾動時間窗內的第一個失敗事件,並說明你會如何測試。
請談談一個上線後必須修改的資料模型,以及你會採取哪些不同的設計。
你會如何確保每晚執行的工作在部分失敗後能安全地重新執行?
請談談你設計過的一個資料模型,而它在上線後必須進行變更。
撰寫一個查詢,找出每部裝置在某個時間範圍內的首次故障,並說明你會如何測試。
你為什麼特別想處理這個團隊的資料問題?
請分享一個上線後必須變更的資料模型,並說明你會採取哪些不同的設計。
請談談一個上線後必須變更的資料模型,以及你會如何以不同方式進行設計。
你為什麼想處理這個團隊的資料問題?
撰寫查詢,找出結算總額與交易總額不一致的帳戶,並說明你會如何測試。
請分享一個由你負責,且其他團隊依賴的資料品質問題。
請談談一個上線後必須變更的資料模型,以及你會如何以不同方式設計。
程式 (8)
請撰寫一段查詢,找出連續數月訂單延遲出貨的客戶,並說明你會如何驗證查詢結果。
撰寫一個查詢,找出連續多日活躍的使用者,並說明你會如何測試。
撰寫一個查詢,找出消費金額逐月增加的客戶,並說明你會如何驗證結果。
撰寫一個查詢,找出連續多日活躍的會員,並說明你會如何測試它。
撰寫一個查詢,找出滾動時間窗內每輛車的首次故障事件,並說明你會如何測試。
撰寫一個查詢,找出每個單元在一個視窗內首次失敗的測量結果,並說明你會如何測試。
QUALIFY是做什麼用的?如果不用它,你會怎麼寫?
什麼是緩變維度?你會如何實作二型?
系統設計 (24)
你會如何設計一條資料管線,以擷取點擊流事件,並讓使用者能在數分鐘內查詢這些事件?
請設計一套系統,從數個地區擷取訂單事件,並讓這些資料可用於每日報表與近即時警示。
設計一條將原始應用程式事件轉換為每日互動指標的資料管線,並說明如何處理延遲一天抵達的事件。
上游的結構描述變更後,某項指標下降了。你會如何判斷這個降幅是否真實?
設計一條資料管線,將數個地區的每日銷售檔案載入同一張報表資料表,並在某個地區資料延遲時避免阻塞其他地區。
下游儀表板顯示的數字與來源系統不符。你會如何找出差異是在哪個環節產生的?
你會在什麼情況下選擇串流設計,而不是排程批次處理?這項選擇會帶來什麼成本?
設計一條資料管線,從數千台裝置收集遙測資料,並讓資料可用於每日報表及臨時分析查詢。
下游團隊表示昨天的總數有誤。你會如何找出資料管線在哪個環節引入錯誤?
你會在何時選擇串流設計而非排程批次處理?這會增加哪些複雜度成本?
設計一條資料管線,將會員活動事件轉換為每日參與度指標,並妥善處理延遲一天抵達的事件。
儀表板顯示數值下降,但來源系統沒有相同情況。你會如何找出差異是在哪個環節產生的?
設計一條資料管線,從數百萬部裝置擷取診斷資料,並讓這些資料可供每日報告查詢及保障隱私的分析使用。
上游結構描述變更後,某項每日指標下降了。你要如何判斷這次下降是否真實?
設計一條資料管線,從龐大車隊擷取遙測資料,並讓這些資料可供每日報表查詢及近乎即時的警示使用。
某個工廠儀表板顯示的總計與來源系統不符。你會如何找出差異是在哪個環節產生的?
設計一條資料管線,將多個來源的付款事件核對並整合至每日分類帳,且絕不可重複計算。
這裡有一條你從未見過的資料管線,以及一個執行失敗的工作。請找出原因。
設計一條資料管線,從多條製造產線收集測試資料,並使其可供每日良率報告與臨時分析查詢。
每日彙總結果與來源系統不一致。你會如何找出資料管線在哪個環節引入了差異?
為一個線上交易市集的訂單歷史設計資料表結構。你的事實表粒度是什麼?
解釋星型模式,以及你什麼時候會主動進一步反正規化。
你會如何讓一個管線具備冪等性?這對重跑為什麼重要?
你會如何偵測出一個管線運作成功了,但產出的資料是錯的?
技術 (31)
請逐步說明訂閱制企業的資料模型,並解釋你會如何處理方案隨時間發生的變更。
某個夜間工作開始產生重複資料列。你會如何找出原因,並防止問題再次發生?
針對報表使用情境,你會如何在批次處理與串流處理之間做出選擇?
面對大型分析資料表,你如何決定哪些內容應進行分割、叢集或建立索引?
你會如何確保回填作業能安全地重新執行,而不會重複計算?
你會在什麼情況下選擇欄式格式而非列式儲存,而這項選擇會帶來什麼代價?
針對產品指標,你會在什麼情況下選擇串流處理而非批次處理?成本又會是多少?
你會如何確保每晚執行的批次工作可以安全地重新執行?
你會如何確保大規模歷史資料回填能安全地重新執行,而不會重複計算?
你會在什麼情況下為產品指標選擇串流而非批次處理?這會帶來哪些成本?
你會如何確保歷史資料回填可安全地重新執行,而不會重複計算?
你會如何確保大規模歷史資料回補可安全地重新執行,且不會重複計算?
如果只有陌生 API 的文件,你會如何在一小時內建立可運作的資料擷取工作?
針對財務報表,你何時會選擇串流而非批次處理?這會造成哪些正確性成本?
你會如何確保大型歷史資料回填能安全地重新執行,而不會重複計算?
針對監控使用案例,你何時會選擇串流處理而非批次處理?其成本是什麼?
這個查詢掃描了十億列資料,耗時二十分鐘。你會如何診斷?
解釋分區(partitioning)和叢集(clustering)的差異,以及各自適用的場景。
某相關方希望歷史報表反映客戶目前所在的地區。這會導致什麼問題?
你會如何為一個亂序到達的事件流建模?
什麼時候你會選擇寬表而不是正規化模型?
上游資料源把昨天的資料又送了一次。你的任務會發生什麼事?
你會如何在不打斷每日載入的情況下回填兩年的歷史資料?
某個分區已經關閉三天後,延遲到達的資料才出現。你會怎麼做?
你會監控什麼指標?凌晨三點會因為什麼而呼叫你?
什麼會導致shuffle?為什麼它的代價很高?
你的任務執行得很慢,其中一個task耗時遠超其他task。發生了什麼事?
解釋資料傾斜(data skew),以及兩種應對方法。
什麼時候你會選擇串流處理而不是排程批次任務?
「恰好一次」處理到底保證了什麼?在哪些情況下它並不成立?
在視窗聚合中,水位線(watermark)是如何處理亂序事件的?