미들 데이터 엔지니어 면접 질문
미들 데이터 엔지니어 면접의 핵심, 자주 나오는 질문, 그리고 즉시 AI 피드백으로 연습하는 방법.
미들 레벨에서 기대되는 것
모델링, 오케스트레이션, 독립적인 파이프라인 운영이 요구됩니다.
데이터 엔지니어 면접 질문 예시
- 코딩부서별로 두 번째로 높은 급여를 찾는 SQL 쿼리를 작성하세요.좋은 답변이 다루는 것
- DENSE_RANK() 윈도우 함수 사용
- 동점 처리 (같은 급여가 여러 명일 때)
- 서브쿼리 또는 CTE로 랭킹 계산
- NULL 값과 빈 부서 처리 고려
- LIMIT 기반 접근의 오해
샘플 답변 보기
두 번째로 높은 급여를 구하려면 DENSE_RANK() 윈도우 함수를 사용하는 것이 가장 적절합니다. ROW_NUMBER()는 동점을 무시하고 순서를 매기지만, DENSE_RANK()는 동점에 같은 순위를 부여하고 다음 순위를 연속적으로 매깁니다. 따라서 부서별로 급여를 내림차순 정렬한 후 DENSE_RANK()로 순위를 매기고 순위가 2인 행만 선택하면 됩니다. 서브쿼리나 CTE를 사용하며, 부서에 직원이 1명뿐이면 결과에서 제외되어야 합니다. 일반적인 실수는 LIMIT 1 OFFSET 1을 사용하는 것인데, 이는 전체 테이블에서 두 번째만 가져오므로 부서별로 적용되지 않습니다.
참고 코드sql SELECT department_id, employee_id, salary FROM ( SELECT department_id, employee_id, salary, DENSE_RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rnk FROM employees ) ranked WHERE rnk = 2; -- DENSE_RANK()를 사용하여 동점인 경우에도 정확히 두 번째로 높은 급여를 가져옴 - 기술 면접ETL과 ELT의 차이와 각각을 언제 사용하는지 설명하세요.좋은 답변이 다루는 것
- 변환 시점: ETL은 로드 전, ELT는 로드 후
- 스키마: ETL은 스키마 온 라이트, ELT는 스키마 온 리드
- 데이터 볼륨: ELT가 대용량에 적합
- 워크로드: ETL은 변환 서버 부담, ELT는 데이터베이스 부담
- 사용 사례: ETL은 정형 데이터, ELT는 비정형 및 반정형 데이터
샘플 답변 보기
ETL은 데이터를 추출한 후 별도의 변환 서버에서 변환을 마친 뒤 데이터 웨어하우스에 로드하는 방식입니다. 이는 정형 데이터와 엄격한 데이터 거버넌스가 필요할 때 적합하며, 스키마 온 라이트 방식이므로 데이터 품질을 로드 전에 보장할 수 있습니다. ELT는 원시 데이터를 먼저 데이터 레이크나 웨어하우스에 로드한 후, 필요할 때 변환을 수행합니다. 스키마 온 리드 방식으로 데이터 탐색에 유연하며, 클라우드 기반 MPP 데이터베이스(예: BigQuery, Snowflake)에서 강력한 컴퓨팅 성능을 활용할 수 있습니다. 대용량 반정형 데이터나 민첩한 분석이 필요할 때 ELT를 선호합니다. 선택 시 고려할 점: ETL은 변환에 시간이 오래 걸릴 수 있지만 데이터 웨어하우스 부하를 줄이고, ELT는 저장 비용이 낮지만 변환 시 컴퓨팅 비용이 높을 수 있습니다.
- 기술 면접안전하게 재실행할 수 있는 멱등 파이프라인을 어떻게 설계하나요?좋은 답변이 다루는 것
- 결정론적 처리로 동일 입력에 동일 출력 보장
- 고유 키와 Upsert를 통한 중복 제거
- 체크포인트 및 오프셋 저장으로 실패 지점에서 재시작
- 워터마크를 이용한 이벤트 시간 기반 경계 처리
- 파티션 재처리가 동일 결과를 내도록 설계
샘플 답변 보기
멱등 파이프라인을 설계하려면 각 레코드에 고유 식별자를 부여하고, 쓰기 작업은 삽입 대신 UPSERT(예: INSERT ON CONFLICT UPDATE)를 사용하여 동일 키가 들어오면 갱신하거나 무시하도록 해야 합니다. 상태나 집계 결과는 외부 저장소(예: Redis, 데이터베이스)에 결정론적으로 저장하며, 체크포인트를 주기적으로 기록하여 실패 시 해당 지점부터 재시작할 수 있게 합니다. 스트리밍의 경우 워터마크를 사용하여 이벤트 시간 기준으로 윈도우를 처리하고, 같은 시간 범위를 다시 처리해도 동일한 결과가 나오도록 보장합니다. 예를 들어 Apache Spark Structured Streaming에서 .trigger(once)를 사용하면 배치 모드로 재실행 시 멱등성을 유지할 수 있습니다. 주의할 점은 랜덤 함수나 현재 시간에 의존하는 로직이 있으면 멱등성이 깨지므로, 이러한 경우 외부에서 주입된 고정 값을 사용합니다.
- 기술 면접스트리밍 파이프라인에서 늦게 도착하는 데이터를 어떻게 처리하나요?좋은 답변이 다루는 것
- 이벤트 시간 vs 처리 시간 이해
- 워터마크를 통한 윈도우 완료 결정
- allowedLateness 설정으로 늦은 데이터 허용
- 사이드 출력으로 늦은 데이터 분기 처리
- Stateful 처리에서 업데이트 메커니즘
샘플 답변 보기
스트리밍 파이프라인에서 늦게 도착하는 데이터는 이벤트 시간과 처리 시간의 차이 때문에 발생합니다. 이를 해결하려면 이벤트 시간 기반 처리를 사용하고 워터마크를 설정하여 시스템이 얼마나 기다릴지 결정합니다. Apache Beam이나 Flink에서는 .withAllowedLateness(duration)을 사용하여 지정된 시간까지 늦게 도착한 데이터를 기존 윈도우에 포함시킬 수 있습니다. 늦은 데이터가 허용 시간을 초과하면, 사이드 출력(side output)으로 보내 별도의 배치 작업으로 보정 처리하거나, 최종 뷰를 업데이트하는 전략을 사용합니다. 예를 들어, '일 매출 집계' 작업에서 워터마크를 1시간으로 설정하고, 그 이후 도착한 데이터는 별도 테이블에 기록한 후 다음 날 일괄 보정합니다. 주의할 점은 allowedLateness를 너무 길게 설정하면 메모리 부담이 커지므로, 비즈니스 요구사항과 지연 허용 시간을 균형 있게 조정해야 합니다.
- 코딩윈도우 함수를 사용해 7일 이동 평균을 계산하세요.좋은 답변이 다루는 것
- ORDER BY와 ROWS BETWEEN 사용
- 7일 범위: 6 PRECEDING AND CURRENT ROW
- 파티션 불필요 (전체 대상)
- 데이터 누락 시 RANGE vs ROWS 차이
- NULL 처리: NULL 값은 윈도우 계산에서 기본 제외
샘플 답변 보기
7일 이동 평균을 계산하려면 AVG 윈도우 함수에 ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW를 지정합니다. 이는 현재 행을 포함하여 이전 6개 행, 총 7개 행의 평균을 구합니다. 데이터에 날짜가 빠진 경우 ROWS BETWEEN은 물리적 행 수를 기준으로 하므로, 만약 모든 날짜가 일별로 존재한다면 문제없지만, 중간에 날짜가 비어 있으면 실제 7일이 아닐 수 있습니다. 이 경우 RANGE BETWEEN INTERVAL '6' DAY PRECEDING AND CURRENT ROW를 사용하면 날짜 간격을 기준으로 정확히 7일 이내의 모든 행을 포함합니다. 코드는 다음과 같습니다.
참고 코드sql SELECT sale_date, revenue, AVG(revenue) OVER ( ORDER BY sale_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW ) AS moving_avg_7days FROM daily_sales; -- 실행 계획: 윈도우 함수로 전체 테이블 스캔 후 정렬 필요, O(n log n) 정렬 비용 - 시스템 설계이커머스 기업의 분석을 위한 데이터 웨어하우스를 설계하세요.좋은 답변이 다루는 것
- 업무 요구사항: 주문, 고객, 상품 분석
- 스타 스키마: 사실 테이블과 차원 테이블
- 팩트 테이블: 주문 팩트, 판매 팩트
- 차원 테이블: 시간, 고객, 상품, 매장, 배송
- 확장성: 파티셔닝, 클러스터링, 컬럼 저장소
샘플 답변 보기
이커머스 분석 데이터 웨어하우스는 다음과 같이 설계합니다. 먼저 핵심 비즈니스 프로세스인 '주문'과 '상품 조회'에 대한 사실 테이블을 만듭니다. fact_orders에는 order_id, customer_key, product_key, date_key, store_key, quantity, unit_price, discount_amount를 포함하고, fact_page_views에는 session_key, product_key, date_key, view_count를 포함합니다. 차원 테이블은 dim_customer, dim_product (카테고리 속성 포함), dim_date (연, 월, 일, 주차, 분기), dim_store, dim_promotion 등으로 구성합니다. 스타 스키마를 채택하여 조인 성능을 최적화합니다. 데이터 볼륨이 크다면 날짜별로 파티셔닝하고 자주 조인되는 컬럼(예: customer_id)으로 클러스터링을 적용합니다. 실시간 대시보드가 필요하면 ELT 방식으로 원시 데이터를 먼저 로드하고, 필요한 집계를 뷰나 머터리얼라이즈드 뷰로 생성합니다. 일반적인 실수는 과도한 정규화로 조인 비용이 증가하는 것이므로, 적절한 비정규화가 필요합니다.
- 행동 면접발견하고 고친 데이터 품질 문제에 대해 말해 주세요.좋은 답변이 다루는 것
- 구체적인 사례: 널 값으로 인한 레코드 누락
- 영향: 매출 보고서 정확도 하락
- 탐지: 데이터 프로파일링 및 이상치 모니터링
- 해결: ETL에 coalesce 및 유효성 검사 추가
- 사후: 자동 데이터 품질 체크 도입
샘플 답변 보기
제가 경험한 데이터 품질 문제는 일일 매출 리포트에서 일부 지역의 판매 데이터가 누락되는 것이었습니다. 원인을 추적한 결과, ETL 조인 과정에서 외래 키가 NULL인 레코드가 있어서 해당 조인이 실패하고 레코드가 누락되었음을 발견했습니다. 영향은 영업팀이 해당 지역의 매출을 과소평가하게 되어 의사결정에 오류가 발생했습니다. 해결 방법은 ETL 스크립트에 COALESCE를 추가하여 키가 NULL인 경우 기본값을 할당하고, 조인 전에 널 값을 체크하여 별도 테이블에 로깅한 후 수동 처리할 수 있도록 변경했습니다. 이후에는 데이터 파이프라인 시작 전에 데이터 프로파일링 작업을 추가하여 널 비율, 중복, 도메인 위반 등을 자동으로 감지하고 알림을 보내도록 했습니다. 이 경험을 통해 데이터 품질 모니터링은 단순히 에러 로그만 보는 것이 아니라 비즈니스 임팩트를 기준으로 우선순위를 정해야 한다는 것을 배웠습니다.
- 행동 면접파이프라인 신뢰성과 새 요청의 우선순위를 어떻게 정하나요?좋은 답변이 다루는 것
- 영향도 기반 우선순위: 데이터 손실 vs 신규 기능
- SLA 위반 시 즉시 조치
- 비용-편익 분석: 파이프라인 중단 비용 vs 기능 가치
- 기술 부채 상환과 예방적 유지보수
- 이해관계자와의 명확한 커뮤니케이션
샘플 답변 보기
파이프라인 신뢰성과 새 요청의 우선순위를 정할 때는 먼저 비즈니스 임팩트를 평가합니다. 데이터 손실이나 잘못된 보고서를 초래하는 신뢰성 이슈는 최우선으로 처리하며, 특히 SLA 위반이 발생할 경우 다른 모든 작업을 중단하고 해결에 투입합니다. 새 기능 요청은 그 가치와 개발 비용을 비교하여, 신뢰성 이슈가 없을 때만 접수합니다. 또한 정기적으로 기술 부채를 관리하여 사전에 문제를 예방하는 데 일정 비중을 할애합니다. 예를 들어, 주간 스프린트에서 30%는 신뢰성 및 데이터 품질 개선 작업에 할당하고, 나머지는 새 기능 개발에 사용합니다. 긴급한 신뢰성 이슈가 발생하면 우선순위를 즉시 재조정하고, 이해관계자에게 상황과 예상 복구 시간을 투명하게 공유합니다. 일반적인 실수는 모든 요청을 동등하게 취급하는 것이므로, 비즈니스 가치와 위험을 정량화하는 의사결정 프레임워크를 갖추는 것이 중요합니다.
면접관이 평가하는 것
SQL
윈도우 함수, 조인, 쿼리 최적화, 실행 계획.
데이터 모델링
스타/스노우플레이크 스키마, 파티셔닝, 천천히 변하는 차원.
파이프라인
ETL/ELT, 오케스트레이션, 멱등성, 백필.
배치와 스트리밍
Spark, Kafka, 지연 시간과 처리량 사이의 트레이드오프.
데이터 품질
검증, 리니지, 지연되거나 중복된 데이터 처리.
준비 방법
- SQL을 날카롭게 하세요 — 윈도우 함수와 최적화는 거의 모든 면접 루프에서 나옵니다.
- 파이프라인 설계는 멱등성, 재시도, 백필로 시작하세요.
- 데이터 품질과 리니지를 먼저 언급하세요. 프로덕션 성숙도를 보여 줍니다.
자주 묻는 질문
데이터 엔지니어 면접에는 SQL이 얼마나 필요한가요?
아주 많이 — 조인, 윈도우 함수, 최적화를 다루는 여러 SQL 라운드가 흔히 현실적인 스키마에서 나옵니다.
데이터 엔지니어링 면접에는 어떤 시스템 설계가 나오나요?
데이터 웨어하우스, 이벤트 파이프라인, 배치/스트리밍 아키텍처 설계로 파티셔닝·멱등성·데이터 품질에 주의를 기울입니다.
데이터 엔지니어링 면접을 어떻게 준비하나요?
매일 SQL을 연습하고, 파이프라인 설계를 소리 내어 연습하며, 모의 면접으로 트레이드오프 설명을 리허설하세요.
데이터 엔지니어 질문을 AI의 즉각적인 피드백으로 연습
Offersly는 당신의 이력서와 목표 직무에 맞춘 모의 면접을 진행하고, 모든 답변을 관련성·깊이·명확성·정확성으로 채점합니다.