DoorDash logo

DoorDash Software Engineer Interview Questions

41 practice questions for DoorDash Software Engineer interviews

DoorDash software engineer interviews cover algorithms, data structures, system design, and coding problems drawn from real interview rounds.

All Roles Software Engineer Backend Engineer Frontend Engineer Full Stack Engineer Mobile Engineer Data Engineer Data Scientist ML Engineer DevOps Engineer DevOps Engineer Product Manager SRE Security Engineer Engineering Manager Data Analyst UX/UI Designer QA Engineer
12
Coding
1
System Design
coding Medium Verified Question #1

1. Code Craft - Bootstrap API


Category: String coding problem
# Question You are tasked with implementing a Bootstrap API that aggregates data from multiple services for a given user. Given a userId, you...
Input: String
Output: Computed result
coding Hard Verified Question #2

2. Code Craft - Driver Payment System


Category: Algorithm coding problem
# Question You are in charge of implementing the Dasher payment model. Given the sequence of accepted/fulfilled order activities from a given dasher...
Input: List
Output: Computed result
coding Medium Verified Question #3

3. Find Closest Dasher


Category: Algorithm coding problem
# Question You are given an m × n board representing a delivery area. The board contains: - 'X' - blockers (obstacles) - 'D' - DashMarts...
Input: List
Output: Integer
coding Medium Verified Question #4

4. Find Menu Changes


Category: Tree coding problem
# Question You are given two tree structures representing an old menu and a new menu. Each tree node has: - key: identifier for the menu...
Input: List
Output: Computed result
coding Medium Verified Question #5

5. Location Index


Category: Graph coding problem
Implement a LocationIndex class that stores a set of named points on a 2D grid. The constructor takes three arrays: names (list of location name...
Input: 2D grid
Output: Computed result
coding Medium Verified Question #6

6. Covered Service Zones


Category: Algorithm coding problem
You are given two binary m x n matrices: coverage and demand. A cell in demand is active if its value is 1. Active cells that are...
Input: Number(s)
Output: Integer
coding Hard Verified Question #7

7. Wildcard Segment Counter


Category: String coding problem
You are given a template string consisting only of the characters '0', '1', and '?', and a list of integers run_lengths. A '?' in the...
Input: Array of integers
Output: Computed result
coding Medium Verified Question #8

8. Peak Value Processing Order


Category: Algorithm coding problem
You are given a list of unique integers values. At each step, identify all eligible values: a value is eligible if it is strictly greater than...
Input: List
Output: Computed result
coding Hard Verified Question #9

9. Directory Registry


Category: Tree coding problem
Implement a DirectoryRegistry class that manages a hierarchical key-value store modeled as a tree of paths. The root path "/" always exists with...
Input: String
Output: Computed result
coding Hard Verified Question #10

10. Ride Earnings Calculator


Category: String coding problem
You are given records, a list of ride events. Each record is a list of three strings: [ride_id, timestamp, status]. Possible statuses are...
Input: List
Output: Computed result
coding Medium Verified Question #11

11. Meeting Slot Generator


Category: Interval-based coding problem
Given a start time and an end time, generate all meeting check-in slots at 5-minute intervals after start up to and including end. The...
Input: List
Output: Computed result
coding Medium Verified Question #12

12. Catalog Tree Diff Counter


Category: Tree coding problem
You are given two n-ary trees representing an old and a new version of a product catalog. Each node in the tree has the following fields: - key...
Input: List
Output: Computed result
system design Hard Verified Question #13

13. Top 8 Doordash System Design Questions Jan 2026


Category: Linked list system design problem
# System Design Questions - DoorDash These are the commonly asked system design questions from DoorDash interviews. Updated January 2026.
Input: Linked list
Output: Computed result
coding Hard graph #1

1. [OA] Depth-First Search — Optimize Driver Matching for DoorDash

DoorDash needs to effectively match drivers to delivery requests based on location and time constraints.
Problem Statement: Given a grid of n x m representing a map where 1 represents an order location and 0 represents an empty space, implement a function maxDrivers(orders: List[List[int]], start: Tuple[int, int]) -> int that returns the maximum number of deliveries that can be assigned to drivers originating from start position.
Example 1:
Input: orders = [[0,0,0],[0,1,0],[0,0,0]], start = (1, 1)
Output: 1
Explanation: The only reachable order is at (1,1).
Constraints:
- 1 <= orders.length, orders[i].length <= 20
- 0 <= start[0] < orders.length
- 0 <= start[1] < orders[i].length
coding Hard sliding window #2

2. [OA] Sliding Window — Design a delivery tracking system for DoorDash

DoorDash needs a robust method to track orders and ensure timely deliveries based on real-time traffic data.
Problem Statement: Given an array of integers representing the estimated delivery times for incoming orders, implement a function maxDeliveryTime(orders: List[int], k: int) -> int that returns the maximum possible delivery time over any sub-array of size k, where k is the number of concurrent deliveries.
Example 1:
Input: orders = [2, 1, 3, 5, 6, 4], k = 3
Output: 14
Explanation: The best sub-array is [5, 6, 4], which yields a delivery time of 5 + 6 + 4 = 15.
Constraints:
- 1 <= orders.length <= 100000
- 1 <= orders[i] <= 1000
- 1 <= k <= orders.length
system design Senior caching #3

3. [OA] Cache Implementation — Design a Delivery Caching System for DoorDash

DoorDash needs to cache the most frequently accessed delivery routes to improve API response time.
Problem Statement: Implement an LRUCache class with the following methods:
- __init__(self, capacity: int): Initialize the LRU cache with positive size capacity.
- get(self, key: int) -> int: Return the value of the key if the key exists, otherwise return -1.
- put(self, key: int, value: int) -> None: Update the value of the key if the key exists, or add the key-value pair if the key does not exist. When the cache reaches its capacity, it should invalidate the least recently used item before inserting a new item.
Example 1:
Input: cache = LRUCache(2)
cache.put(1, 1)
cache.put(2, 2)
cache.get(1)
Output: 1
Explanation: The cache contains 1 and 2, and the value for key 1 is 1.
Constraints:
- 1 <= capacity <= 3000
- 0 <= key, value <= 10000

Related DoorDash Software Engineer interview prep

Start practicing DoorDash questions

Sign up for free to access walkthroughs, AI-generated questions, and more.

Get Started Free