The "DoorDash" board on 1point3acres has been running at dozens of new threads a week through the current hiring cycle. SDE, Data Scientist, Data Engineer, Marketplace Strategy — every track is producing fresh mianjing. But the threads share three problems:
- Fragmented signal — each post drops 1–2 problems, never the full pipeline
- Mixed quality — the same problem appears with wildly different solutions, so it's hard to know which is canonical
- No pacing detail — once you have the problem, what to say minute by minute is left out entirely
This piece does what the threads can't: walks the two real paths that actually converted into offers in the last hiring cycle on 1point3acres — SDE Backend and Data Scientist — stage by stage. Each stage gets the actual mianjing posted on the board, the working code, the lines you should be saying, and where VO assist / OA assist plug in.
1. Where DoorDash sits in the 1point3acres landscape
Set expectations first:
- Comp band — NG SDE total comp posted on the board lands at $200–230k; Senior at $360–450k. Slightly under Meta / Google, comfortably above Uber.
- Difficulty — board consensus is DoorDash ≈ Uber, harder than Instacart, easier than Stripe.
- Business flavor — every problem is wrapped in delivery business. Keywords: "closest restaurant", "nearest dasher", "delivery ETA", "recommendation".
- Sponsorship — H1B sponsorship is normal; some teams prefer GC / citizens.
If you're new to DoorDash, read our DoorDash 5-pathway entry guide first to understand the entry pathways, then come back here for the round-by-round walkthrough.
2. SDE Backend track: the full pipeline rebuilt from board threads
Stage 1: Recruiter call (board consensus)
The most consistent feedback on 1point3acres about DoorDash recruiter calls is: shallow but broad. A typical call covers:
- Stack overlap with DoorDash (Kotlin / Go / Python / gRPC / Kafka)
- Marketplace / on-demand project history
- Visa, Bay Area / NYC / Seattle priority
- "Why DoorDash" — must hit business sense (don't just say "I order food a lot")
VO assist hook: 30-minute recruiter call sim, focused on grounding the "Why DoorDash" answer in marketplace dynamics.
Stage 2: HackerRank OA (the most-posted stage on the board)
OA format: HackerRank, 90 min, 2 problems. The two highest-frequency board posts:
Problem 1: findNearbyRestaurants
Implement
findNearbyRestaurants(userLocation, allRestaurants, maxDistance, minRating): filter by distance and rating, then sort by distance ascending and rating descending, then return.
Board threads show at least 4 follow-up variants:
- Add categories filter (OR / AND semantics)
- Streaming input (cannot pull all restaurants at once)
- Switch from euclidean to haversine (sphere distance)
- Massive data: would you use an R-tree / spatial index
Reference (offline batch, euclidean):
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]
Time: O(n log n) Space: O(n)
Most-posted gotcha on the board: failing to clarify tie-breaking and only realizing mid-write that "rating descending" conflicts with default ascending sort. The other classic: writing manhattan when the interviewer expected euclidean.
Problem 2: Closest Straight City
Given a set of city coordinates, for each query find the city in the same row or column with the smallest euclidean distance; on ties, return the lexicographically smallest name.
Full code lives in our DoorDash 1point3acres mianjing summary article. The OA-stage focus isn't the algorithm itself but the preprocess vs per-query tradeoff — can you reach for row/column buckets + bisect?
OA assist hook: walk every follow-up variant of these two problems before the OA starts; during the OA, screen-share assist (input alignment / complexity check / edge case prompts).
Stage 3: Phone screen (45 min, 1 problem)
Board high-frequency phone-screen problems:
- LC 200 / 695 (Number of Islands / Max Area)
- LC 815 (Bus Routes, BFS)
- "Nearest dasher / nearest dashmart" — multi-source BFS
- LC 1235 (Maximum Profit Job Scheduling, DP + binary search)
Most-posted board failure mode: writing in silence and waiting for feedback. DoorDash phone-screen interviewers wait for you to surface test cases. Silence reads as "can't handle edge cases."
Stage 4: Onsite loop (4 rounds)
| Round | Focus | Length | Board pass rate |
|---|---|---|---|
| Coding 1 | Algorithm + business wrap | 45 min | ~50% |
| Coding 2 | Design-flavored coding (Rate Limiter / TTL Cache) | 45 min | ~45% |
| System Design | DoorDash business systems | 45 min | ~40% |
| Behavioral | DoorDash 4 values | 45 min | ~60% |
Coding 2 high-frequency: in-memory KV with TTL
The most-posted Coding 2 problem this past year is 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]
Required follow-ups:
- Single-thread vs multi-thread; locking strategy
- Memory pressure — combine LRU + TTL
- TTL → sliding window: how does the data structure change
System Design: Order Dispatch
Board high-mark template:
| Component | Key decision |
|---|---|
| Order Service | Kafka write path |
| Dispatch Optimizer | Push vs Pull; geo-shard allocation |
| Dasher Tracking | WebSocket vs polling; GPS upload frequency |
| ETA Service | Online vs offline ML model |
| Surge Pricing | Real-time vs precomputed |
The hill the interviewer dies on: can you articulate the batching design ("combine two orders into one delivery"). That's DoorDash's actual margin model.
Behavioral: 4 values → trigger words
| Value | Required keyword in your story |
|---|---|
| Get 1% Better | Continuous learning, quantified improvement |
| One Team, One Fight | Cross-functional collaboration |
| Customer Obsession | NPS / churn / customer perspective |
| We're Owners | Initiative + accountability |
VO assist hook: cadence prompts across all 4 onsite rounds, second-path follow-up hints, and BQ keyword auto-completion.
3. Data Scientist track: the two most board-flagged failure modes
DataSci posts on the board are sparser than SDE but denser per post. A typical DS pipeline:
- Recruiter call (30 min)
- SQL + experiment design OA (60 min)
- Phone screen: A/B testing case (45 min)
- Onsite: SQL × 1 + experiment design × 1 + product sense × 1 + BQ × 1
Two failure modes board threads call out repeatedly:
DS Pattern 1: Experiment design
How would you design an experiment to test the impact of a new driver incentive program on delivery times?
Board high-mark frame:
- Define target metric — average delivery time? acceptance rate? completion rate?
- Bucketing — randomize at the driver level (NOT order — same driver across buckets pollutes signal)
- Core metrics — avg delivery time + std + acceptance rate + cancellation rate
- Sample size — based on historical variance, expected lift, 80% power
- Significance test — watch out for sequential testing / SRM detection
This problem shows up at both phone screen and onsite. "Bucketing strategy unclear" is the single most-posted reason for failure.
DS Pattern 2: SQL window function with active-driver filter
Given
delivery_orders(order_id, driver_id, order_time, pickup_time, dropoff_time, city_id), write SQL for the average delivery time per city for orders in the last 30 days, restricted to drivers with ≥ 100 deliveries.
Reference:
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;
Board follow-up variants:
- Switch to last 7 days / last 90 days
- Add a city × driver double dimension
- Use a window function for "top 5 drivers per city"
VO assist hook: DS is heavy on live narration because case questions don't have a single correct answer — you must reason out loud. We feed framing prompts (Goal → Bucketing → Metrics → Sample Size → Stat Test) during onsite to keep the structure stable.
4. Top 5 questions on the board this cycle
Q1: What OA score gets you onsite?
Board observation: HackerRank max 100, ≥75 → ~60% onsite invite, 65–75 borderline, <65 almost always cut.
Q2: Does DoorDash recycle problems? Threads keep saying so.
Partly. OA has a stable pool (findNearbyRestaurants / Closest Straight City / Dasher Min Capacity), but every problem ships with prompt-format tweaks or follow-ups. Memorization fails.
Q3: DataSci phone-screen pass rate?
Board observation ~45%. Single biggest failure mode is unclear bucketing strategy and SRM detection.
Q4: NG vs Lateral — how much harder?
NG OA is slightly easier (2 mediums) but onsite pass rate ~25%. Lateral OA is one medium + one medium-hard, onsite pass rate ~15%.
Q5: How does VO assist plug into board updates?
We sweep the DoorDash board on 1point3acres weekly, harvest new variants, bucketing details, and SD components, then push them as a brief to that week's interviewing students. That's why VO assist hit rate runs ahead of pure LeetCode grinding — the question pool refreshes from the board in real time.
5. Five-line summary of the high-mark pattern on the board
Looking at SDE and DS together, the high-mark candidates on the DoorDash board share five traits:
- OA isn't won by problem volume — it's won by board variant coverage (every follow-up of the same problem)
- Phone screen requires you to surface test cases unprompted — silence == lean no-hire
- Onsite Coding 2 prep set: in-memory KV / TTL Cache / Rate Limiter
- System Design must hit batching ("combine two orders into one delivery") — that's the margin model
- Behavioral must map 1 story to each of the 4 values, no overlap
If you're scrolling DoorDash threads on 1point3acres right now, use these as your self-check.
Scheduling DoorDash interviews?
If you've read 50 board threads and still don't know where to start, ping WeChat Coding0201 — we'll cross-reference the current cycle's board hits, follow-up variants, SD high-mark templates, and BQ stories with you.
We offer:
- DoorDash OA assist / OA proxy — full HackerRank live coverage
- DoorDash VO assist / VO proxy — phone screen + 4-round onsite cadence support
- DataSci experiment + SQL mock — DS-track dedicated lane
- Live board sync — weekly refresh of mianjing variants and follow-ups
Contact
- WeChat: Coding0201 · Contact us
- Email: [email protected]
- Telegram: @OAVOProxy