Summary
I successfully navigated the Code Craft round for a Midlevel SWE role at DoorDash, which focused on a collaborative problem to design and implement Dasher payout logic within a new Payments Service microservice. The experience was positive, and I passed the round.
Full Experience
I recently had my Codecraft round for a Midlevel SWE position at DoorDash. This wasn't a typical LeetCode-style problem; instead, it was a collaborative coding exercise with the interviewer. I found the discussion incredibly engaging, and the interviewer was genuinely present and interested in my thought process, which I really appreciated. I successfully passed this round.
Interview Questions (3)
As part of migrating from a monolith to a micro-service architecture, my team was tasked with building a new Payments Service, specifically the Dasher payout logic. My project involved creating an API with a POST /payout endpoint that takes dasherId as input and outputs the dollar amount the dasher gets paid. This endpoint needed to request delivery information from a separate upstream service (which could be mocked for the exercise).
The payment model's first version was based on the time a Dasher spends fulfilling each order. Given a sequence of order activities for a Dasher on a given day, I needed to calculate the pay based on these rules:
- Base pay rate: $0.3 per minute
- Multi-order pay rate: # ongoing deliveries * base pay rate
What would be the edge cases you can think of in your implementation of the Dasher payout logic? Discuss and correct for those, and test your code.
What would happen if the upstream service (for delivery information) had high latency? What would you do to mitigate this?
Summary
I recently had a system design interview with Doordash, where I was tasked with designing a system for customer reviews and rewards based on review quality.
Full Experience
My interview with Doordash focused on a challenging system design problem. I was asked to design a comprehensive system for customers to submit reviews on ordered food items and a mechanism to reward them based on the quality of their contributions. During the discussion, I outlined the high-level architecture, including user-facing components, backend services for review submission and processing, and a sophisticated system for evaluating review quality to disburse monetary rewards. I considered various aspects like data storage for reviews, user profiles, and reward transactions, along with API design for different functionalities. We also touched upon scalability considerations for handling a large volume of reviews and ensuring the fairness and accuracy of the reward system. It was an insightful and engaging session.
Interview Questions (1)
Design a system that allows Doordash's customers to add reviews on ordered food items and earn monetary rewards based on the quality of their reviews.
Summary
I was presented with a challenging algorithmic problem during my Doordash interview that involved navigating a city grid to calculate distances to the nearest DashMart and then identifying the DashMart serving the most customers.
Full Experience
During my recent interview with Doordash, I encountered an interesting algorithmic challenge. The main problem revolved around a city map represented as a grid, where I had to determine the shortest distance from various given locations to their closest DashMart. This required careful consideration of open and blocked roads, suggesting a graph traversal algorithm like Breadth-First Search (BFS). A follow-up then extended this by introducing customers and asking to find the DashMart that would serve the maximum number of customers based on proximity. This entire scenario tested my ability to model real-world problems using data structures and algorithms.
Interview Questions (2)
A DashMart is a warehouse run by Doordash that houses items found in convenience stores, grocery stores, and restuarants. We have a city with open roads, blocked-off roads, and DashMarts.
City Planners want you to identify how far a location is from its closest DashMart. You can only travel over open roads (up, down, left, right). Locations are given in [row, col] format.
Example 1
[ ['X', ' ', ' ', 'D', ' ', ' ', 'X', ' ', 'X'],
['X', ' ', 'X', 'X', ' ', ' ', ' ', ' ', 'X'],
[' ', ' ', ' ', 'D', 'X', 'X', ' ', 'X', ' '],
[' ', ' ', ' ', 'D', 'X', 'X', ' ', 'X', ' '],
[' ', ' ', ' ', ' ', ' ', 'X', ' ', ' ', 'X'],
[' ', ' ', ' ', ' ', 'X', ' ', ' ', 'X', 'X'] ]
Such that:
' 'represents an open road that you can travel over in any direction (up, down, left, or right)'X'represents a blocked road that you cannot travel through.'D'represents a DashMart.
locations = [[200, 200], [1, 4], [0, 3], [5, 8], [1, 8], [5, 5]]
Return a list of the distances from a given point to its closest DashMart.
Expected Answer: In this case, you should return [-1, 2, 0, -1, 6, 9]
Find the DashMart that can serve the maximum number of customers. Customers will be served by their closest DashMart. Customers are represented by 'C' in the city plan.
Summary
I recently interviewed at DoorDash for a backend position and was ultimately rejected. The process involved system design, hiring manager discussion, debugging, and a coding round, but I left unsatisfied due to perceived misalignments in expectations.
Full Experience
I recently went through the DoorDash interview process for a backend role and wanted to share my experience. Unfortunately, I was rejected after completing all rounds.
Round 1: System Design + Domain Knowledge
The problem I faced was centered around an Ads Click Aggregator. The interviewer was from the Data Engineering team. I found this conversation quite challenging, partly because the interviewer seemed relatively new to conducting such design interviews. The flow felt a bit off, and the discussion focused on areas I didn't feel were core to the problem, making it hard to properly showcase my system design skills.Round 2: Hiring Manager Discussion
This was a straightforward round, involving standard behavioral questions.Round 3: Debugging
In this round, I was given a piece of code that contained 3–4 bugs, which I successfully fixed. The interviewer then followed up with questions about optimizations, which I was also able to address.Round 4: Code Craft
I had anticipated this round would evaluate my understanding of OOP principles, class creation, and overall code structure. However, the interviewer seemed solely concerned with the problem-solving logic and getting a running code solution.Overall, I left feeling unsatisfied with the interview process, primarily due to a lack of alignment in expectations and how some of the interviews were conducted.
Interview Questions (2)
Design a system for an Ads Click Aggregator. This round involved discussions around system architecture, data processing, and handling scale for aggregating clicks on advertisements.
Given a piece of code containing 3-4 bugs, identify and fix them. Follow-up questions focused on optimizing the corrected code.