一畝三分地「DoorDash」板塊在最近一個招聘季基本是週更幾十帖的節奏。SDE / Data Scientist / Data Engineer / Marketplace Strategy 各種職位都在出新面經,但是地裡的帖子有幾個一致的問題:
- 資訊片段化——每帖只貼 1–2 道題,看不出整體流程
- 真假混雜——同一道題不同人寫出截然不同的解法,難判斷標準答案
- 臨場表達細節缺失——拿到題之後到底每分鐘該說什麼,沒有人講
這篇把過去這段時間一畝三分地(1point3acres)板塊上真實落到 offer的兩條主流路徑——SDE Backend 與 Data Scientist——按時間順序複盤一遍,每個階段都給你地裡貼到的真題、對應程式碼、臨場該說的話,以及 VO 輔助 / OA 輔助具體在哪一步介入。
一、DoorDash 這家公司在地裡到底什麼定位?
先把背景說清楚,避免你拿不準期望值:
- 薪資帶寬:地裡 NG SDE 總包多在 200–230k 區間,Senior 在 360–450k。比 Meta / Google 略低,但比 Uber 高。
- 題難度:地裡普遍認為 DoorDash 題難度 ≈ Uber,比 Instacart 高,比 Stripe 低。
- 業務感:100% 題都和外送業務掛鉤,「closest restaurant」、「最近 dasher」、「配送 ETA」、「recommendation」是關鍵詞。
- Sponsor:地裡觀察 H1B sponsor 給得正常,部分組對 GC / 公民有偏好。
如果你剛開始關注 DoorDash,建議先看一遍我們 DoorDash 5 條 pathway 指南把入職路徑摸清楚,再來看這篇的實戰複盤。
二、SDE Backend 路線:從地裡熱門貼還原完整流程
階段 1:Recruiter Call(地裡高頻回饋)
地裡 SDE 候選人對 recruiter call 的最一致評價是:問得不深,但問得很多。一通典型電話覆蓋:
- 你 vs DoorDash tech stack 的匹配(Kotlin / Go / Python / gRPC / Kafka)
- 是否有 Marketplace / on-demand 類專案經驗
- Visa 狀態、灣區 / NYC / Seattle 優先順序
- "Why DoorDash"——必須能講出業務感(不要只說「喜歡點外送」)
VO 輔助介入點:用 30 分鐘跑一次 recruiter call sim,重點是把「為什麼 DoorDash」答到 marketplace dynamics 這一層。
階段 2:HackerRank OA(地裡最常貼)
OA 形式:HackerRank,90 分鐘,2 題。地裡近期最高頻的兩道:
真題一:findNearbyRestaurants
實作
findNearbyRestaurants(userLocation, allRestaurants, maxDistance, minRating),先按距離過濾再按評分過濾,最後按距離升序、評分降序排序後返回。
這道題地裡貼出來的版本至少有 4 個 follow-up 變體:
- 加上 categories 過濾(要不要支援 OR / AND 語意)
- 改成 streaming 輸入(不能一次拿全部 restaurants)
- 距離從歐幾里得改成 haversine(球面距離)
- 海量資料下要不要用 R-tree / 空間索引
參考實作(預設歐幾里得 + 離線全量):
from math import sqrt
def find_nearby_restaurants(user_loc, restaurants, max_distance, min_rating):
ux, uy = user_loc
def dist(r):
dx = r["x"] - ux
dy = r["y"] - uy
return sqrt(dx * dx + dy * dy)
filtered = []
for r in restaurants:
d = dist(r)
if d <= max_distance and r["rating"] >= min_rating:
filtered.append((d, -r["rating"], r["name"]))
filtered.sort()
return [name for _, _, name in filtered]
時間複雜度:O(n log n) 空間:O(n)
地裡典型踩雷:不問 tie-breaking 直接開寫,寫完發現「評分降序」和預設升序衝突;以及距離用 manhattan 寫而面試官要的是 euclidean。
真題二:Closest Straight City
給一組城市座標,每個 query 找到與給定城市同行或同列且歐幾里得距離最近的城市;同距離取字典序最小。
這道題在我們 DoorDash 一畝三分地面經彙總文裡有完整程式碼。OA 階段考察重點不是演算法本身,而是預處理 vs 單 query 的取捨——能不能想到按行/列分桶 + bisect。
OA 輔助介入點:OA 開始前把這兩道題的所有 follow-up 變體過一遍;OA 期間透過共享螢幕做即時輔助(輸入對齊 / 複雜度盤點 / edge case 提醒)。
階段 3:Phone Screen(45 min, 1 題)
地裡 SDE phone screen 高頻題:
- LC 200 / 695 系列(Number of Islands / Max Area)
- LC 815(Bus Routes,BFS)
- 自訂「最近 dasher / 最近 dashmart」——本質多源 BFS
- LC 1235(Maximum Profit Job Scheduling,DP + 二分)
地裡回饋最多的踩雷:寫完程式碼沉默等回饋。DoorDash phone screen 的面試官幾乎都會主動等你提 test case,如果你不主動,他預設你不會處理 edge case。
階段 4:Onsite Loop(4 輪)
| 輪次 | 內容 | 時長 | 地裡觀察通過率 |
|---|---|---|---|
| Coding 1 | 演算法 + 業務包裝 | 45 min | ~50% |
| Coding 2 | 偏 design 的 coding(Rate Limiter / TTL Cache 等) | 45 min | ~45% |
| System Design | DoorDash 業務系統 | 45 min | ~40% |
| Behavioral | DoorDash 4 大價值觀 | 45 min | ~60% |
Coding 2 高頻題:In-memory KV with TTL
DoorDash 在 Coding 2 喜歡出「半設計半 coding」的題。最近一年地裡貼得最多的就是 in-memory KV with TTL。
import heapq
import time
class TTLCache:
def __init__(self):
self.store = {} # key -> (value, expire_at)
self.heap = [] # (expire_at, key)
def _now(self):
return time.time()
def _evict_expired(self, now):
while self.heap and self.heap[0][0] <= now:
exp, k = heapq.heappop(self.heap)
v = self.store.get(k)
if v is not None and v[1] == exp:
del self.store[k]
def put(self, key, value, ttl_seconds):
now = self._now()
self._evict_expired(now)
expire_at = now + ttl_seconds
self.store[key] = (value, expire_at)
heapq.heappush(self.heap, (expire_at, key))
def get(self, key):
now = self._now()
self._evict_expired(now)
v = self.store.get(key)
if v is None or v[1] <= now:
return None
return v[0]
關鍵 follow-up:
- 單執行緒 vs 多執行緒,要不要加鎖
- 記憶體壓力下如何用 LRU + TTL 雙策略
- TTL 改成 sliding window 怎麼改
System Design:Design Order Dispatch
地裡給出的高分模板:
| 元件 | 關鍵決策 |
|---|---|
| Order Service | 寫入 Kafka 流 |
| Dispatch Optimizer | Push vs Pull 模型;按 geo-shard 分配 |
| Dasher Tracking | WebSocket vs polling;GPS 上傳頻率 |
| ETA Service | ML model 線上 vs 離線 |
| Surge Pricing | 即時計算 vs 預計算 |
面試官最在乎的點:能不能說清「多送一單」(batching)的設計——這是 DoorDash 的核心利潤機制。
Behavioral:4 大價值觀對應觸發詞
| 價值觀 | 你的故事必須出現的關鍵詞 |
|---|---|
| Get 1% Better | 持續學習、量化改進 |
| One Team, One Fight | Cross-functional 協作 |
| Customer Obsession | NPS / churn / 客戶視角 |
| We're Owners | 主動 + accountability |
VO 輔助介入點:4 輪 onsite 全程提供節奏提示詞、follow-up 第二條最佳化路徑、以及 BQ 故事的即時關鍵詞補全。
三、Data Scientist 路線:地裡 DS 帖最易踩雷的兩類題
DataSci 路線在地裡的帖子比 SDE 少,但每個帖子資訊密度更高。一個典型 DS 候選人地裡貼出的流程是:
- Recruiter call(30 min)
- SQL + 實驗設計 OA(60 min)
- Phone screen:A/B testing case(45 min)
- Onsite:SQL × 1 + 實驗設計 × 1 + Product sense × 1 + BQ × 1
地裡 DS 候選人最常翻車的兩類題:
DS 題型一:實驗設計(DoorDash 真題)
如何設計實驗測試新 driver incentive 計畫對配送時長的影響?
地裡高分回答框架:
- 明確目標指標:是平均送達時長、接單率、還是訂單完成率?
- 分桶策略:按 driver 隨機分桶(不能按 order 分,會汙染同一 driver)
- 核心指標:平均送達時長 + 標準差 + 接單率 + 取消率
- 樣本量計算:基於歷史方差、期望提升幅度、80% power
- 顯著性檢驗:注意 sequential testing / SRM 偵測
這道題在 phone screen 和 onsite 都會出現,地裡回饋「分桶策略說不清」是最常見掛點。
DS 題型二:SQL 視窗函式與活躍度篩選
給定
delivery_orders(order_id, driver_id, order_time, pickup_time, dropoff_time, city_id),寫 SQL 求每個城市過去 30 天內、由「完單 ≥ 100 單」的活躍 driver 完成的訂單的平均配送時長。
參考寫法:
WITH recent AS (
SELECT *
FROM delivery_orders
WHERE order_time >= DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY)
),
active_drivers AS (
SELECT driver_id
FROM recent
GROUP BY driver_id
HAVING COUNT(*) >= 100
)
SELECT r.city_id,
AVG(TIMESTAMPDIFF(MINUTE, r.pickup_time, r.dropoff_time)) AS avg_delivery_min
FROM recent r
JOIN active_drivers a ON r.driver_id = a.driver_id
GROUP BY r.city_id;
地裡 follow-up 變體:
- 改成 last 7 days / last 90 days
- 加 city × driver 雙維度
- 改用視窗函式實作「每個 city 排名前 5 的 driver」
VO 輔助介入點:DS 路線特別吃即時表達節奏,因為很多 case 題沒有標準答案,要靠你邊講邊推。我們在 onsite 期間提供框架提示詞(Goal → Bucketing → Metrics → Sample Size → Stat Test)來穩定你的回答結構。
四、地裡這一季最常被問的 5 個問題
Q1:DoorDash OA 多少分能進 onsite?
地裡觀察 HackerRank 滿分 100,75 分以上 onsite 邀請率約 60%,65–75 卡線,<65 幾乎被刷。
Q2:地裡說 DoorDash 喜歡出原題,是真的嗎?
部分是。OA 階段題型相對穩定(findNearbyRestaurants / Closest Straight City / Dasher Min Capacity 等),但每道題都會改輸入格式或加 follow-up,背原題答案過不了。
Q3:DataSci 路線的 phone screen 通過率多少?
地裡觀察約 45%。最常見掛點是實驗設計的「分桶策略」和 SRM 偵測說不清。
Q4:地裡 NG 和 Lateral 難度差多少?
NG OA 難度略低(2 道 medium)但 onsite 通過率更低(~25%);Lateral OA 一題中等一題中等偏難,onsite 通過率 ~15%。
Q5:地裡每週更新的面經,VO 輔助怎麼用進來?
我們的工作流是每週掃一次地裡 DoorDash 板塊新增高分帖,把新的題型變體、分桶細節、SD 元件做成 brief 給到當週面試的學員。這就是為什麼 VO 輔助的 OA / VO 命中率比純刷 LeetCode 高一截——題庫是從地裡即時更新的。
五、地裡高分模式總結
把上面 SDE 與 DS 兩條路一起看,能明顯總結出地裡 DoorDash 高分候選人的共性:
- OA 不靠刷題量,靠地裡題庫覆蓋度——同一題不同 follow-up 都過一遍
- Phone screen 必須主動開口提 test case——沉默寫程式碼 = lean no hire
- Onsite Coding 2 準備 in-memory KV / TTL Cache / Rate Limiter 三件套
- System Design 必須畫「多送一單」 —— DoorDash 真正在乎的是 batching 經濟模型
- BQ 4 大價值觀必須各匹配一個故事
如果你正在地裡翻 DoorDash 帖子準備面試,把這 5 條作為自檢清單。
正在排 DoorDash 面試?
如果你在一畝三分地翻了 50 帖還是不知道怎麼動手,加微信 Coding0201 讓我們幫你把這一季的地裡高頻題、follow-up 變體、SD 高分模板和 BQ 故事打磨打通。
我們提供:
- DoorDash OA 輔助 / OA 代面:HackerRank 全程即時輔助
- DoorDash VO 輔助 / VO 代面:phone screen + 4 輪 onsite 全程節奏支援
- DataSci 實驗設計 + SQL Mock:DS 路線專門通道
- 地裡題庫即時同步:每週更新真題與 follow-up 變體
聯繫方式
- 微信:Coding0201 · 立即聯繫
- Email:[email protected]
- Telegram:@OAVOProxy