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
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