Doordash Interview Questions (17+ Questions)
Last Updated: July 6, 2026 ⢠17 Questions ⢠Real Company Interviews
Prepare for your Doordash interview with our comprehensive collection of 17+ real interview questions and detailed answers. These questions have been curated from actual Doordash technical interviews across various roles including DevOps Engineer, Data Engineer, QA Engineer, and more.
Table of Contents
- Verify Host Network Access (medium) š
- Non-Scaling HPA (medium) š
- Fix Stuck Pod Termination (hard) š
- Cross-Repo Promotion via Reusable Workflows (medium) š
- Capture Logs as Artifact on Failure (medium) š
- CSV Row Filter and Count (easy)
- Find the Duplicate Number (medium)
- Palindrome Partitioning (medium)
- Partition Labels (medium)
- Set Operation: INTERSECT (medium)
- Partition CSV Data into Monthly Parquet Files (medium)
- Filter Movies with Missing Box Office Data (easy)
- Regex Extract (easy)
- Nested Subquery for Latest Record (medium)
- Pizza Topping Combinations (hard)
- Longest Repeating Character Replacement (medium)
- Calculate Slow Order Durations (medium) š
Our Doordash interview questions cover a wide range of technical topics and difficulty levels, from entry-level positions to senior roles. Each question includes detailed explanations and answers to help you understand the concepts and prepare effectively for your interview.
š” Pro Tips for Doordash Interviews
- Practice each question and understand the underlying concepts
- Review Doordash's specific technologies and methodologies
- Prepare follow-up questions and edge cases
- Practice explaining your solutions clearly and concisely
Interview Questions & Answers
1. Verify Host Network Access
Learn how to create a Bash script that automates connectivity checks for multiple hosts using ping commands. This guide covers reading hostnames from a file, testing reachability, generating status reports, and handling failures gracefully, essential for pre-maintenance validation, network monitoring, and infrastructure health checks in DevOps workflows.
2. Non-Scaling HPA
Troubleshoot and fix HPA configuration to enable automatic pod scaling. Resolve metric collection issues, fix deployment references, configure CPU targets correctly, and achieve dynamic scaling based on load. Essential for elastic workloads, cost optimization, handling traffic spikes, and maintaining performance under variable load in production clusters.
3. Fix Stuck Pod Termination
Kubernetes Pod Termination Debugging: processor core namespace. Investigate and resolve resources stuck in the 'Terminating' state due to blocking Finalizers and hanging Lifecycle Hooks. Master the use of forced deletion and metadata patching to clear deadlocked objects. Critical troubleshooting for zombie processes, namespace deletion failures, and managing complex resource finalization flows.
4. Cross-Repo Promotion via Reusable Workflows
We have two repositories, repo A, which is the application, and repo B, which is the configuration. When repo A wants to promote a new image version, it calls a reusable workflow in repo B that handles updating the deployment config. This is a GitOps pattern where the config repo owns the logic for ...
š Premium Content
Detailed explanation and solution available for premium members.
5. Capture Logs as Artifact on Failure
We have a repo with a deployment script that sometimes fails. When it fails, it writes logs to deployment.log. But the runner is temporary, so the logs disappear once the workflow finishes. We need to set up a workflow that automatically captures those logs as an artifact, but only when the deployme...
š Premium Content
Detailed explanation and solution available for premium members.
6. CSV Row Filter and Count
We have one customers.csv file. Each row represents one customer and has a status field that can be active or something else. We are required to read the file, then count how many customers have the active status, and write that number to a text file. First of all, we import the CSV module that is designed for reading and writing CSV files. We define a new counter variable that we will call active_count, and we set it to zero. Using Python's built-in open function, we will enter the customers CSV file. It takes two arguments, the file path and r that stands for read mode. Then we create a DictReader from the open file that will read the first row as column header, and then every row as Python dictionary. Using for loop, we go through every row in the CSV file and check whether the value in the status column is equal to active or not.
7. Find the Duplicate Number
def find_duplicate(nums: list[int]) -> int:
slow, fast = 0, 0
while True:
slow = nums[slow]
fast = nums[nums[fast]]
if slow == fast:
break
slow2 = 0
while True:
slow = nums[slow]
slow2 = nums[slow2]
if slow == slow2:
return slow
8. Palindrome Partitioning
def partition(s: str) -> list[list[str]]:
res = []
def is_palindrome(left, right):
while left < right:
if s[left] != s[right]:
return False
left += 1
right -= 1
return True
def dfs(start, current_partition):
if start >= len(s):
res.append(current_partition.copy())
return
for end in range(start, len(s)):
if is_palindrome(start, end):
current_partition.append(s[start : end + 1])
dfs(end + 1, current_partition)
current_partition.pop()
dfs(0, [])
return res
9. Partition Labels
def partition_labels(s: str) -> list[int]:
last_occurrence = {}
for i, char in enumerate(s):
last_occurrence[char] = i
res = []
size = 0
end = 0
for i, char in enumerate(s):
size += 1
end = max(end, last_occurrence[char])
if i == end:
res.append(size)
size = 0
return res
10. Set Operation: INTERSECT
This SQL question focuses on set operation called intersect. We are given two tables that share customer ID as a primary key. Our main goal is to return list of active customers based on two criterias. On a monthly basis, a new customer should spend more than 1,000, be loyal, and have at least three years of membership and a premium tier status. Final output must include only the customer ID and name columns sorted in ascending order by ID. A CTE is a temporary result set in SQL that you can reference within a single query. Using with clause, we create a CTE called monthly spenders among new customers that spend more than 1,000. We can name the CTE as premium tier. Intersect takes both tables and returns only the values that appear in both of them. We select customer ID and name columns from monthly spenders, which was the first CTE. Then we select information from the second CTE, and between these two we add intersect operator.
11. Partition CSV Data into Monthly Parquet Files
Read a large CSV file with transaction data, partition it by month using pandas, and save each partition as a separate Parquet file with organized naming.
12. Filter Movies with Missing Box Office Data
Practice filtering for NULL values in Snowflake SQL with this movie analytics interview question. You query a movies table to find rows where box office collection data is missing using IS NULL. Covers NULL handling, IS NULL, WHERE clause, and data quality checks in Snowflake. An easy-level question common in analytics interviews at companies like DoorDash.
13. Regex Extract
Practice string manipulation in PySpark. Learn how to use regular expressions (regexp_extract) to extract numeric patterns from alphanumeric string columns.
14. Nested Subquery for Latest Record
We only have one table here, events. There are five columns: event_date and name, id, status, and user_id. Each row in the event_name column represents something a user did, and then status column shows if it was successful. For each user, we want to know what their most recent event was. Final result should contain all the columns except for ID column, and everything should be sorted in ascending order by user ID. For each user and event row, we check and find the maximum date for that specific user. If the current row's date matches the maximum date, we keep it. We take the events table and give it an alias e1. Now we have to use this table again, but we can't name it with the same alias anymore. That's why inside of the subquery, we give another nickname, another alias to our table, which will be e2. We implement max function to find the maximum date, and then inside of the where clause, we compare the current date that we are checking right now and the maximum date that we already found. Finally, we sort everything out in ascending order by user ID.
15. Pizza Topping Combinations
SELECT
t1.topping_name || ', ' || t2.topping_name || ', ' || t3.topping_name AS pizza,
t1.ingredient_cost + t2.ingredient_cost + t3.ingredient_cost AS total_cost
FROM
pizza_toppings t1
CROSS JOIN pizza_toppings t2
CROSS JOIN pizza_toppings t3
WHERE
t1.topping_name < t2.topping_name
AND t2.topping_name < t3.topping_name
ORDER BY
total_cost DESC,
pizza;
16. Longest Repeating Character Replacement
def character_replacement(s: str, k: int) -> int:
count = {}
res = 0
l = 0
max_f = 0
for r in range(len(s)):
count[s[r]] = 1 + count.get(s[r], 0)
max_f = max(max_f, count[s[r]])
if (r - l + 1) - max_f > k:
count[s[l]] -= 1
l += 1
res = max(res, r - l + 1)
return res
17. Calculate Slow Order Durations
Objective
Write a precise SQL query designed to identify orders where the shipping duration significantly exceeds the average shipping duration. Specifically, the query should return orders where the shipping duration is more than 1.5 times the average shipping duration of all orders. The resul...
š Premium Content
Detailed explanation and solution available for premium members.
Ready to Practice More?
Explore interview questions from other companies or try our hands-on labs to build practical experience.