คำถามสัมภาษณ์ Data Engineer แยกตามรอบ
โดย Aaron Cao · อัปเดตเมื่อ

รอบสัมภาษณ์ data engineer ครอบคลุม SQL ขั้นสูง, data modelling, การออกแบบ pipeline และ ETL, distributed processing และรอบ behavioral รอบออกแบบ pipeline คือรอบที่ตัดสินผลลัพธ์ส่วนใหญ่ เพราะถามว่าคุณจัดการ late data, reruns และ failures อย่างไร ไม่ใช่ว่าคุณชอบเครื่องมือไหน
การสัมภาษณ์ data engineer มีกี่รอบ
คุณอาจกำลังเตรียมตัวแบบเดียวกับการสัมภาษณ์ software engineering และสงสัยว่ามันต่างกันตรงไหน ส่วนนี้จะแจกแจงรอบที่การสัมภาษณ์เหล่านี้ใช้ซ้ำ ๆ เพื่อให้คุณโฟกัสเวลาไปที่สองรอบที่แยกผู้สมัครออกจากกันจริง ๆ ด่านเทคนิคทั่วไปไม่ค่อยเป็นจุดที่พลาดข้อเสนองาน
- SQL Window functions, deduplication และ query performance ส่วนใหญ่เป็นแบบสด
- Data modelling ออกแบบตารางสำหรับธุรกิจที่ระบุมา แล้วปกป้อง grain ที่คุณเลือก
- การออกแบบ pipeline และ ETL รอบ system design แบบเปิดกว้างที่โฟกัสการเคลื่อนย้ายข้อมูล
- Distributed processing เฟรมเวิร์กรันงานของคุณอย่างไรจริง ๆ และทำไมมันช้า
- Coding Python หรือ Scala มักเบากว่ารอบ software engineering
- Behavioral เหตุการณ์ on call แดชบอร์ดที่พัง และผู้มีส่วนได้ส่วนเสียที่อยากได้ตัวเลขตั้งแต่เมื่อวาน
ชื่อตำแหน่งทับซ้อนกับ analytics engineering และตำแหน่ง platform อย่างมาก ทำให้สัดส่วนคำถามเปลี่ยนไป คลังคำถามตามบทบาทที่เกี่ยวข้องอยู่ที่ฮับ interview questions by role
คำถาม SQL และ data modelling แบบไหนที่ออก
SQL
- Deduplicate ตารางให้เหลือแถวล่าสุดต่อหนึ่ง key เท่านั้น
- เขียน query ที่คืนค่าจำนวน session ของแต่ละ user โดยใช้ช่องว่างการไม่ใช้งาน 30 นาที
- คำนวณ running total และการเปลี่ยนแปลงแบบเดือนต่อเดือนในคิวรีเดียว
- หาแถวที่มีอยู่ใน snapshot ของเมื่อวานแต่หายไปในวันนี้
QUALIFYทำหน้าที่อะไร และถ้าไม่มีมันคุณจะเขียนอย่างไร- คิวรีนี้สแกนข้อมูลเป็นพันล้านแถวและใช้เวลายี่สิบนาที คุณจะวินิจฉัยอย่างไร
- อธิบายความต่างระหว่าง partitioning กับ clustering และแต่ละแบบช่วยตอนไหน
Data modelling
- ออกแบบตารางสำหรับประวัติคำสั่งซื้อของ online marketplace grain ของ fact table คุณคืออะไร
- อธิบาย star schema และเมื่อไหร่ที่คุณจะ denormalise เพิ่มโดยตั้งใจ
- slowly changing dimension คืออะไร และคุณจะ implement type two อย่างไร
- ผู้มีส่วนได้ส่วนเสียต้องการให้รายงานย้อนหลังสะท้อน region ปัจจุบันของลูกค้า อะไรจะพัง
- คุณจะโมเดล event stream ที่มาถึงแบบ out of order อย่างไร
- เมื่อไหร่ที่คุณจะเลือก wide table แทน normalised model
รอบ modelling ให้รางวัลกับการฟันธงเลือก grain แล้วปกป้องมัน ผู้สมัครที่อธิบายสามแบบที่เป็นไปได้โดยไม่เลือกสักแบบมักได้คะแนนแย่กว่าผู้สมัครที่เลือกแบบที่สมเหตุสมผลแล้วระบุจุดอ่อนของมัน
คำถาม pipeline และ distributed processing แบบไหนที่ออก
การออกแบบ pipeline และ ETL
- ออกแบบ pipeline ที่โหลดธุรกรรมรายวันเข้า warehouse เพื่อทำรายงาน
- ต้นทางส่งข้อมูลของเมื่อวานมาซ้ำอีกครั้ง งานของคุณจะเป็นอย่างไร
- คุณทำให้ pipeline เป็น idempotent อย่างไร และทำไมมันสำคัญต่อการ rerun
- คุณจะ backfill ประวัติสองปีโดยไม่รบกวนการโหลดรายวันได้อย่างไร
- ข้อมูลมาช้าปรากฏขึ้นสามวันหลัง partition ปิดแล้ว คุณจะทำอย่างไร
- คุณจะตรวจจับได้อย่างไรว่า pipeline สำเร็จแต่ให้ข้อมูลผิด
- คุณ monitor อะไร และอะไรที่ทำให้มีคน page ตอนตีสาม
Distributed processing และ streaming
- อะไรทำให้เกิด shuffle และทำไมมันถึงแพง
- งานของคุณช้า และมี task หนึ่งใช้เวลานานกว่าที่เหลือมาก เกิดอะไรขึ้น
- อธิบาย data skew และวิธีจัดการสองแบบ
- เมื่อไหร่ที่คุณจะเลือก streaming แทน batch job ตามกำหนดเวลา
- exactly once processing รับประกันอะไรจริง ๆ และไม่เป็นจริงตอนไหน
- watermarks จัดการ out of order events ใน windowed aggregation อย่างไร
สังเกตว่ามีคำถามน้อยมากที่ให้คุณบอกชื่อเครื่องมือ การบอกชื่อเครื่องมือคือจุดเริ่มของคำตอบ ไม่ใช่คำตอบ คำถามต่อเนื่องเสมอคือทำไม และอะไรจะพัง
ควรฝึกซ้อมเรื่องเหล่านี้อย่างไร
การอ่านรายการเหล่านี้สร้างความคุ้นเคย แต่รอบ design ทดสอบสิ่งอื่น คือความสามารถถือระบบไว้ในหัวขณะมีคนขัดจังหวะด้วย failure case ทักษะนั้นได้มาจากการพูดออกแบบออกเสียงเท่านั้น
- วาดและบรรยาย pipeline ภายในสิบห้านาที Source, landing, transform, serve พร้อมบอกว่าแต่ละขั้นตอนพังได้อย่างไร
- โจมตีดีไซน์ของตัวเอง หลังฝึกแต่ละรอบ ให้ถามว่าจะเกิดอะไรขึ้นตอน rerun ตอนข้อมูลมาช้า และตอนเปลี่ยน schema
- เตรียมตัวเลขสำหรับ scale ไว้ให้พร้อม จำนวนแถวต่อวัน ขนาด latency budget การบอก scale ที่สมมติไว้ก่อนคือสิ่งที่ถูกให้คะแนน
- เขียน SQL ด้วยมือ รอบสัมภาษณ์สดมักใช้ editor ธรรมดาที่ไม่มี autocomplete และรันไม่ได้
- ซ้อมเล่าเหตุการณ์หนึ่งเรื่องให้ดี อะไรพัง คุณพบมันได้อย่างไร คุณเปลี่ยนอะไรเพื่อไม่ให้เกิดซ้ำ
Data engineer ที่มีประสบการณ์หกปีกับ batch pipelines เตรียมตัวด้วยการทบทวน internals ของเฟรมเวิร์ก แต่ติดขัดตรง "ต้นทางส่งไฟล์ของเมื่อวานมาซ้ำ" เพราะเธอเคยจัดการมันด้วยมือเท่านั้น ไม่เคยอธิบายมันออกมา ความรู้มีอยู่ แต่คำตอบที่พูดออกมาไม่มี การฝึกรอบ design พร้อมคำถามต่อเนื่องคือสิ่งที่โหมด mock interview ถูกสร้างมาเพื่อสิ่งนี้