← 返回部落格列表 DoorDash SDE 面試經驗 2026|Coding 三道高頻題 + 系統設計 + 行為面通關
DoorDash

DoorDash SDE 面試經驗 2026|Coding 三道高頻題 + 系統設計 + 行為面通關

2026-05-11

背景:DoorDash 是少數 2026 春招仍在持續發 offer 的中型科技公司,面試題與業務高度耦合(dasher 調度、訂單分發、商家配對)。本文綜合 oavoservice 學員 17 份回饋,給出「流程 → 高頻題 → 備考路徑」的實戰版。


一、DoorDash SDE 面試流程

Recruiter Phone Screen (30min)
    │
    ▼
Hiring Manager Chat (45min)
    │
    ▼
Technical Phone Screen (60min, 1 題 LC Med)
    │
    ▼
Virtual Onsite (4–5 輪)
    ├── Coding × 2 (60min each)
    ├── System Design (60min)
    ├── Domain / Project Deep Dive (45min)
    └── Behavioral (45min)

流程亮點:DoorDash 的 HM Chat 在所有技術輪前,相當於一次軟篩選——若 HM 不「buy」你,後面拿到 offer 機率會大幅下降。


二、Coding 三道高頻方向

2.1 配送圖:最近門店 / 最短路徑

from collections import deque

def nearest_shop(grid):
    R, C = len(grid), len(grid[0])
    start = None
    for r in range(R):
        for c in range(C):
            if grid[r][c] == 3:
                start = (r, c)
                break
        if start: break
    if not start:
        return -1
    q = deque([(start[0], start[1], 0)])
    seen = {start}
    while q:
        r, c, d = q.popleft()
        if grid[r][c] == 2:
            return d
        for dr, dc in ((1,0),(-1,0),(0,1),(0,-1)):
            nr, nc = r + dr, c + dc
            if 0 <= nr < R and 0 <= nc < C and grid[nr][nc] != 1 and (nr, nc) not in seen:
                seen.add((nr, nc))
                q.append((nr, nc, d + 1))
    return -1

複雜度:O(R·C)。

2.2 Dasher 最小容量

def min_capacity(orders):
    def ok(cap):
        carry = 0
        for o in orders:
            carry = max(0, carry + o - cap)
        return carry == 0
    left, right = 1, max(orders) * len(orders)
    while left < right:
        mid = (left + right) // 2
        if ok(mid):
            right = mid
        else:
            left = mid + 1
    return left

複雜度:O(n log V)。

2.3 訂單批處理 / 一致性雜湊

import bisect, hashlib

class HashRing:
    def __init__(self, vnodes=100):
        self.vnodes = vnodes
        self.ring = []
        self.hash2node = {}

    def _h(self, s):
        return int(hashlib.md5(s.encode()).hexdigest(), 16)

    def add_node(self, name):
        for i in range(self.vnodes):
            h = self._h(f"{name}#{i}")
            bisect.insort(self.ring, (h, name))
            self.hash2node[h] = name

    def remove_node(self, name):
        self.ring = [(h, n) for h, n in self.ring if n != name]

    def get_node(self, key):
        if not self.ring:
            return None
        h = self._h(key)
        idx = bisect.bisect_left(self.ring, (h, ''))
        if idx == len(self.ring):
            idx = 0
        return self.ring[idx][1]

複雜度add_node O(V log N),get_node O(log N)。


三、系統設計:即時調度

DoorDash 必考方向:Dasher 即時調度系統

設計要點:

  1. 寫多讀多 → Kafka 做事件流;
  2. 空間索引 → S2 / Geohash 切分網格;
  3. 配對演算法 → 小頂堆按 ETA 排序;
  4. 降級 → 高峰時段 fallback 到距離閾值配對;
  5. 可觀測 → 端到端 latency p99 < 2s。

別忘了講 trade-off:DoorDash 傾向「延遲分配」(batch 幾秒內的訂單做最佳配對),而非「即時貪心」。


四、Behavioral:DoorDash 風格

四大文化關鍵字:

高頻問題:

  1. Time you owned an outage / incident
  2. Time you delivered with imperfect data
  3. Why DoorDash(必問)
  4. Disagreement with PM / partner team

五、節奏與時間預算

階段 推薦時間
Recruiter→HM Chat 1 週
HM→Tech Phone 1–2 週
Tech Phone→Onsite 1–2 週
Onsite→Offer 1 週

總週期:4–6 週


六、常見問題 FAQ

Q1:DoorDash 面試一共幾輪?

A:包含 phone 共 5–7 輪,onsite 當天 4–5 輪。

Q2:DoorDash 一定考系統設計嗎?

A:SDE II 及以上必考,SDE I 視組而定。

Q3:DoorDash 用什麼 IDE?

A:CoderPad / HackerRank(Phone)+ 白板/Google Doc(onsite)。

Q4:DoorDash 給 H1B sponsor 嗎?

A:給,但 NG 名額比 ICs 緊張。

Q5:DoorDash HM Chat 重要嗎?

A:非常重要。是軟篩選輪,對後續 onsite 評分有影響。

Q6:DoorDash 掛了能再投嗎?

A:建議等 6–12 個月,換組重投。

Q7:DoorDash 喜歡什麼背景?

A:偏好 本地服務 / O2O / Marketplace 經驗;其次是分散式系統經驗。

Q8:DoorDash 系統設計要畫圖嗎?

A:要。建議用 Excalidraw 提前練 dasher 調度、order routing、payment ledger 3 張圖。


七、需要 DoorDash VO 輔助?

我們提供:當週 DoorDash 高頻題、Mock VO(含系統設計回饋)、VO 即時輔助。


最後更新:2026-05-11 | 作者:oavoservice 面試組