Companies
Airbnb Data Engineer Interview Questions & Process (2026)
— docs/Airbnb Data Engineer Interview Questions & Process (2026).pdf
Airbnb의 Data Engineer 인터뷰 루프는 다른 상위권 회사 대비 데이터 모델링과 비즈니스 감각(business acumen)에 매우 큰 비중을 두는 것이 특징이라고 저자는 말한다. SQL·코딩만 깔끔해도 별도로 배정된 60분짜리 데이터 모델링 라운드와 비즈니스 어큐먼 라운드에서 떨어지는 지원자를 여러 번 봤다는 것이 저자의 관찰이다. 채용 프로세스는 리크루터 스크린부터 오퍼까지 보통 4~6주가 걸리며, 하이어링 매니저 라운드까지 포함하면 6~7개 라운드에 이르는 비FAANG 기업 중 손꼽히게 긴 루프라고 소개한다.
| # | 단계 | 형식 | 소요 시간 | 평가 항목 |
|---|---|---|---|---|
| 1 | Recruiter Screen | Phone call | 30 min | Role fit, comp, visa, team mapping |
| 2 | Technical Phone Screen | Video call | 60 min | SQL + 데이터 모델링 개념 |
| 3 | Onsite Loop | 5~7 rounds, 45~60 min each | 1일(분산 가능) | SQL, Coding, Data Modeling, System Design, Business Acumen, Culture, HM |
| 4 | Debrief & Decision | Internal — 전체 인터뷰어 + hiring committee | 영업일 5~7일 | 종합 hire/no-hire 결정 |
예약 테이블(booking_id, guest_id, listing_id, check_in, check_out, status)과 리스팅 테이블, 호스트 테이블이 주어진다. 2025년 기준 각 호스트의 fill rate(예약된 밤 수를 총 가용 밤 수로 나눈 값)를, 호스트가 된 지 첫 90일 이내에 해당하는 밤에 한정해 계산하라. 그다음 각 마켓(도시) 내에서 fill rate로 호스트 순위를 매겨라.
호스트별 파티션의 야간(night) 단위로 예약을 확장하는 CTE를 만들고, 호스트 온보딩일 기준 90일 윈도우로 조인한 뒤 가용 밤 수를 세는 분모를 구성하고, 마지막으로 마켓 내 순위를 매기는 윈도우 함수를 적용하는 식으로 접근한다. SQL 문법만 암기하고 분모 구성 자체를 고민해보지 않은 지원자를 걸러내는 유형의 문제라고 저자는 설명한다.
코딩 내내 사고 과정을 계속 말로 설명한다. "예약을 밤 단위 1행으로 확장한 뒤 호스트의 첫 90일로 필터링하고 집계하겠습니다"처럼. 저자는 조용히 코딩만 하면 인터뷰어가 사고 과정을 볼 수 없어 no-hire로 이어질 수 있다고 강조한다.
"이건 Pandas로 하겠습니다"나 "저희 애널리틱스 팀이 이런 쿼리를 담당했습니다" — 이 라운드에서는 SQL을 깊이 있게 다루지 못한다는 신호로 읽힌다.
booking_id, status(requested/confirmed/modified/cancelled/completed), event_ts, 그리고 check_in/check_out이 담긴 payload를 가진 예약 이벤트 딕셔너리 스트림을 받는다. 일부 이벤트는 순서가 뒤바뀌어 있고 일부는 중복이다. 각 예약의 최종 상태(가장 최근의 유효한 체크인/체크아웃 포함)를 반환하는 함수를 작성하라.
상태 관리, 뒤늦게 도착하는 이벤트, 멱등적 처리를 시험하는 실전 DE 문제로, LeetCode식 퍼즐이 아니라고 저자는 설명한다.
코드를 쓰기 전에 엣지 케이스부터 질문한다 — "취소된 이후에 수정 이벤트가 오면 어떻게 처리하나요? 두 이벤트의 타임스탬프가 같으면요?" 이런 질문을 던지는 지원자는 이미 다른 지원자들과 차별화된다고 저자는 강조한다.
"Airbnb의 예약 비즈니스용 데이터 모델을 설계하라. 호스트 분석, 게스트 리텐션, 마켓별 매출 리포팅을 지원해야 한다" / "Airbnb의 검색 경험용 데이터 모델을 설계하라. 검색 랭킹 분석, 전환 퍼널, search-to-book 어트리뷰션을 지원해야 한다" / "Airbnb의 가격 시스템용 데이터 모델을 설계하라. 일별 가격 추적, 호스트 가격 결정, 다이내믹 프라이싱 실험을 지원해야 한다"
저자가 제시하는 프레임워크: (1) 5~7분간 이 모델이 답해야 할 비즈니스 질문을 명확히 하고 웨어하우스 레이어인지 서빙 레이어인지 확인, (2) 3분간 그레인을 한 문장으로 정의하고 고려했던 대안 그레인과 기각 이유를 설명(예약 단위 vs 야간 단위 vs 이벤트 단위), (3) 10분간 팩트 테이블 스케치 — 트랜잭션 팩트(fact_booking), 누적 스냅샷(fact_booking_lifecycle), 주기적 스냅샷(fact_listing_availability_daily) 등 필요에 따라 여러 개, (4) 15분간 차원 스케치(dim_listing, dim_host, dim_guest, dim_date, dim_market, dim_payment_method) — dim_listing은 가격·상태 변경 이력이 매출 리포팅에 중요하므로 거의 항상 Type 2로 설계하는 것이 맞다고 저자는 설명, (5) 10분간 모델에 대한 2~3개 쿼리(예: 예약 시점 가격을 포함한 리스팅별 전환율, 가입월별 게스트 코호트 리텐션)를 실제로 짚어보며 그레인 실수를 검증.
"비즈니스 질문부터 시작해서 그레인을 정의하고, 팩트 테이블을 스케치한 다음 차원을 스케치하고, 마지막에 몇 개 쿼리로 검증하겠습니다"
"모든 걸 하나의 넓은 테이블로 비정규화하겠습니다" — 실제 프로덕션 서빙 레이어에서는 맞을 수 있지만, 이 라운드는 스타 스키마 설계 추론 능력을 보는 자리이므로 비정규화 버전은 마지막에 최적화 방안으로만 언급하는 것이 좋다.
"Airbnb의 메트릭 플랫폼(Minerva 같은)을 설계하라" / "A/B 테스트용 실험 데이터 파이프라인을 설계하라" / "검색 랭킹 데이터 파이프라인을 설계하라" / "다이내믹 프라이싱 데이터 인프라를 설계하라"
(1) 5~7분 요구사항 확인 — 어떤 데이터를 서빙하는지, 소비자가 필요로 하는 지연 수준, 일별 리포트인지 준실시간 대시보드인지. (2) 3~5분 백오브엔벨로프 추정 — 일별 예약/검색 건수, 이벤트 크기, 스토리지 증가량. (3) 10~15분 상위 아키텍처 스케치 — Ingestion → Processing → Storage → Serving → Metrics layer, Kafka/Spark/Hive/Airflow/Presto/Minerva를 이름으로 명시. (4) 15~20분 인터뷰어가 지목한 영역 심화 — 백필, 스키마 진화, 데이터 품질, exactly-once vs at-least-once, 늦게 도착하는 데이터. (5) 5분 트레이드오프 — 예: "생태계 때문에 Airflow를 선택했지만 초단위 스케줄링이 필요하면 이벤트 드리븐 방식을 고려하겠다".
"이 데이터는 무엇을 서빙하나요? 소비자가 필요로 하는 지연은? 일별 리포트인가요, 준실시간 대시보드인가요?"로 5~7분간 요구사항부터 확인한다.
"Snowflake를 쓰겠습니다" — Airbnb는 자체 Hive+Presto+Spark+Airflow 스택을 운영하므로, Snowflake 자체가 틀린 답은 아니지만 회사 리서치를 안 했다는 신호로 읽힐 수 있다. 언급하려면 곧바로 오픈소스 스택과의 트레이드오프로 짚고 실제 회사 선택을 인정하는 편이 좋다.
"Airbnb에서 호스트 품질을 어떻게 측정하겠는가?" / "예약량이 전주 대비 5% 감소했다. 어떻게 조사하겠는가?" / "'성공적인 Airbnb 숙박'을 정의하고 어떻게 측정할지 설명하라" / "제품팀이 새로운 가격 기능을 출시하려 한다. 이를 평가하기 위해 어떤 지표를 추적하겠는가?"
지표 정의형 질문: (1) 목표를 명확히 한다(랭킹용인지, 호스트 코칭용인지, 마케팅용인지), (2) 후보 지표 2~3개와 트레이드오프를 제시, (3) 1~2개를 주 지표로 선택해 분자/분모/기간/제외 조건을 정확히 정의, (4) 엣지 케이스(신규 진입자, 이상치, 세그멘테이션)를 인지한다. 조사형 질문: (1) 기준선을 명확히 하고(전주 대비인지, 작년 동기 대비인지, 기대치 대비인지), (2) 분해해서 어떤 하위 지표가 움직였는지 찾고, (3) 전체 마켓/특정 지역, 디바이스, 리스팅 티어별로 세그먼트하고, (4) 계절성·릴리스·검색 랭킹 변경·가격 변경·경쟁사 움직임 등 가설을 제시하고, (5) 각 가설을 데이터로 어떻게 검증할지 설명한다.
"품질이 무엇을 의미하는지, 이 지표가 어떤 의사결정을 지원하는지부터 명확히 하겠습니다. 그다음 후보 지표 2~3개를 제시하고 트레이드오프를 짚겠습니다."
"매출과 활성 사용자 수를 추적하겠습니다" — 마켓플레이스 역학을 고민하지 않았다는 신호로 읽히는 전형적인 답변이다. Airbnb는 fill rate, 예약 전환율, 호스트 응답률, 재예약률, 공급 활용도, instant-book 비중 같은 구체적 지표를 기대한다.
"데이터 사이언티스트와 지표 정의를 두고 이견이 있었던 경험은? 어떻게 해결했는가?" / "데이터가 준비되지 않아 PM의 요청을 반려해야 했던 경험은?" / "이해관계자가 당신의 데이터를 근거로 내린 결정이 결국 틀렸던 경험은? 어떤 일이 있었는가?" / "왜 하필 Airbnb인가?"
"왜 Airbnb인가"는 형식적인 질문이 아니다. 마켓플레이스 데이터, 미션, 혹은 지원 중인 특정 팀에 대한 구체적이고 진지한 답을 기대하며, "큰 회사에서 일하고 싶다" 같은 일반적인 답변은 잘해야 소극적인 통과에 그친다고 저자는 지적한다.