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.

17
Interview Questions
1
Categories
3
Difficulty Levels

Table of Contents

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

Company: DoorDash Difficulty: medium šŸ”’ Premium Categories: Devops

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

Company: DoorDash Difficulty: medium šŸ”’ Premium Categories: Devops

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

Company: DoorDash Difficulty: hard šŸ”’ Premium Categories: Devops

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

Company: DoorDash Difficulty: medium šŸ”’ Premium Categories: Devops

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.

Upgrade to Premium →

5. Capture Logs as Artifact on Failure

Company: DoorDash Difficulty: medium šŸ”’ Premium Categories: Devops

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.

Upgrade to Premium →

6. CSV Row Filter and Count

Company: DoorDash Difficulty: easy Categories: Devops, Data analysis, Data engineering

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

Company: DoorDash Difficulty: medium Categories: Devops, Data engineering

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

Company: DoorDash Difficulty: medium Categories: Devops, Data engineering

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

Company: DoorDash Difficulty: medium Categories: Devops, Data engineering

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

Company: DoorDash Difficulty: medium Categories: Data analysis, Data engineering

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

Company: DoorDash Difficulty: medium Categories: Data analysis, Data engineering

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

Company: DoorDash Difficulty: easy Categories: Data analysis, Data engineering

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

Company: DoorDash Difficulty: easy Categories: Data analysis, Data engineering

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

Company: DoorDash Difficulty: medium Categories: Data analysis, Data engineering

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

Company: DoorDash Difficulty: hard Categories: Data engineering

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

Company: DoorDash Difficulty: medium Categories: Data engineering

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

Company: DoorDash Difficulty: medium šŸ”’ Premium Categories: Data engineering

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.

Upgrade to Premium →


Ready to Practice More?

Explore interview questions from other companies or try our hands-on labs to build practical experience.