DoorDash Data Scientist Interview Preparation Guide (Entry Level)
DoorDash's Data Scientist interview process for entry-level candidates consists of 6 rounds spanning approximately 3-4 weeks. The process includes an initial recruiter screen, a 60-minute technical phone screen covering SQL and product case analysis, and 4 onsite rounds that assess advanced SQL proficiency, product thinking, machine learning fundamentals, and behavioral fit. The interview emphasizes DoorDash's product-driven approach, requiring candidates to understand metrics in business context and think about real-world data challenges in the logistics and marketplace domains.[1][2]
Interview Rounds
Recruiter Screening
What to Expect
Your first interaction is with DoorDash's recruiting team. This 20-30 minute call focuses on understanding your background, motivation for applying, and confirming basic technical qualifications. The recruiter will discuss the role, DoorDash's mission, and culture while assessing your communication skills and genuine interest in the company. This is also your opportunity to ask questions about the role and team structure.
Tips & Advice
Be enthusiastic and genuine about DoorDash's mission to empower local economies. Have a clear, concise explanation of your data science background and why you're interested in this specific role - generic answers don't resonate. Ask thoughtful questions about the team, the data science tech stack, and what success looks like in the first 90 days. Avoid appearing overconfident; entry-level candidates are expected to be eager to learn. Mention if you've used DoorDash and can tie that personal experience to your interest.
Focus Topics
Understanding of DoorDash's Business Model
Demonstrate basic familiarity with how DoorDash works: the three-sided marketplace (consumers, restaurants, delivery drivers), key business metrics, and recent company initiatives or products.
Practice Interview
Study Questions
Learning Mindset and Adaptability
Demonstrate openness to learning new tools, frameworks, and domain knowledge. Share an example of when you quickly acquired a new technical skill or adapted to unfamiliar problem domain.
Practice Interview
Study Questions
Motivation for DoorDash and Data Science Role
Articulate why DoorDash specifically (not just any tech company) and why a data science role (not software engineering or other roles). Connect your interests to DoorDash's business challenges around logistics optimization, marketplace dynamics, or customer insights.
Practice Interview
Study Questions
Communication of Technical Background
Clearly articulate your experience with data analysis, programming languages (Python/R), SQL, and any relevant coursework or projects. Use language accessible to a non-technical recruiter while demonstrating genuine technical competency.[1]
Practice Interview
Study Questions
Technical Phone Screen
What to Expect
The 60-minute technical screen is divided into two parts conducted by a senior DoorDash data scientist via CodePair or similar live coding environment. The first part (30-35 minutes) tests SQL proficiency with real-world data manipulation challenges focused on analytics queries.[1] The second part (25-30 minutes) presents a product case scenario where you must analyze data, define metrics, and provide business recommendations. This round assesses your technical foundation and ability to translate data into actionable insights.
Tips & Advice
For the SQL component: Write clean, readable queries first rather than jumping to optimization. Test your logic with simple queries before adding complexity. Comment your code. Interviewers often allow you to reference SQL documentation (simulating real work), so don't memorize syntax.[2] For the product case: Ask clarifying questions about the business context before diving into analysis. Define metrics clearly with business rationale. Talk through your thinking process out loud - interviewers want to see your analytical reasoning, not just final answers.[1] For both parts: Be comfortable with ambiguity; interviewers may give minimal context initially to see how you gather requirements.
Focus Topics
Basic A/B Testing Concepts
Understand how A/B tests work: randomization, control vs treatment groups, null/alternative hypotheses, statistical significance, and practical significance. Know when A/B testing is appropriate versus observational analysis.[1]
Practice Interview
Study Questions
SQL Window Functions and CTEs
Understand and apply window functions (ROW_NUMBER, RANK, LAG, LEAD, cumulative sums) to solve problems requiring ranking, running totals, or comparisons across rows. Use Common Table Expressions (CTEs) to organize complex multi-step queries logically.[1][2]
Practice Interview
Study Questions
Data Analysis and Interpretation
Given a dataset or SQL results, interpret what the numbers mean in business context. Identify patterns, anomalies, or incomplete data. Consider data quality issues and potential limitations in conclusions.
Practice Interview
Study Questions
Metrics Definition and Product Sense
For a hypothetical feature or business scenario, define success metrics that align with DoorDash's goals. Understand the difference between metrics (measures of success), KPIs (tracking progress), and guardrail metrics (protecting against negative side effects). Discuss trade-offs between different metrics.[2]
Practice Interview
Study Questions
SQL for Analytics - Fundamentals
Master SQL queries essential for data analysis: SELECT with WHERE/GROUP BY/HAVING clauses, multiple JOIN types (INNER, LEFT, RIGHT, FULL), ORDER BY, LIMIT, DISTINCT, aggregation functions (COUNT, SUM, AVG, MIN, MAX). Write queries that correctly answer specific business questions while handling null values and data types appropriately.[1][2]
Practice Interview
Study Questions
Onsite Round 1: Advanced SQL and Analytics
What to Expect
The first onsite interview (60 minutes) with a data scientist or analytics engineer dives deeper into SQL proficiency with more complex analytics problems.[1] You'll work through 1-2 realistic business scenarios from DoorDash's operations (e.g., analyzing order patterns, restaurant performance, delivery efficiency metrics) in a live coding environment. The interviewer assesses your ability to write efficient queries, handle edge cases, validate results, and communicate your analytical process.
Tips & Advice
Treat the live coding session like a real analytics task: clarify requirements with the interviewer, plan your approach before writing queries, then code and verify results. Ask questions about data schemas if confused. If stuck on a query, verbalize your thought process so the interviewer can guide you. Prioritize correctness over speed. After writing a query, walk through the logic and discuss potential edge cases (e.g., null values, duplicate records, date boundary conditions). Show familiarity with DoorDash's business terminology and metrics.
Focus Topics
DoorDash Metrics and Business Context
Understand key DoorDash metrics: delivery time, customer satisfaction, restaurant/merchant retention, order frequency, average order value, unit economics, and fraud rates. Understand how these metrics interconnect and how decisions in one area affect others.[2]
Practice Interview
Study Questions
Analytics Thinking - Converting Business Questions to Data Queries
Given a business question (e.g., 'Why did restaurant sign-ups drop last week?'), break it into concrete data questions. Identify necessary metrics, relevant time periods, and potential confounding factors. Determine what data to pull and how to analyze it.[3]
Practice Interview
Study Questions
Data Validation and Sanity Checks
After writing a query, validate results by checking row counts, spot-checking sample records, comparing to expected ranges, and identifying data quality issues. Communicate assumptions and limitations in your analysis.
Practice Interview
Study Questions
Complex SQL Query Construction
Write multi-step queries solving ambiguous analytics problems. Combine multiple JOINs with subqueries and CTEs. Handle time-based aggregations and date calculations. Optimize queries for readability and reasonable performance. Debug queries that return unexpected results.[2]
Practice Interview
Study Questions
Onsite Round 2: Product Case and Metrics Deep Dive
What to Expect
This 60-minute interview with a product-focused data scientist or senior analyst tests your ability to define metrics for a new feature, analyze experimental results, or diagnose performance issues.[1] You'll receive a business scenario (e.g., 'DoorDash is testing a new loyalty program for customers - how do you measure success?') and must think through what metrics matter, why, and how to monitor them. The round may include analyzing sample data and providing recommendations. This assesses product intuition and your ability to translate business goals into analytical frameworks.
Tips & Advice
Start by deeply understanding the business objective - ask clarifying questions about goals, success definition, and constraints. Avoid proposing too many metrics (typically 3-5 primary metrics plus guardrails is better than a dozen). Explain the rationale for each metric - why does it matter? What decision would you make based on changes in this metric? Discuss trade-offs (e.g., customer acquisition vs. long-term retention).[3] For experimental analysis, think about statistical validity and practical significance. Use frameworks like HEART metrics or pirate metrics if familiar, but focus primarily on DoorDash-specific business context.
Focus Topics
Experimentation and A/B Testing
Design experiments to test hypotheses: specify control and treatment groups, define primary success metrics and guardrails, estimate required sample sizes and duration. Interpret experimental results considering statistical significance, practical significance, and confidence intervals. Discuss potential pitfalls: multiple comparison problems, network effects, and false positives.[1][3]
Practice Interview
Study Questions
Understanding DoorDash's Three-Sided Marketplace Dynamics
Comprehend the interconnected nature of DoorDash's marketplace: decisions affecting consumers (e.g., delivery fees, promotions) impact merchants and drivers.[2] Understand trade-offs: faster delivery times cost more; lower fees reduce merchant profitability. Recognize metrics specific to each side (consumer satisfaction, merchant retention, driver earnings) and how changes in one side ripple through the system.
Practice Interview
Study Questions
Data Storytelling and Business Recommendation
Given metrics and data, communicate findings clearly to non-technical stakeholders. Highlight key insights, explain what the data reveals and what remains uncertain, and provide actionable recommendations. Use visualizations conceptually to support conclusions.[3]
Practice Interview
Study Questions
Metrics Definition Framework
Approach metric definition systematically: identify business objectives, choose metrics that track progress toward those objectives, distinguish between primary success metrics and guardrail metrics that protect against unintended consequences.[2] Explain why each metric matters and what actions follow from changes in that metric.
Practice Interview
Study Questions
Onsite Round 3: Machine Learning and Modeling
What to Expect
This 60-minute technical interview with a machine learning-focused data scientist assesses your understanding of ML fundamentals and ability to approach modeling problems systematically.[1] You'll discuss core ML concepts (bias-variance tradeoff, cross-validation, overfitting) and potentially approach a modeling scenario (e.g., 'How would you build a model to predict delivery times?'). The round tests both theoretical understanding and practical thinking about model design, feature engineering, and validation.
Tips & Advice
For conceptual questions, explain concepts clearly with examples rather than textbook definitions. For modeling scenarios: clarify the business problem (are we predicting or explaining?), define the target variable precisely, discuss features and data sources, outline validation strategy, and address practical concerns (data leakage, model interpretability, computational cost).[1] Don't over-optimize - entry-level focus should be on understanding fundamentals, not proposing cutting-edge techniques. Be honest about gaps in your knowledge and explain how you'd approach learning unfamiliar topics.
Focus Topics
Modeling for DoorDash Problems
Approach realistic DoorDash scenarios: predicting delivery times (regression), detecting fraudulent orders (classification), estimating demand (time-series forecasting), or ranking restaurants.[1] For each, discuss data requirements, appropriate algorithms, evaluation strategy, and potential business constraints (latency, interpretability).
Practice Interview
Study Questions
Feature Engineering for Real-World Modeling
Discuss how to create meaningful features from raw data: transformations (log, normalization), interactions, domain-inspired features, and temporal features for time-series data. Consider feature importance and interpretability. Recognize common pitfalls: data leakage and using information unavailable at prediction time.
Practice Interview
Study Questions
Cross-Validation and Model Selection
Understand why cross-validation is important for reliable model evaluation.[1] Know different validation strategies (k-fold, stratified, time-series aware). Discuss how to use validation to select between models and avoid overfitting. Recognize limitations of validation approaches (e.g., temporal data requires careful handling).
Practice Interview
Study Questions
Machine Learning Fundamentals
Understand core ML concepts: supervised vs unsupervised learning, regression vs classification, training/validation/test splits, overfitting vs underfitting, model evaluation metrics (accuracy, precision, recall, AUC, RMSE). Know the difference between bias and variance and understand the bias-variance tradeoff conceptually.[1]
Practice Interview
Study Questions
Onsite Round 4: Behavioral and Culture Fit
What to Expect
The final 45-minute interview with a data science manager or senior team member focuses on behavioral questions, problem-solving approach, and cultural fit.[1] Questions explore how you've handled ambiguity, worked with cross-functional teams, learned quickly, and handled setbacks. This round assesses whether you share DoorDash's values: intellectual honesty, bias toward action, and ownership mentality.[3] Your ability to communicate clearly, ask good questions, and demonstrate curiosity matters as much as technical depth.
Tips & Advice
Use the STAR method (Situation, Task, Action, Result) for behavioral questions, with emphasis on concrete outcomes and metrics.[1] Share genuine stories showing learning from failure - DoorDash values intellectual honesty and rapid iteration.[3] Demonstrate collaboration and cross-functional thinking. Discuss how you stay current with data science trends (reading papers, taking courses, working on side projects). Ask thoughtful questions about the team's current challenges, learning opportunities, and how success is measured. Avoid corporate jargon; be authentic. Prepare a clear, honest answer to 'Why DoorDash?' that ties to your interests and career goals, not just company prestige.[3]
Focus Topics
Handling Failure and Feedback
Describe a project that didn't go as planned - an experiment with null results, a model that didn't perform well, or an analysis that contradicted your hypothesis. Discuss how you communicated the outcome, what you learned, and how you pivoted next steps.[3] Emphasize intellectual honesty over defensiveness.
Practice Interview
Study Questions
Cross-Functional Collaboration and Communication
Share experiences working with engineers, product managers, or business stakeholders who had different priorities or perspectives.[1] Discuss how you communicated findings to non-technical audiences, handled disagreements productively, and aligned on shared goals.
Practice Interview
Study Questions
Problem-Solving Approach Under Ambiguity
Share examples of navigating ambiguous problems: unclear requirements, incomplete data, competing priorities. Discuss how you clarified objectives, broke problems into smaller pieces, and validated assumptions.[3] Highlight your bias toward action - progressing with imperfect information rather than waiting for perfect clarity.
Practice Interview
Study Questions
Learning Agility and Growth Mindset
Describe a time you quickly learned a new technical skill, domain knowledge, or tool. Explain your learning process: what resources did you use? Who did you ask for help? How did you validate your understanding? Emphasize curiosity and willingness to work outside your comfort zone.
Practice Interview
Study Questions
Impact Through Data Analysis
Describe a specific project where your analysis led to business impact.[1] Use STAR framework: Situation (business context), Task (what you were trying to accomplish), Action (analytical approach), Result (measurable outcome). Emphasize learning and how you'd approach the problem differently with current knowledge.
Practice Interview
Study Questions
Frequently Asked Data Scientist Interview Questions
A stakeholder keeps asking for the full detailed dashboard, but you believe a short narrative summary is what they actually need to make the decision. How do you resolve that?
Sample Answer
Direct answer
Don't treat it as narrative versus dashboard, give both, but change which one is the default view. Lead with a short narrative stating the decision-relevant takeaway, and keep the full dashboard one click or one slide away so the stakeholder can self-serve or verify a number without you gatekeeping the underlying data.
Structured elaboration
- Diagnose why they want the full dashboard. It could be distrust of your synthesis, a habit from before narrative summaries existed, or a genuine need to slice the data themselves.
- If it's distrust, that is a relationship problem to fix with a track record of accurate synthesis over time, not a formatting problem you can solve in one deliverable.
- If it's a genuine self-serve need, make the narrative the front page and link the dashboard as the appendix rather than dropping the narrative altogether.
Worked example
A BI analyst's sponsor insists on seeing the full 40-metric dashboard every week. The analyst starts sending a 3-bullet narrative email ("signups up 8% week over week, driven by the paid channel; retention flat; one metric to watch, refund rate ticked up half a point") with the dashboard link at the bottom. After a month the sponsor mostly replies to the narrative and stops opening the dashboard link most weeks, but keeps it available for the weeks they want to check a specific number themselves.
Trade-offs and pitfalls
Removing the detailed view entirely risks looking like you're hiding something. Always leading with the raw dashboard loses your chance to frame the interpretation, and the stakeholder may draw their own, sometimes wrong, conclusions from the unframed numbers.
What the interviewer probes next
Expect a follow-up on what you'd do if a stakeholder explicitly says they don't trust your narrative and want to see everything raw, every time.
Looking back over the last year, how do you know you got better at your job rather than just busier? What would you show someone else to back that up?
Sample Answer
Direct answer
Busier shows up in hours worked and volume of output; better shows up in what I can now do that I couldn't a year ago, or the same thing done with meaningfully less support, time, or error. So the evidence I look for is about capability, not throughput, and I check it against a target I set at the start of the period, not just once at year-end.
Structured elaboration
| Signal type | Busier (throughput) | Better (capability) |
|---|---|---|
| What it measures | More of the same kind of work at the same difficulty | Doing something you couldn't have done before, or doing it with less support |
| Example | More tickets closed, more meetings run, more deals worked | Handling an escalation unaided that used to need a senior colleague |
| Risk if mistaken for growth | Rewards staying in a comfort zone at higher volume | None, it's the actual signal |
- Separate volume from capability directly. Shipping more of the same kind of thing at the same difficulty is throughput, not growth. The real signal is a new kind of problem you can now handle, or an old one you can now handle faster, more independently, or with fewer mistakes.
- Mix countable signals with qualitative ones. Countable: time to complete a class of task, error or rework rate, how far up an escalation chain you can now handle without help. Qualitative: what kind of problem people now bring you first, what you no longer need to ask about that you used to.
- Set the target ahead of time and reassess on a cadence. I pick one to three specific capability targets at the start of the period and check progress partway through, rather than only asking the question for the first time at the annual review, so the year-end check is a confirmation, not a surprise.
- Make the evidence legible outside your own team. I translate it into plain terms someone without your team's internal jargon could understand, since the whole point of evidence is that it should be checkable by someone who wasn't there for the year.
Worked example
Looking back over a year, I could point to a genuinely higher volume of deals worked, but that alone wouldn't have told me much. What I actually used as evidence was that at the start of the year, I could not scope and answer a technical objection from a prospect without pulling in a senior colleague, and by year end I could handle the majority of those unaided, with the colleague only looped in for a small, specific category I'd deliberately flagged as still outside my depth. I'd set that as an explicit target back in the first quarter, checked in on it at the midpoint by tracking how often I still needed to escalate a technical question, saw the rate dropping, and by year-end had a concrete number to show: escalations for that category had gone from roughly half of relevant conversations to under a fifth. That was legible to someone outside my team too, since it didn't depend on knowing our internal process, just on understanding what "needed help" versus "didn't" meant.
Trade-offs and pitfalls
The most common mistake is citing volume metrics like tickets closed or hours logged as if they were proof of growth, when they mostly measure how busy you were, not what you're now capable of. The opposite mistake is a vague self-assessment with nothing checkable behind it, which doesn't hold up when someone outside the situation asks for evidence. Judging growth only once, at year-end, is also risky, since it means you find out too late if the year didn't actually build the capability you assumed it would.
Design an end-to-end model-selection and hyperparameter-tuning pipeline for a production ML team: data splitting policy, the search strategy you'd default to, how candidate models get promoted from experimentation to a champion, and how the whole thing stays reproducible and auditable as headcount grows.
Sample Answer
Direct answer
A data-splitting policy fixed and versioned per project (train/validation/test, with a held-out test touched rarely), a default search strategy (random or Bayesian depending on trial-budget and model cost), an explicit promotion gate from experimentation to champion (a defined metric bar plus a human sign-off, not an automatic swap), and full experiment tracking (configuration, code version, data version, metrics) as the backbone of both reproducibility and audit.
Structured elaboration
- Data splitting: define the split policy once per project (e.g. time-based for anything with temporal structure, stratified random otherwise), version it so everyone on the team uses the identical split, and treat the test set as precious, touched only for a final, occasional check, never as a routine part of iteration.
- Default search strategy: random search as the safe default for small trial budgets or cheap models; Bayesian optimization for expensive models with a modest hyperparameter count; multi-fidelity (Hyperband/ASHA, Asynchronous Successive Halving) when trials can be cheaply partially evaluated. The team shouldn't have to re-decide this from scratch on every project, a documented default with clear exceptions saves real time.
- Promotion from experimentation to champion: a defined metric bar the candidate must clear (not just "better than current champion" by any margin, but by a margin that clears your noise threshold, tying back to the statistical-significance discussion), plus a human review step before a new champion actually replaces the current production model, since automated promotion on a noisy metric alone is a real risk.
- Reproducibility and audit at scale: every experiment run tracked with its full configuration, code version (commit hash), data version, and resulting metrics in a shared, queryable system; as headcount grows, this is what lets someone NOT involved in the original experiment understand what was tried and why a given model was promoted, rather than that knowledge living only in one person's memory or a Slack thread.
Worked example
A team of 15 data scientists shares one experiment-tracking backend; every training run auto-logs its config/code-version/data-version/metrics; promotion to champion requires clearing a pre-agreed significance-tested improvement AND a sign-off from a designated reviewer, both enforced by the pipeline rather than left to individual discipline, so the process holds up even as new team members join who weren't around when the conventions were set.
Trade-offs & pitfalls
The single most common failure mode as a team scales past a handful of people is exactly the ad-hoc version of this: everyone using slightly different splits, no shared tracking, and promotion decisions made informally; the fix isn't more process for its own sake, it's making the RIGHT defaults easy and the wrong shortcuts hard, e.g. tooling that auto-logs everything rather than relying on individual discipline to remember to do it.
Compute percent change versus the same period one year ago using a multi-step LAG offset (for example LAG(value, 365)), and discuss what goes wrong around leap years. Then handle the harder version: comparing to the same weekday last year rather than the same calendar date, so a Monday compares to a Monday.
Sample Answer
Direct answer
LAG(value, 365) assumes the row exactly 365 positions back is "the same calendar date one year ago." That assumption only holds if every day has exactly one row and no leap day falls inside the twelve months between the two rows; once a February 29 sits in that span, the 365-row offset lands one calendar day early. The fix is to stop counting rows and instead join the table to itself on date - INTERVAL '1 year', which tracks the calendar directly. A second, independent problem is that "the same calendar date last year" is not "the same day of the week": a Monday this year usually is not a Monday on the same numeric date last year, which matters for anything with weekly seasonality (retail traffic, weekday-vs-weekend patterns). Fixing that requires aligning on the ISO week (the ISO 8601 standard's week-numbering scheme, where every week runs Monday through Sunday) and weekday, not on the calendar date.
Structured elaboration
Why the row offset breaks: LAG(x, 365) is positional, not date-aware. Executed directly: DATE '2024-03-01' - INTERVAL 365 DAY returns 2023-03-02, one day later than the true "same date last year" (2023-03-01), because 2024 is a leap year and the twelve months between those two dates contain 366 days, not 365. DATE '2024-03-01' - INTERVAL 1 YEAR correctly returns 2023-03-01 because interval-year arithmetic follows the calendar, not a fixed day count.
Fix 1, calendar-date join:
SELECT
cur.store_id, cur.sale_date, cur.total_sales,
prev.total_sales AS total_sales_last_year,
CASE WHEN prev.total_sales IS NULL THEN NULL
ELSE ROUND((cur.total_sales - prev.total_sales)::numeric / prev.total_sales * 100, 2)
END AS pct_change_yoy
FROM daily_sales cur
LEFT JOIN daily_sales prev
ON prev.store_id = cur.store_id
AND prev.sale_date = cur.sale_date - INTERVAL '1 year';
February 29 has no "same calendar date" last year at all; decide explicitly whether it maps to February 28 or March 1 in the join (a CASE on the anchor date), and document the choice, because either is defensible and silent inconsistency between reports is worse than either choice alone.
Fix 2, weekday alignment: two workable techniques, with different trade-offs.
- A fixed 364-day (52-week) offset guarantees an exact day-of-week match, because 364 = 52 × 7. Executed:
DATE '2024-03-04' - INTERVAL 364 DAYreturns2023-03-06, and both2024-03-04and2023-03-06are Mondays. The cost is that 364 days is not a full calendar year, so across several years the "last year" comparison date drifts away from the true anniversary date by roughly one to two days per year. - An exact join on
(ISO year - 1, ISO week, ISO weekday)anchors to the actual week structure instead of a fixed day count. Executed against two rows (2023-03-06, a Monday in ISO week 10 of 2023;2024-03-04, a Monday in ISO week 10 of 2024): joining onisoyear(prev) = isoyear(cur) - 1 AND weekofyear(prev) = weekofyear(cur) AND isodow(prev) = isodow(cur)correctly matches the two Mondays.
Worked example
Naive calendar-date weekday check: 2024-03-04 is a Monday; the naive "same date last year," 2024-03-04 - INTERVAL 1 YEAR = 2023-03-04, is a Saturday. A week-over-week or day-of-week-sensitive comparison using the naive join would be comparing a Monday's traffic to a Saturday's traffic and drawing a conclusion about "year-over-year growth" that is really a day-of-week artifact.
Trade-offs & pitfalls
- The fixed-365-row offset is the cheapest to write and looks correct on data that happens not to cross a leap day during testing, which is exactly how this bug ships silently.
- The calendar-date self-join needs an index on
(store_id, sale_date)to stay cheap; without one, the self-join becomes an expensive full scan on both sides. - The 364-day weekday-alignment offset is simple but not exact over multiple years; if you need the comparison to stay a true anniversary AND stay on the same weekday indefinitely, only the ISO year/week/weekday join does both correctly.
- ISO week numbering follows the Gregorian calendar's own week structure; a business running a genuinely different fiscal calendar (e.g. 4-4-5 retail calendars) needs to join on that calendar's own week definition, not ISO weeks, or the "same week" comparison is still wrong despite looking fixed.
A product team is designing an experiment that changes the homepage layout and needs to decide the unit of randomization: user id, session id, cookie, device, or household. For each candidate unit, describe the trade-offs (bias, cross-unit contamination, measurement noise) and explain how hash-based deterministic bucketing works in practice, including operational pitfalls such as changing hashing keys or salts mid-experiment. Recommend how you would detect and correct unit-mismatch problems after the experiment has run.
Sample Answer
Direct answer
The randomization unit should be the largest identity that is (a) stable over the experiment window and (b) matches the unit at which you will measure and report the outcome. For a homepage layout change with user-scoped conversion metrics, that is almost always user id when you have reliable logged-in identity; fall back to device id for logged-out mobile traffic, and treat cookie and session id as fallback-only units because they leak identity across the very boundary you are trying to hold fixed. The mechanism that turns "unit" into an actual bucket assignment is deterministic hash-based bucketing, and its main operational failure mode is touching the hash inputs (the salt or key) mid-experiment. Before any of that, though, you have to define who is even eligible to be in the experiment at all.
Structured elaboration
Defining the eligible population before choosing a unit
Unit choice is a second-order question; the first-order question is which units are even eligible to enter the experiment. For a mobile-only feature (say, a redesign shipped exclusively in the mobile app to a US audience), a desktop-only visitor cannot receive the treatment no matter which arm they land in, so randomizing across your full user base and then measuring outcomes at the account level silently dilutes the experiment: ineligible units get logged into both arms with a null "effect" (they cannot experience the change either way), which pulls the estimated treatment effect toward zero and inflates the sample size needed to detect a real one. The eligible population for a mobile-only US feature is the set of units that are (a) on the mobile platform that ships the feature, (b) in the targeted market (US), and (c) past whatever version or capability gate the feature requires; everyone outside that eligible population should be excluded from the experiment entirely, not folded into control by default. This is a distinct failure mode from picking the wrong unit: a design can choose a perfectly good unit (user id) and still be broken if a third of the "users" randomized into it were structurally incapable of ever seeing the treatment, whether the unit ultimately chosen within that eligible population is user, device, or session id.
Trade-offs by candidate unit
| Unit | Bias risk | Cross-unit contamination | Measurement noise | When it fits |
|---|---|---|---|---|
| User id | Low, if identity is stable and logged-in coverage is high | Low: one identity, one assignment across devices/sessions | Low: outcome aggregates cleanly to the assignment unit | User-scoped metrics (conversion per user, retention) with strong login coverage |
| Device id | Moderate: a shared household device mixes two people's behavior | Moderate: a device is stable, but a person moving across devices is not held fixed | Moderate | Logged-out or app-only surfaces where device is the closest stable identity |
| Cookie | Moderate to high: cleared on privacy sweeps, differs per browser | High: the same person can carry two cookies (two browsers) or none (private mode), landing in both arms or neither | High: undercounts multi-device, overcounts churny cookie population | Legacy web-only experiments with no login signal, used with caveats |
| Session id | High | High: the same user gets reassigned every new session, so the "treatment" a user experiences is not stable | High: session-level noise dominates any user-level signal | Only for genuinely session-scoped questions (e.g., a single-session UI micro-test) |
| Household | Low for spillover, but a distinct effective-sample-size cost | Low: contains treatment inside the family unit when family members influence each other's behavior | High variance per unit relative to user-level randomization, because you have fewer households than users | Shared-consumption products (streaming, shared carts) where one member's exposure changes another's behavior |
The two axes that matter are: does this unit stay attached to one treatment condition for the life of the experiment, and does it match the level at which you will later compute the metric. Session-level randomization on a homepage layout change fails both: a returning user can see version A on Monday and version B on Wednesday, so "the effect of the layout" is not well defined for that person, and if you then report a user-level conversion rate you are averaging over users who experienced a mix of both conditions.
Target-segment and control-group selection for a personalization test
Personalization experiments add a further wrinkle on top of eligibility and unit choice: because the treatment itself varies per person (each user's personalized experience differs from every other user's), you have to be explicit about two more things: which segment of the eligible population the test targets, and what the control group actually receives. A common setup: the target segment is the subset of eligible users with enough interaction history for the personalization model to act on (say, users with a minimum number of prior sessions); users below that threshold cannot be meaningfully personalized and should either be excluded from the test or routed to a defined fallback, rather than silently folded into a "control" group that has nothing to do with the personalization decision being tested. The control group, correspondingly, should receive a clearly defined non-personalized baseline (a fixed default ranking or layout), not "whatever the legacy system happened to show," so the measured effect is attributable to personalization itself rather than to incidental differences between the two code paths. Get target-segment or control-group definition wrong (an ill-specified segment boundary, or a control group that partially overlaps with treatment logic) and the measured lift reflects a spurious selection effect rather than the personalization algorithm's real value, no matter how correctly the underlying randomization unit and hash mechanism were implemented.
How hash-based deterministic bucketing works
In practice you do not store a per-user assignment row for every experiment. Instead you compute
bucket(u)=hash(u∥salt)modN
where u is the chosen unit id (user id, device id, etc.), the salt is a string unique to this experiment (often the experiment name or id), and N is the number of buckets (commonly 100 or 1000 for fine-grained traffic allocation). Buckets are then mapped to arms, e.g. buckets 0-49 to control and 50-99 to treatment for a 50/50 split. Because the hash is deterministic, the same unit id always lands in the same bucket for the same salt, which is what makes the assignment reproducible without a lookup table, and salting per-experiment is what makes assignment to experiment A independent of assignment to experiment B (so the same user can be validly in many concurrent, non-interacting experiments).
Operational pitfalls
- Changing the salt or hashing key mid-experiment. This is the single most common self-inflicted wound. It re-shuffles every unit into a new bucket, silently reassigning some fraction of users from control to treatment (or the reverse) partway through. The experiment now mixes users with a clean single-arm history and users who were exposed to both arms, which is exactly the session-level contamination problem from the table above, except it is invisible unless you log assignment history.
- Reusing a salt across experiments. If two unrelated experiments accidentally share a salt (or one is a substring of the identifier used in the other), their bucket assignments become correlated instead of independent, which breaks the assumption that concurrent experiments do not interfere with each other.
- Changing N or the bucket-to-arm mapping. Even without touching the salt, resizing the traffic split mid-flight (e.g., ramping from 5% to 50%) moves units across the arm boundary unless the mapping is designed to be monotonic (new traffic is added to existing arms rather than everyone being rehashed).
- Identity churn. A user id that gets merged, deleted, or re-issued (account merge, logout/login cycles that mint a new anonymous id) effectively becomes a new hash input mid-experiment, which has the same effect as a salt change for that user.
A finer-grained alternative: per-impression randomization
Every unit above is a person-shaped identity. Some teams instead randomize at the impression level, assigning a fresh coin flip to each page view or ranking request rather than to a person. This is occasionally used for high-frequency, low-persistence decisions (e.g., which of several ranking variants to serve on a given request) where you explicitly do not want a stable per-user experience. It is a different trade entirely from the table above: it eliminates any notion of "this user's assigned arm" (so it cannot answer a question about a durable, user-perceived change like a homepage layout), and it introduces strong intra-user correlation in the outcome data, since one person's many impressions are not independent draws, which inflates the effective variance if you naively treat impressions as independent observations in the analysis. Per-impression randomization is the right tool only when the thing being tested is meant to vary within a single user's experience; for a homepage layout, where the goal is to measure how a stable person-level experience changes behavior, it is the wrong granularity.
Detecting and correcting unit-mismatch after the fact
- Assignment-churn audit. From the exposure logs, compute the fraction of units that were logged under more than one arm during the experiment window. A near-zero rate is expected; anything material indicates contamination.
- Pre-period balance check. Compare the two arms on metrics measured before the experiment started (metrics that could not possibly be affected by treatment). An imbalance signals a broken randomization, not a broken hash necessarily, but it is the same diagnostic.
- Sample ratio mismatch check on the realized split, i.e., does the observed 50/50 (or intended ratio) actually hold at the analysis unit. A skew is a strong signal that the bucketing pipeline itself misbehaved.
- Timeline reconstruction. If churn is found, check the deployment log for the experiment: a salt, key, or bucket-count change on a specific date will produce a visible step change in the churn-rate-by-day series.
- Correction paths, in order of preference. Analyze by first-observed assignment only (treat each unit's initial exposure as its assignment, i.e., an intention-to-treat style rule, and accept the resulting dilution of the effect estimate); if the break has a clean date, restrict the analysis window to the stable period before or after it; if contamination is pervasive, drop the experiment's results for the affected window and rerun rather than trying to model around a broken assignment mechanism, since any post hoc adjustment for a data-dependent unit-mismatch is itself a source of bias.
Worked example
Suppose an app-only feature was randomized by session id and you are asked to sanity-check it before trusting the readout. You pull exposure logs and count, per user, the distinct arms they were logged under: 92,000 users saw only control, 91,500 saw only treatment, and 6,500 saw both. Churn rate is 6,500/(92,000+91,500+6,500)≈3.4%. That is a directly computed, reproducible number from the logs, not an assumption, and a value that high on a homepage-layout test (where the same person plausibly returns within the experiment window) is enough on its own to recommend re-running at user-id granularity rather than trying to salvage the session-level readout.
Trade-offs and pitfalls
- Choosing the "purest" unit (household) is not free: fewer independent units means higher variance per unit, so the same absolute effect needs more households than it would need users to reach the same precision. Unit choice is a bias-versus-noise trade, not a pure bias fix.
- A cookie- or device-based fallback is a compromise you should name explicitly to stakeholders, not a silent substitute for user id; report the estimated multi-device contamination rate alongside the headline result.
- An eligible population that is defined too loosely (e.g., randomizing all traffic instead of just the mobile-only, in-market segment) produces the same kind of diluted, biased-toward-zero readout as a bad unit choice, even when the unit itself is correct.
- Do not "fix" detected contamination by re-including the mixed-exposure users with a different weighting scheme chosen after seeing which way it moves the result; decide the exclusion or ITT rule before looking at the treatment effect.
A metric uses percentage change vs previous period; however, small denominators produce huge swings. Propose programmatic rules to detect and suppress or annotate misleading percent changes in automated dashboards, and describe how you'd communicate the rule to stakeholders.
Sample Answer
Direct answer: Suppress or annotate a percent-change figure whenever its denominator (the prior-period base) falls below a documented minimum threshold, and show the absolute change alongside the percentage so a viewer can judge materiality themselves.
Structured elaboration:
- Detection rule: flag any percent-change calculation where the prior-period base count is below a threshold calibrated to the metric (e.g., fewer than 30 conversions in the base period for a conversion-count metric; the exact number depends on how noisy the metric naturally is, not a universal constant).
- Suppression vs annotation: outright suppressing the number (showing "insufficient volume" instead of a percentage) is safer for automated alerts, where a huge misleading swing could trigger a false-positive page; annotating (showing the percentage grayed out with a footnote "base is only 4 conversions, interpret with caution") is better for a dashboard a human is actively reading, since hiding the number entirely removes information a careful reader could still use.
- Always show absolute change alongside percent change, unconditionally, not just below the threshold: "+2 conversions (+200%)" reads very differently, and more honestly, than "+200%" alone, and this single practice prevents most misleading-swing complaints without any thresholding logic at all.
Worked example: a country segment with 2 conversions last week and 6 this week shows "+200%"; alongside the absolute "+4," a reasonable viewer immediately discounts the percentage as noise from a tiny base, whereas the bare percentage without the absolute count looks like a dramatic real trend. A rule flagging "base < 30" would suppress the percentage figure for this segment specifically while still showing the raw counts, which remain meaningful regardless of base size.
Trade-offs & pitfalls: A single global threshold across every metric and segment is usually wrong; a threshold reasonable for country-level web traffic (thousands of visitors) is far too permissive for a rare event (a specific enterprise-tier signup), so the threshold should be a property of the metric's typical volume, documented per metric, not a system-wide constant. Communicate the rule to stakeholders as "we suppress percent changes below N in the base period because they're statistical noise, not because we're hiding bad news," proactively, since an unexplained suppressed number reads as evasive if a stakeholder discovers the rule only after asking why a number is missing.
You suspect a colleague's report has a hidden bias from how the data was sampled, and it's already circulating with stakeholders. How do you raise that in a way that leads to a joint investigation rather than putting them on the defensive?
Sample Answer
Direct answer
Go to the colleague privately first, before doing anything more public, and frame the concern as a question about the sampling method rather than a conclusion about their competence. Bring the specific evidence, propose a joint, falsifiable check that would settle whether the bias is real, and only then decide together how to handle the already-circulated report.
Structured elaboration
- Verify before you raise it. Confirm the specific gap yourself (which source, what kind of gap) so you are not escalating a hunch. Raising a vague suspicion is more likely to read as an attack than raising a concrete, checkable one.
- Private channel first. Do not raise it in the stakeholder meeting or a public thread. The goal at this stage is a shared understanding between the two of you, not a public correction.
- Lead with evidence, not the conclusion. Ask how the sample was chosen and show what you noticed, rather than opening with "your report is biased." The evidence does the work; you are not the one delivering a verdict.
- Propose a joint, falsifiable test. Agree in advance on a specific check that would settle the question either way, for example, re-running the analysis with a more complete data source and comparing results. If the two produce materially different conclusions, that is evidence of the bias; if not, the original report holds and nothing was lost.
- Handle the stakeholder-facing correction together. If the test confirms the bias, present the fix as a normal part of the quality process, credit the colleague's original work, and avoid framing it as catching an error.
Worked example
A colleague circulated a cohort analysis to stakeholders built from a single data source you know has intermittent collection gaps. Rather than flagging it in the stakeholder thread, you ask to talk privately: "I noticed this cohort uses source A, do you know if that source had full coverage this quarter?" You show the specific evidence (gap periods, affected date ranges) and ask how the sample was chosen. Together you agree on the joint test: re-run the same cohort analysis using a second, more complete source and compare the two results. If the numbers move meaningfully, you have confirmed a real bias and both go to stakeholders together with an updated report and a data-quality caveat; if the numbers hold steady, the original report stands and the check cost an afternoon, not a reputation.
Trade-offs & pitfalls
- Raising it directly in the stakeholder meeting "to protect the org from a bad decision" scores a point in the moment but damages the working relationship and makes the colleague defensive on the next collaboration.
- Staying silent because raising it feels confrontational lets a real bias ship into decisions uncorrected, which is a worse outcome for the partnership than a slightly awkward private conversation.
- The senior move here is designing the joint test so the evidence settles the question, rather than relying on how persuasively you phrase the concern. A well-chosen test does the convincing; the conversation itself does not have to.
- A remaining pitfall: proposing a fix without proposing how to verify it worked. A joint investigation that ends without a joint, agreed check on the outcome tends to resurface as the same disagreement later.
A new feature 'QuickShare' is available to 2,000 eligible users. Within 14 days, 500 used it at least once and 150 used it three or more times. Calculate the 14-day adoption rate and the 14-day power-user adoption rate, and explain what these two numbers together imply about the feature's early health.
Sample Answer
The two adoption numbers together tell a very different story than either alone: a healthy top-line adoption rate can still mask a small, weak core of repeat users, and that gap is exactly what a power-user rate is designed to surface.
Worked calculation
Given 2,000 eligible users, 500 used QuickShare at least once, and 150 used it three or more times within 14 days:
14-day adoption rate=2,000500=25%
14-day power-user adoption rate=2,000150=7.5%
What the two numbers imply together
Of the 500 users who tried the feature at least once, only 150 (30% of the ones who tried it, $150/500$) came back for three or more uses; the other 70% of first-time triers ($350/500$) did not return to it a third time within the window. A quarter of the eligible population tried the feature (a respectable initial discovery rate), but only about 1 in 13 eligible users ($150/2{,}000$) turned it into a repeated habit, which is the number that actually predicts whether QuickShare is becoming a durable part of the product rather than a novelty that gets tried once and abandoned.
Trade-offs and pitfalls
Reporting only the 25% headline adoption number would look like a solid early result and could lead a team to declare success prematurely; the much lower 7.5% power-user rate is the more honest signal of whether the feature is delivering repeat value, and it's the number that should drive a keep/iterate/deprioritize decision, not the top-line figure alone.
After a rollout you observe increased conversions but a spike in chargebacks and suspected fraud. Outline your immediate triage actions, the metrics you would monitor short- and long-term, and your rollback criteria.
Sample Answer
Direct answer: Immediately separate the two problems: trigger fraud-specific triage (freezing or flagging suspicious transactions, alerting the fraud/trust-and-safety team) on a fast, largely independent track from the broader feature rollback decision, since acting on active fraud cannot wait for a full metrics review, while the rollback decision itself should still be evaluated against both the conversion gain and the chargeback cost together.
Structured elaboration
- Immediate triage (minutes to hours): engage the fraud/trust-and-safety team to review the specific transactions driving the chargeback spike, flag or hold suspicious ones if the payment system allows it, and determine whether the pattern indicates coordinated abuse (which needs an urgent, narrow fix) versus a broader unintended side effect of the feature (which needs a broader decision).
- Short-term metrics to monitor: chargeback rate and confirmed-fraud rate hour-by-hour (these move fast and are the acute risk), alongside the conversion metric that motivated the feature in the first place, so the team is not flying blind on either dimension.
- Longer-term metrics to monitor: even after the acute fraud pattern is addressed, watch for a slower-moving trust erosion (repeat-customer rate, support-ticket sentiment) that a fraud spike can cause even among unaffected customers, once word of the issue spreads.
- Rollback criteria: set a specific, pre-decided threshold for when the feature is paused regardless of the conversion gain (e.g., confirmed fraud rate above X%, or chargeback rate above Y%, sustained for Z hours), and treat that threshold as a hard gate rather than something to negotiate with the good conversion numbers, since a fraud problem's severity does not become acceptable just because the underlying feature also drove growth.
- Decoupling fixes from rollback: if the fraud driver is identifiable and fixable quickly (e.g., a specific validation step the feature skipped), consider a targeted fix and a brief pause rather than a full rollback, but only if the fix can be verified before re-enabling, not on the promise that it will work.
Worked example: A one-click checkout feature increases conversion 8% but chargebacks spike to 3x baseline within 48 hours, concentrated in transactions from a specific set of new accounts created in the same week. Immediate triage flags and holds transactions from that account cluster while the fraud team investigates; the pattern is confirmed as a coordinated abuse ring exploiting a specific validation gap the new checkout flow introduced. The team pauses the feature for the affected account segment only (not the whole feature), ships a fix closing the validation gap within 24 hours, verifies the fix against a held-out sample of the abuse pattern, and re-enables broadly once verified, preserving most of the conversion gain while eliminating the fraud vector.
Trade-offs and pitfalls: The most damaging mistake is waiting for a full rollback/keep analysis (which naturally weighs conversion gains against everything else) before taking any fraud-specific action, since active fraud compounds quickly and does not wait for a metrics review cycle. The opposite mistake is rolling back the entire feature broadly when the fraud pattern is actually narrow and fixable, unnecessarily sacrificing a real conversion gain for the segment of users where no fraud risk exists.
How do you handle cold-start entities (a brand-new user or item with little or no historical feature data) at serving time? Discuss fallback and default-value strategies, cohort-level aggregates, synthesized or transfer-learned features, and the trade-off between added complexity and predictive uplift for a recommendation system with a rapidly-changing catalog and almost no historical interaction data.
Sample Answer
Direct answer: Cold-start entities (a brand-new user or item with little or no history) need an explicit fallback strategy rather than simply feeding missing or zero-filled features into the model, because the absence of history is itself informative and needs to be represented, not disguised as a normal (if low) value.
Structured elaboration:
Common strategies: cohort-level defaults (fall back to the average behavior of a similar segment, e.g. new users from the same acquisition channel, rather than a global average or a naive zero); explicit missingness flags (a boolean "is this entity new" feature, so the model can learn a genuinely different behavior for the cold-start case rather than being misled by a filled-in value that looks like real history); synthesized or content-based features (for a new item with no interaction history, using its metadata, category, or a similarity to existing items instead of behavioral signal that doesn't exist yet); and transfer or pretrained representations (an item embedding warm-started from content similarity to existing items, refined as real interaction data accumulates).
For a rapidly-changing catalog with almost no historical interaction data (a brand-new product vertical), the practical approach usually leans harder toward content-based and cohort-based features initially, with a defined transition plan for when enough real interaction data accumulates to shift weight toward behavioral features, rather than trying to force behavioral features to work from day one with almost no signal behind them.
Worked example: A recommendation model serving a brand-new item defaults its "average rating" feature to a global constant. Without an explicit cold-start flag, the model treats this constant as if it were a genuinely-observed, middling rating, likely under- or over-recommending the item based on an artifact of the fallback value rather than any real signal; adding an explicit "is new item" flag lets the model instead learn to weight content-based signals more heavily specifically in the cold-start case, producing meaningfully different (and more sensible) behavior for new items than old ones.
Trade-offs and pitfalls: The complexity-versus-uplift trade-off is real: building a sophisticated transfer-learning cold-start system is a meaningful engineering investment, and for a product where cold-start entities are rare or low-stakes, a simpler cohort-default-plus-flag approach may capture most of the practical benefit at a fraction of the cost.
Recommended Additional Resources
- DataLemur (datalemur.com) - DoorDash-specific SQL interview problems with explanations
- Prepfully (prepfully.com) - DoorDash interview guides and mock interviews
- LeetCode SQL and Medium problems - Practice SQL optimization and analytics queries
- InterviewQuery - Case studies and metrics definition frameworks
- Mode Analytics SQL Tutorial - SQL fundamentals and advanced queries for analytics
- Reforge's 'Analytics for Product Managers' and 'Experimentation' courses - Understanding metrics and A/B testing from product perspective
- Khan Academy Statistics - Refresher on basic statistics, distributions, and hypothesis testing
- Kaggle Datasets - Practice building end-to-end analytics projects from raw data
- Glassdoor and Blind community posts - Recent interview experiences from actual DoorDash candidates
- DoorDash Engineering Blog - Research recent DoorDash technical articles to understand company's technology priorities and challenges
Search Results
DoorDash Data Scientist Interview
2.4 Behavioral / Leadership Questions · Describe a time you used data to influence a business decision at DoorDash. · How do you prioritize ...
DoorDash Data Scientist Interview Guide
Interview Questions · How do you analyze if a product is successful? · What are the most important metrics for DoorDash? · How do you measure revenue and cost?
DoorDash Data Scientist Interview Guide: Questions, Case ...
Expect questions on how you've influenced product decisions, aligned on metrics, or resolved ambiguity across teams.
DoorDash Data Scientist Interview Guide
Tell me about one of your favorite projects. · How do you work with non-technical stakeholders? · How do you prioritize your work? · How do you handle differences ...
DoorDash Data Scientist Interview Question - Solving a ...
In today's video, let's delve into a common merchant acquisition question asked during DoorDash Data Science interviews.
8 DoorDash SQL Interview Questions (Updated 2025)
What Do DoorDash Data Science Interviews Cover? · Probability & Statistics Questions · Python or R Programming Questions · A/B testing Questions ...
This interview preparation guide was generated using AI-powered research from the sources listed above. While we strive for accuracy, we recommend verifying critical information from official company sources.
Want to create your own tailored preparation guide using our deep research?
Get Started for FreeInterview-Ready Courses
Visual-first, interactive, structured learning paths