데이터 엔지니어 면접 질문, 라운드별
작성자 Aaron Cao · 업데이트

데이터 엔지니어 면접 루프는 고급 SQL, 데이터 모델링, 파이프라인 및 ETL 설계, 분산 처리, 행동 면접 라운드로 구성된다. 결과 대부분을 좌우하는 것은 파이프라인 설계 라운드로, 어떤 도구를 선호하는지가 아니라 지연 데이터, 재실행, 장애를 어떻게 처리하는지를 묻는다.
데이터 엔지니어 면접 루프에는 어떤 라운드가 있나요?
소프트웨어 엔지니어 면접과 같은 방식으로 준비하면서 무엇이 다른지 궁금할 수 있다. 이 섹션은 이런 면접에서 반복되는 라운드를 정리해, 실제로 후보자를 가르는 두 라운드에 시간을 쓸 수 있게 한다. 기술 필터링에서 오퍼를 놓치는 경우는 드물다.
- SQL. 윈도우 함수, 중복 제거, 쿼리 성능을 보통 라이브로 다룬다.
- 데이터 모델링. 설명된 비즈니스를 위한 테이블을 설계하고, 선택한 그레인을 방어한다.
- 파이프라인 및 ETL 설계. 데이터 이동에 초점을 맞춘 개방형 시스템 설계 라운드.
- 분산 처리. 프레임워크가 실제로 작업을 어떻게 실행하는지, 그리고 왜 느린지.
- 코딩. Python이나 Scala로, 소프트웨어 엔지니어링 라운드보다 가벼운 경우가 많다.
- 행동 면접. 온콜 인시던트, 고장 난 대시보드, 그리고 어제까지 수치를 원했던 이해관계자.
직무 명칭은 애널리틱스 엔지니어링이나 플랫폼 계열 역할과 크게 겹치므로 구성이 달라진다. 관련 역할별 질문 모음은 역할별 면접 질문 허브에 있다.
SQL과 데이터 모델링 질문은 어떤 것이 나오나요?
SQL
- 테이블을 중복 제거해 키마다 가장 최근 행만 남긴다.
- 30분 비활성 간격을 사용해 사용자별 세션 수를 반환하는 쿼리를 작성한다.
- 누적 합계와 전월 대비 변화를 한 쿼리에서 계산한다.
- 어제 스냅샷에는 있지만 오늘 스냅샷에는 없는 행을 찾는다.
QUALIFY는 무엇을 하는가, 그것 없이는 어떻게 작성하겠는가?- 이 쿼리는 십억 행을 스캔하고 이십 분이 걸린다. 어떻게 진단하겠는가?
- 파티셔닝과 클러스터링의 차이를 설명하고, 각각 언제 도움이 되는지 말한다.
데이터 모델링
- 온라인 마켓플레이스의 주문 이력을 위한 테이블을 설계한다. 팩트 테이블의 그레인은 무엇인가?
- 스타 스키마를 설명하고, 언제 의도적으로 더 비정규화할지 말한다.
- 천천히 변하는 차원이란 무엇인가, 그 두 번째 유형을 어떻게 구현하는가?
- 한 이해관계자가 과거 리포트에도 고객의 현재 지역이 반영되기를 원한다. 무엇이 깨지는가?
- 순서가 뒤바뀌어 도착하는 이벤트 스트림을 어떻게 모델링하겠는가?
- 정규화된 모델보다 넓은 테이블을 선택하는 것은 언제인가?
모델링 라운드는 그레인을 정하고 그것을 방어하는 자세에 점수를 준다. 가능한 설계 세 가지를 나열만 하고 하나도 고르지 않는 후보자는, 합리적인 설계 하나를 골라 그 약점을 짚는 후보자보다 낮은 점수를 받는다.
파이프라인과 분산 처리 질문은 어떤 것이 나오나요?
파이프라인 및 ETL 설계
- 일별 거래 데이터를 리포팅용 웨어하우스에 적재하는 파이프라인을 설계한다.
- 업스트림 소스가 어제 데이터를 다시 보냈다. 당신의 작업에는 무슨 일이 일어나는가?
- 파이프라인을 멱등하게 만드는 방법은 무엇이며, 그것이 재실행에 왜 중요한가?
- 일별 적재를 방해하지 않으면서 두 해치 이력을 어떻게 백필하겠는가?
- 파티션이 닫힌 지 사흘 뒤에 지연 도착 데이터가 나타난다. 어떻게 하겠는가?
- 파이프라인이 성공했지만 잘못된 데이터를 만들어냈다는 것을 어떻게 탐지하겠는가?
- 무엇을 모니터링하며, 새벽 세 시에 누군가를 호출하는 것은 무엇인가?
분산 처리 및 스트리밍
- 셔플을 일으키는 원인은 무엇이며, 왜 비용이 큰가?
- 작업이 느리고 하나의 태스크만 나머지보다 훨씬 오래 걸린다. 무슨 일이 벌어지고 있는가?
- 데이터 스큐를 설명하고, 이를 다루는 두 가지 방법을 말한다.
- 예약된 배치 작업 대신 스트리밍을 선택하는 것은 언제인가?
- 정확히 한 번 처리는 실제로 무엇을 보장하며, 어디에서 성립하지 않는가?
- 윈도우 집계에서 워터마크는 순서가 뒤바뀐 이벤트를 어떻게 처리하는가?
이 질문들 중 도구 이름을 대라고 요구하는 것이 얼마나 적은지 눈여겨보라. 도구 이름을 대는 것은 답의 시작일 뿐, 답 그 자체가 아니다. 뒤따르는 질문은 언제나 왜, 그리고 무엇이 깨지는가이다.
이런 질문은 어떻게 연습해야 하나요?
이 목록들을 읽으면 익숙함은 생긴다. 하지만 설계 라운드가 시험하는 것은 다른 능력이다. 누군가 장애 사례로 끼어드는 동안에도 시스템 전체를 머릿속에 유지하는 능력이다. 그것은 설계를 소리 내어 말해봐야만 생긴다.
- 열다섯 분 동안 파이프라인을 그리고 설명한다. 소스, 랜딩, 변환, 서빙, 그리고 각 단계가 어떻게 실패하는지.
- 자신의 설계를 공격한다. 연습할 때마다 재실행, 지연 데이터, 스키마 변경 시 무슨 일이 일어나는지 자문한다.
- 규모에 대한 숫자를 준비해 둔다. 하루 행 수, 크기, 지연 예산. 가정한 규모를 먼저 말하는 것이 점수로 이어진다.
- SQL을 손으로 작성한다. 라이브 라운드는 자동완성도 실행도 없는 평범한 에디터를 쓰는 경우가 많다.
- 인시던트 이야기 하나를 제대로 리허설한다. 무엇이 깨졌는지, 어떻게 발견했는지, 재발하지 않도록 무엇을 바꿨는지.
배치 파이프라인에서 여섯 해를 일한 어느 데이터 엔지니어는 프레임워크 내부 구조를 복습하며 준비했지만, "업스트림 소스가 어제 파일을 다시 보냈다"는 상황에서 막혔다. 그는 그것을 손으로 처리해본 적만 있을 뿐 말로 설명해본 적이 없었기 때문이다. 지식은 있었지만 입으로 하는 답은 없었다. 후속 질문을 곁들여 설계 라운드를 연습하는 것이 바로 모의 면접 모드가 만들어진 이유다.