41 practice questions for DoorDash Mobile Engineer interviews
DoorDash mobile engineer interviews focus on iOS or Android platform knowledge, memory management, offline-first architecture, and mobile-specific system design.
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
codingHardVerified 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
codingMediumVerified 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
codingMediumVerified 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
codingMediumVerified Question#5
5. Location Index
Category: Graph coding problemImplement 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
codingMediumVerified Question#6
6. Covered Service Zones
Category: Algorithm coding problemYou 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
codingHardVerified Question#7
7. Wildcard Segment Counter
Category: String coding problemYou 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
codingMediumVerified Question#8
8. Peak Value Processing Order
Category: Algorithm coding problemYou 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
codingHardVerified Question#9
9. Directory Registry
Category: Tree coding problemImplement 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
codingHardVerified Question#10
10. Ride Earnings Calculator
Category: String coding problemYou 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
codingMediumVerified Question#11
11. Meeting Slot Generator
Category: Interval-based coding problemGiven 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
codingMediumVerified Question#12
12. Catalog Tree Diff Counter
Category: Tree coding problemYou 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 designHardVerified 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
codingMediumsliding window#1
1. [OA] Sliding Window — maximize the number of orders DoorDash can deliver in a given time frame
DoorDash relies on drivers to fulfill user orders on time while maximizing efficiency. We want to ensure that drivers can cover as many orders as possible within a certain time window. Problem Statement: Given an array of integers representing the times taken to deliver each order and an integer t for the total time available, return the maximum number of orders that can be delivered in that time frame. Example 1: Input: orders = [2, 3, 1, 5, 4], t = 7 Output: 4 Explanation: The maximum number of orders within the time frame is 4 (taking 1+2+3+1 = 7).Constraints: - 1 <= orders.length <= 10000 - 1 <= orders[i] <= 1000 - 1 <= t <= 10000
codingHardcaching#2
2. [OA] LRU Cache — implement the caching layer DoorDash uses for its API responses
DoorDash calls various APIs to fetch restaurant data. To improve performance and reduce unnecessary network calls, we need an efficient LRU (Least Recently Used) caching mechanism. Problem Statement: Implement an LRUCache class that supports the following operations: - get(key: int) -> int: Returns the value of the key if the key exists in the cache, otherwise returns -1. - put(key: int, value: int) -> None: Updates the value of the key if the key exists, otherwise adds the key-value pair to the cache. 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) # returns 1 cache.put(3, 3) # evicts key 2 cache.get(2) # returns -1 (not found)Output: 1 -1Constraints: - 1 <= capacity <= 3000 - 0 <= key <= 10000 - 0 <= value <= 10000
system designSeniordistributed systems#3
3. Design an Offline-first Sync Engine — a system to manage data synchronization for DoorDash's mobile application
To ensure that users can continue placing orders even when they are offline, DoorDash requires a robust data synchronization system that prioritizes data consistency and user experience, especially in areas with poor connectivity. Problem Statement: Create an OfflineSyncEngine class that handles data synchronization between local user actions and the remote server. - queueAction(action: UserAction): Queues a user action to be executed when the device goes online. - sync(): Syncs all queued actions with the remote server. - getPendingActions(): Returns all actions that are queued but not yet synced.Example 1: Input: queueAction(new UserAction('placeOrder', orderDetails)) Output: Action queued successfullyConstraints: - The system must handle conflicts when syncing actions performed offline. - Keep track of queued actions for resending if sync fails.
system designSeniorapi design#4
4. Design a Push Notification Manager — a system to handle real-time notifications in DoorDash's mobile app
As DoorDash generates various real-time events like order updates, the mobile app needs a way to efficiently deliver push notifications to users, enhancing user engagement and information delivery accuracy. Problem Statement: Implement a PushNotificationManager class that handles the scheduling, sending, and managing of push notifications to users. - sendNotification(userId: String, message: String): This method sends a notification to a specified user. - scheduleNotification(userId: String, message: String, time: Date): This schedules a notification to be sent in the future. - cancelScheduledNotification(notificationId: String): This cancels a previously scheduled notification.Example 1: Input: sendNotification('user1', 'Your order has been delivered!') Output: Notification sent to user1Constraints: - The manager must scale to handle thousands of notifications per second. - User can receive multiple notifications simultaneously.