Airbnb 是全球短租 / 旅行賽道的代表,面試也帶著濃重的「run + test + follow-up」工程文化:每道題寫完必須能跑、必須有測試、必須能接住 follow-up。這不是 LeetCode 提交按鈕模式——你需要在 IDE 裡完成除錯。這篇文章把 Airbnb 面試拆成 5 個階段、3 道高頻題、1 個系統設計,全部按真實流程節奏給出解法和應對模板。
五階段總覽
W0 Initial Screening: Resume → 30 min HR phone (背景 + 期望 + base)
W1 OA HackerRank: 60-90 min, 2-3 道演算法 (LC Medium 改造)
W2 Electronic Interview: CoderPad 1-2 輪,每輪 45 min
W3 Onsite VO 4-6 輪:
├─ Coding × 2 (45 min each)
├─ System Design × 1 (60 min)
├─ Behavioral × 1 (Cultural Fit + STAR)
└─ Cross-functional × 1-2 (跨 PM / Eng Manager)
W4 Decision + offer call
整個流程 4-5 週。Airbnb 招聘節奏比 FAANG 慢但更注重 cultural fit——你 50% 機率會和創辦人級別(或 VP 級)面試。
階段 1 — HR Screen(30 min)
招聘 manager 看的兩點:
- 履歷亮點:旅行 / 電商 / 推薦系統經驗是加分項
- expectations alignment:base / 遠端 / 期望開始時間
回答模板:
- 履歷講故事:「在 X 專案裡我把 Y 指標提升 Z」
- 期望薪資:給一個 base + RSU 區間,不要單數字
- 遠端:明確說能不能搬 SF / 週幾 onsite
階段 2 — OA HackerRank(60-90 min)
通常 2-3 道 LC Medium 難度,主題包括:
- 字串處理(housing description NLP)
- 圖遍歷(city graph routing)
- 優先佇列調度(booking conflict resolution)
cutoff 大約 70% AC + 1 題全 AC。Airbnb OA 沒有 hidden monster case,但要求每題寫完跑過幾個 sample——HackerRank 的 console.log 輸出會被 reviewer 看到。
階段 3 — CoderPad 電面(1-2 輪,45 min/輪)
Airbnb 的特色:每道題都要 寫完 → 跑測試 → 答 follow-up。三步必須都做完才算完整。
高頻題 1:Zigzag Matrix Print
題面:給 M × N 矩陣,按 zigzag 順序列印(不是普通水平列印)。
1 2 3 → 1, 2, 3, 6, 5, 4, 7, 8, 9
4 5 6
7 8 9
def zigzag_print(matrix: list[list[int]]) -> list[int]:
out = []
for i, row in enumerate(matrix):
if i % 2 == 0:
out.extend(row)
else:
out.extend(reversed(row))
return out
複雜度:O(M·N)。
Follow-up:
- 「如果不讓用 reversed()?」→ 用雙指標手寫翻轉
- 「如果是 spiral zigzag(邊界先轉)?」→ 改成模擬方向陣列
- 「記憶體敏感場景如何 streaming?」→ generator 輸出
階段 4 — Onsite VO(4-6 輪)
Coding 輪 1:Listings Subset Optimization(Hard)
題面:給 N 個 listings,每個有 id / neighborhood / capacity。在指定 neighborhood 中選若干 listings,使總 capacity ≥ groupSize,優先 listings 數量最少,其次總 capacity 最少(避免浪費)。回傳 listing id 列表。
核心思路:雙維度 DP / 列舉。先按 capacity 倒序貪心選 listings 數量最少,再二維 DP 在固定數量下找 minimum capacity。
def select_listings(listings: list[dict], neighborhood: str, group_size: int) -> list[int]:
pool = [l for l in listings if l["neighborhood"] == neighborhood]
pool.sort(key=lambda x: -x["capacity"])
# Step 1: 找最小 listings 數量
cap_sum = 0
min_count = 0
for i, l in enumerate(pool):
cap_sum += l["capacity"]
if cap_sum >= group_size:
min_count = i + 1
break
if cap_sum < group_size:
return []
# Step 2: 在 min_count 數量下找 minimum capacity
n = len(pool)
INF = float("inf")
from itertools import combinations
best_cap = INF
best_combo = None
for combo in combinations(range(n), min_count):
cap = sum(pool[i]["capacity"] for i in combo)
if cap >= group_size and cap < best_cap:
best_cap = cap
best_combo = combo
return [pool[i]["id"] for i in best_combo] if best_combo else []
複雜度:組合列舉 O(C(n, k)·k),可最佳化為 DP O(n · group_size)。
Follow-up:「n = 1000 時 combinations 會爆,怎麼辦?」→ 改成 0/1 knapsack DP。
Coding 輪 2:Task Scheduling with Deadline(Medium)
題面:給一組任務,每個任務有 id / deadline / reward。每個任務佔 1 天。安排執行順序使所有任務在 deadline(含)前完成且總 reward 最大。回傳執行順序和最大 reward。
核心思路:貪心 + 優先佇列。按 deadline 升序排序,遇到 deadline 緊的任務先入堆,堆滿(size > deadline)則彈出 reward 最低的任務。
import heapq
def schedule_tasks(tasks: list[dict]) -> tuple[list[int], int]:
tasks_sorted = sorted(tasks, key=lambda t: t["deadline"])
heap: list[tuple[int, int]] = [] # (reward, id)
for t in tasks_sorted:
heapq.heappush(heap, (t["reward"], t["id"]))
if len(heap) > t["deadline"]:
heapq.heappop(heap) # 彈出 reward 最小
total = sum(r for r, _ in heap)
order = [tid for _, tid in sorted(heap, key=lambda x: x[1])]
return order, total
複雜度:O(n log n)。
System Design 輪:Airbnb Listing Search
題面:設計 Airbnb 房源搜尋系統,處理百萬級房源,要求低延遲、支援過濾(價格、位置、人數)。
60 min 框架:
05 min Clarify scope: QPS / 房源規模 / 過濾維度數
05 min Data model: listing schema + index strategy
10 min Indexing: ElasticSearch 倒排索引 + geohash
10 min Caching: Redis 熱門 query / popular city pre-warm
10 min Query path: API gateway → search service → ES → ranking → filter → result
10 min Ranking: relevance + rating + price + booking history
05 min Failure modes: ES node down, cache miss storm
05 min Follow-up: real-time inventory / partial availability
關鍵設計點:
- 分片策略:按 geohash 分片,熱門城市單獨 shard
- 快取層:Redis 存 top 100 query × city 組合
- 資料一致性:listing 更新通過 event bus 非同步同步到 ES(30s 內最終一致)
- 複雜度:搜尋 O(log n) on ES,快取命中 O(1)
Behavioral / Cultural Fit 輪
Airbnb 有 6 條 core values,最常考的兩條:
- Be a host — "你怎麼讓團隊 / 使用者感到被 welcome?"
- Embrace the adventure — "你最近一次走出 comfort zone 是什麼?"
每道 BQ 準備 STAR 模板,每個故事必須有一段 host / hospitality 的細節——Airbnb reviewer 會專門評估這一點。
Situation: 我接手 X 專案時,team morale 較低
Task: 作為 onboarding 負責人,我要讓新人快速 ramp up
Action: 我建立了 buddy 系統、weekly office hours、問題 doc
Result: 新人 ramp time 從 6 週降到 3 週,retention 提升 20%
Reflection: 這件事讓我意識到「being a host」不只是歡迎,而是持續 enable
Cross-functional 輪
通常和 PM / Eng Manager 聊。重點是 storytelling 和「跨職能溝通」:
- "如果一個 PM 想砍掉你認為重要的 feature,你怎麼辦?"
- "講一個你和 Designer 意見不合的專案"
應對:用 layman 語言(不要 DS 行話),先理解對方動機,再用資料 / 實驗做收口。
三條職缺線的 VO 差異
| 職缺線 | Coding 題型 | System Design |
|---|---|---|
| Backend SDE | 資料結構 + Hard DP | Listing Search / Booking |
| Frontend | DOM tree + state mgmt | UI rendering optimization |
| Full-stack | 字串 + 圖 | API gateway design |
VO 輔助怎麼對接 Airbnb
Airbnb VO 的難點是「run + test + follow-up + cultural fit」四件套都要做完。VO 輔助 / VO代面 的標準節奏:
- 職缺線判定:JD + recruiter call 摘要,5 分鐘內判定 SDE / Frontend / Full-stack 線
- CoderPad 實戰訓練:每道題寫完 → 跑測試 → 答 follow-up 三步走
- 限時 mock:45 min × 4 / 5 onsite 節奏擬真,含 system design 60 min
- 現場 cue:onsite 當天 reviewer 後台推 follow-up 對接 / SD 框架
- Cultural fit 模板:6 條 core values 各配 1 個 STAR 故事,重點 "be a host"
FAQ
Q1: Airbnb 真的會讓創辦人面試嗎? A: 不是創辦人本人(Brian Chesky 已不親面),但 Director / VP 級別有 30% 機率。這一輪重點是 cultural fit,不是技術。
Q2: OA 沒全 AC 還能進 CoderPad 嗎? A: 1 題全 AC + 1 題 70% AC 仍可能進。但 2 題都低於 50% 幾乎必拒。
Q3: System Design 一定考 Listing Search 嗎? A: 50% 機率。其他常見題:Booking system / Pricing engine / Review aggregation。三類都要練。
Q4: Cultural Fit 輪失利會被刷嗎? A: 會。Airbnb 的 cultural fit 是一票否決項,即便技術全綠燈也可能 reject。
Q5: Airbnb NG 的 base 大概多少? A: SDE NG base 約 $170-180K + 股權 + sign-on,Total comp 第一年約 $260-300K。
寫在最後
Airbnb 面試不是「比誰刷題多」,而是「比誰能在 IDE 裡完整寫一個 production-ready 函式 + 把自己包裝成一個 host」。如果你正在準備 Airbnb 的 OA 或 VO,可以微信 Coding0201 聯繫,傳職缺 JD + 目前流程節點截圖,先做職缺線判定,再排 VO 輔助 / VO代面 節奏。
需要面試真題? 立刻聯繫微信 Coding0201,取得真題。
聯絡方式
- 微信:Coding0201
- Email: [email protected]
- Telegram: @OAVOProxy