At NIKE, data science is not merely a support function; it is a competitive advantage that fuels the Consumer Direct Offense. As a Data Scientist here, you are part of a massive global ecosystem that blends sport, culture, and technology. The role sits at the intersection of complex algorithms and tangible consumer products, influencing everything from supply chain logistics and demand forecasting to personalized user experiences on apps like Nike Run Club and SNKRS.
You will work on high-impact problems that directly affect the bottom line and the athlete experience. Whether you are optimizing inventory distribution to ensure the right shoes reach the right stores or building recommendation engines that connect consumers with products they love, your work drives decision-making at scale. You will join teams that champion innovation, often working cross-functionally with product managers, engineers, and designers to translate raw data into actionable strategic insights.
Expect a dynamic environment where "Just Do It" applies to rapid prototyping and deploying models into production. The culture values storytelling as much as statistical rigor; your ability to communicate complex findings to non-technical stakeholders is just as critical as your ability to tune hyperparameters. You are not just analyzing data; you are shaping the future of sport and retail.
Recruiter Screen
reportedA screening call is a matching exercise run by someone who will not evaluate your statistics. They are checking that the work described on your resume is work you personally did, and that its scope matches the level the role is written for. Logistics get settled in the same half hour so nobody spends an interviewer's afternoon on a mismatch. The answer that fails is the one narrated in the plural. If every sentence is 'we built' and 'the team decided', there is nothing specific to write down about you. Name the piece that was yours, the decision you made inside it, and what changed after.
What to demonstrate
- Whether the ownership implied by your resume survives one round of follow-up about who actually did which part
- Whether your described scope (data size, stakeholders, what shipped) matches the seniority the role is written at
- Whether timeline, location and compensation expectations make the rest of the loop worth scheduling
How to prepare
- Rewrite your top three resume bullets in the first person singular, each with the decision you made and what moved afterwards, then say them out loud once so the 'we' does not return under pressure
- Attach one number to each project: the baseline, the change, and the window it was measured over. Where impact was never measured, say that plainly rather than inventing a figure
- Settle your compensation range before the call and give it as a range with a reason behind it, such as current total comp or a competing timeline, instead of deflecting the question twice
Automated Digital Interview
reportedAn added round often puts you in front of someone outside the core hiring team: a partner engineer, a product owner, a domain expert, sometimes a more senior manager. The question they are really asking is not whether you can do the work but whether they would trust a number that came from you. That changes what a good answer looks like. Lead with what the decision cost and what it changed, keep the method available but not central, and be plain about the limits of your evidence. Overstating a result is the fastest way to lose this round.
What to demonstrate
- Whether you can explain a technical choice to someone who will never read your code, without either flattening it into nothing or hiding inside jargon
- Honesty about evidence strength: what the analysis establishes, what it only suggests, and what it cannot say at all
- How you take disagreement, specifically whether you update on a good objection, hold your position with reasons, or fold on contact
How to prepare
- Write the two-sentence version of your most technical project for a non-specialist, then check that neither sentence needs a method name to make sense.
- For one result you are proud of, write the strongest objection someone could raise and a response that concedes the part of it that is correct.
- Prepare one decision that turned out to be wrong: how you found out, what it cost, and what you changed afterwards. A senior cross-functional interviewer asks for this more often than a technical one does.
Technical Assessment
reportedBefore anything else, this round is a reading test. You are given a small schema and a question phrased in business language, and most of the difficulty sits in the gap between them. Who counts as an active user, does a refunded order still count as an order, is that date column an event time or a load time. Weak answers start typing immediately and compute something precise about the wrong population. Strong ones pin the definition in one sentence, name the column that encodes it, then write the query. On a timed assessment with nobody to tell, write the definition in a comment anyway.
What to demonstrate
- Whether an ambiguous term becomes a specific column and filter before any computation happens
- Whether you read the schema for keys and cardinality rather than only for column names
- Whether the result answers the question at the grain it was asked at, per user or per session or per day
How to prepare
- Take three metrics you already use and write down the exact filter and exact grain behind each, then practise stating one of them in a single sentence out loud
- On a schema you have never seen, spend the first minute writing what one row of each table means and which key it is unique on, then predict which joins can duplicate rows
- Rehearse a version where the definition changes halfway through, and edit the query you have instead of starting over
Final Round Interviews
reportedWhere a loop ends with a senior leader, that conversation is rarely another skills test. The technical signal already exists by then, so the questions tend to open up: what you would look at first, where a metric you have heard about could mislead, what you would push back on. The decision being made is scope, which in practice means level and how much you would be trusted to own unsupervised. Treating it as a formality is the usual mistake. An open question late in the day is still being scored, and a vague answer reads as someone who has not run anything themselves.
What to demonstrate
- Whether your view of the business has anything specific behind it, given that you are working only from what is public and are expected to say so
- Whether the scope of work you describe owning matches the scope of the role, instead of sitting a level below it
- Whether you can disagree with something concrete and stay useful about it, rather than agreeing with everything said in the room
- Whether your questions are ones only this person could answer, as opposed to ones the recruiter already covered
How to prepare
- Build one view you could defend for two minutes using only public information: what the funnel probably looks like, which metric likely drives decisions, and where that metric could mislead. Being wrong for a stated reason survives this round; having no view does not
- Write down the largest piece of work you have owned from question to decision, who else touched it, and what you decided alone, then check that it reads at the level you are interviewing for
- Prepare one thing you would want changed if you joined and phrase it as a question rather than a verdict, so it opens a conversation instead of closing one
1 candidate reports. Individual accounts describe a particular role and hiring cycle.
NIKE Software Engineer interview: repeated follow-ups and hostile response
The process felt odd and frustrating from the start. I received a virtual interview call only after several follow-ups with HR, even though I had not been invited to an ongoing face-to-face hiring drive. After the interview, I contacted HR for an update and expected a normal status message. Instead, the response was essentially a demand that I stop texting. There was no clear closure, and that ho…
Read full experiencePracHub editorial advice for the preparation topics above.
Comparing average order value across a change that alters basket composition
Free-shipping thresholds, multi-buy offers and minimum-spend coupons make customers bunch their basket just above a cut-off, so average order value moves because the mix of orders changed, not because anyone is spending more per item. The same trap appears when a change suppresses small orders: average order value rises while total revenue falls. Decompose into units per order and price per unit, look at the whole basket-value distribution rather than the mean (the bunching is visible as a spike at the threshold), and evaluate the change on revenue per session rather than on the conditional mean of orders that happened.
Judging merchandising and recommendation changes on the surface they touch
Click-through or attributed revenue on a recommendation slot rises whenever the slot shows items the customer was going to buy anyway, so the surface metric measures capture rather than creation, and the units almost always come from a different slot, a search result or a later visit. The correct read is site-wide net revenue per session over a holdout, adjusted for returns, because surfacing more apparel or more discounted stock reliably moves both the return rate and the discount depth in the wrong direction while the click metric improves.
Reading experiment results before checking the arm split
Compare observed arm counts against the intended allocation ratio, not an assumed even split, and set the alarm far below the conventional 0.05: at 0.05 roughly one healthy experiment in twenty trips it, which is why sample-ratio checks usually run at p < 0.001 or stricter. The test's power scales with sample size, so it misses a real diversion on a small experiment and fires on an imbalance too small to move the estimate on a very large one. A flag means go find the assignment or logging fault before reading any outcome, not report a mismatch.
Reaching for a model before the target metric exists
Before naming an algorithm, write down the label, the prediction time, and the action that changes when the score crosses a threshold. If you cannot say what decision the output drives, any modelling choice is guesswork dressed up as method.
Choose a category, try a prompt, then open its approach, worked solution or follow-up when you need it.
"Explain how you would handle an imbalanced dataset for a fraud detect…
"Explain how you would handle an imbalanced dataset for a fraud detection model."
Approach
- Set a baseline first, so any model has something honest to beat.
- Pick an evaluation metric that matches the cost of each error type, not a default.
- Frame the prediction: the label, the moment of prediction, and the action it triggers.
Follow-up
- What would you monitor after launch to know the model is still valid?
- Where could label leakage enter this setup?
"Explain the concept of overfitting to a product manager. How do you p…
"Explain the concept of overfitting to a product manager. How do you prevent it?"
Approach
- Set a baseline first, so any model has something honest to beat.
- Pick an evaluation metric that matches the cost of each error type, not a default.
- Check what information would not exist at prediction time, and exclude it.
Follow-up
- How would you choose the decision threshold, and who owns that choice?
- What would you monitor after launch to know the model is still valid?
Simulate the buy quantity that maximises expected season profit
You get demand_draws, 10000 samples of total season demand for one seasonal SKU, generated from the historical demand model. There is a single buy before the season, no replenishment, and leftovers clear at the end. Unit economics in cents: full price 6000, landed unit cost 2400, clearance recovery 1500 net of handling. Write a simulator that evaluates expected profit over a grid of buy quantities and returns the argmax. Then state the closed-form answer this must agree with, and quantify the profit lost by buying to the mean demand instead.
Approach
- Write profit for a single demand draw d and quantity q as (price - salvage) * min(d, q) - (cost - salvage) * q, which is the algebraic rearrangement of pricemin(d,q) + salvage(q-d)+ - cost*q and avoids computing two branches.
- Vectorise over the grid: np.minimum.outer(demand_draws, q_grid) gives a draws-by-grid matrix; take the column means to get expected profit per q in one pass rather than looping over draws.
- Derive the closed form before looking at the simulation output. Underage cost is the lost contribution per unit of unmet demand, 6000 - 2400 = 3600; overage cost is the loss per unsold unit, 2400 - 1500 = 900; the critical ratio is 3600 / 4500 = 0.8, so the optimum is the 80th percentile of demand.
- Compare argmax of the simulated curve with np.quantile(demand_draws, 0.8) and check they agree to within one grid step; a systematic gap means the profit function is miscoded, not that the theory is wrong.
- State the preconditions that make the critical ratio valid: one selling season, salvage below cost below price, demand independent of the quantity ordered, and no goodwill cost for a stockout. Adding a lost-sale penalty raises the underage cost and pushes the quantile up.
Worked solution 30 min
- Set q_grid = np.arange(0, demand_draws.max() * 1.2, 5) so the grid spans past the plausible optimum on both sides.
- Build sold = np.minimum.outer(demand_draws, q_grid) and profit = 4500 * sold - 900 * q_grid, then take profit.mean(axis=0).
- Read off q_grid[expected_profit.argmax()] and compare with np.quantile(demand_draws, 0.8).
- Evaluate expected profit at q = demand_draws.mean() and report the shortfall against the optimum in cents and as a percentage.
- Plot or tabulate the curve near the optimum to confirm it is concave and flat-topped, which is why being slightly over is cheaper here than being slightly under.
Follow-up
- A stockout sends some customers to a substitute SKU you also own. How does that change the underage cost, and in which direction does the optimal quantity move?
- The demand draws come from a model fitted on sales history that contains stockouts. What is wrong with the draws, and which direction does the error push the buy?
- How would you extend this to two buys, an initial commitment and a mid-season reorder with a lead time?
"Write a function to detect whether a word is a palindrome."
"Write a function to detect whether a word is a palindrome."
Approach
- State the window function and its partition and ordering out loud before writing it.
- Handle the rows that do not match: a LEFT JOIN with a NULL check is usually the question.
- Check whether any join is one-to-many before aggregating, or the sums inflate.
Follow-up
- How does the query change if the join becomes one-to-many?
- What breaks if events arrive late or out of order?
"How would you optimize a slow-running SQL query on a dataset with mil…
"How would you optimize a slow-running SQL query on a dataset with millions of rows?"
Approach
- Handle the rows that do not match: a LEFT JOIN with a NULL check is usually the question.
- Compute rates by summing numerator and denominator separately, never by averaging rates.
- State the window function and its partition and ordering out loud before writing it.
Follow-up
- How would you verify this result without re-running the same query?
- What breaks if events arrive late or out of order?
"Write a SQL query to find the top 5 users by spend in the last 30 day…
"Write a SQL query to find the top 5 users by spend in the last 30 days, excluding returned items."
Approach
- State the window function and its partition and ordering out loud before writing it.
- Handle the rows that do not match: a LEFT JOIN with a NULL check is usually the question.
- Say which table is the grain you start from, and join outward from it.
Follow-up
- How does the query change if the join becomes one-to-many?
- How would you verify this result without re-running the same query?
Contribution margin per delivered order across order, return and shipping costs
Compute contribution margin per delivered order for orders placed in one month, from fct_order_line (order_id, order_line_id, quantity, unit_paid_price_cents, unit_cost_cents, shipping_charged_cents, shipping_cost_cents, tax_cents, payment_method, line_status, placed_at_utc, fx_rate_to_usd) and fct_return_line (order_line_id, quantity_returned, refund_amount_cents, return_shipping_cost_cents, restocking_fee_cents, recovered_value_cents). Shipping columns are already line-level allocations. Assume a processing fee of 2.4 percent of merchandise plus shipping plus tax collected on card, wallet and bnpl, zero otherwise. Attribute refunds to the parent order's placed month. Return per-order margin and the month mean.
Approach
- Pre-aggregate fct_return_line to order_line_id before touching the order lines, summing quantity_returned, refund_amount_cents, return_shipping_cost_cents, restocking_fee_cents and recovered_value_cents. Joining raw would multiply every cost column on the order side.
- Cost all units that were shipped, not only the ones kept. A returned unit was still picked, packed and freighted, so quantity * unit_cost_cents stays in full and only recovered_value_cents comes back on the credit side.
- Treat recovered_value_cents NULL as ungraded, not as zero. COALESCE to zero understates recovery for recent months and makes margin look worse the fresher the data is; either restrict to graded returns or report the ungraded unit count beside the number.
- Compute the processing fee at the line from the amount actually collected, including shipping_charged_cents and tax_cents, and gate it on payment_method so gift_card and cash_on_delivery lines carry none.
- Apply fx_rate_to_usd per line before aggregating, then roll to order_id, restricting the denominator to orders with at least one delivered line.
- Present the per-order margin distribution, not only the mean: a handful of high-value returned orders dominate the average and the median tells a different story.
Worked solution 40 min
- Build returns_by_line with the five SUMs and a COUNT of ungraded (recovered_value_cents IS NULL) rows.
- LEFT JOIN onto delivered order lines placed in the month and compute per-line revenue, cost, recovery, shipping and fee terms in USD.
- Aggregate to order_id, producing net_revenue_usd, cost_usd, recovery_usd, shipping_net_usd, fee_usd and margin_usd.
- Compute the month mean over distinct delivered orders, plus the median and the 10th percentile.
- Report the share of orders whose returns are still ungraded, and restate the mean with those orders excluded.
Follow-up
- Which orders are margin-negative, and is the pattern driven by return rate, discount depth or shipping cost? How would you separate them?
- This excludes warehouse fixed cost and marketing. When does that make the number the wrong one to put in front of a decision?
- Free shipping above a threshold changes both shipping_charged_cents and basket composition. How do you read margin across that change?
"How would you forecast demand for a new sneaker release with no histo…
"How would you forecast demand for a new sneaker release with no historical sales data?"
Approach
- Name one primary metric, then the guardrail that stops it being gamed.
- Decompose the metric into the rates that drive it, and say which one you would check first.
- Fix the population and the time window before naming any metric.
Follow-up
- How would you detect that the metric is being gamed rather than genuinely improving?
- Which segment would you cut first, and what would that rule out?
"What metrics would you use to evaluate a recommendation engine for th…
"What metrics would you use to evaluate a recommendation engine for the Nike app?"
Approach
- Name one primary metric, then the guardrail that stops it being gamed.
- Fix the population and the time window before naming any metric.
- Decompose the metric into the rates that drive it, and say which one you would check first.
Follow-up
- Which segment would you cut first, and what would that rule out?
- How would you detect that the metric is being gamed rather than genuinely improving?
"If our A/B test shows a lift in clicks but a drop in conversion, what…
"If our A/B test shows a lift in clicks but a drop in conversion, what would you investigate?"
Approach
- Decide the analysis before seeing data, including how long it runs and when you look.
- Name the randomisation unit first; it decides the variance and what the test can detect.
- Say whether units interfere with each other, and switch design if they do.
Follow-up
- What would you do if you could not randomise at all?
- How would you handle interference between treated and control units?
Free shipping threshold moves and average order value jumps
The free-shipping threshold is raised. Average order value rises nine percent over the first two weeks and the change is declared a success. You have fct_order_line (order_id, quantity, unit_paid_price_cents, shipping_charged_cents, shipping_cost_cents, unit_cost_cents) and fct_session. Deliverable: explain why average order value is the wrong primary metric for this change, propose a primary and two guardrails, and name the single distributional check that settles the argument in one chart.
Approach
- Name the mechanism. A threshold suppresses orders below it and nudges others just above it. Average order value is a conditional mean over the orders that happened, so removing small orders raises it even when total revenue falls.
- Move the denominator to a population the change cannot filter: net merchandise revenue per session, computed on non-bot sessions with the consent treatment applied identically to numerator and denominator. Suppressed orders then enter as zeros instead of vanishing.
- Decompose the average order value move into units per order and paid price per unit. A threshold usually moves units per order, and the marginal unit added to clear a threshold tends to be a cheap, high-return accessory, which is why the margin guardrail matters more than the revenue one here.
- Set the guardrails as contribution margin per delivered order, which captures the shipping subsidy the threshold governs, and orders per session, which is where suppression becomes visible. Expect these to move in opposite directions: a higher threshold pays out less subsidy, so margin per order can rise while revenue per session falls.
- Run the distributional check: plot the pre-shipping basket-value histogram before and after with both thresholds marked. A spike immediately above the new threshold and a hole below it is the bunching, and the mass in that spike tells you how much of the nine percent is composition rather than higher spend.
Worked solution 25 min
- Compute average order value, orders per session and net revenue per session for the two weeks before and after the change, on matched days of week.
- Decompose average order value into units per order and paid price per unit and attribute the nine percent between them.
- Build the basket-value histogram in fixed bins around both thresholds and measure the share of orders landing in a narrow band above the new one, before and after.
- Compute contribution margin per delivered order including shipping_charged_cents and shipping_cost_cents, so the change in subsidy is explicit.
- Reconcile: multiply net revenue per session by session count and confirm it matches total net revenue for each window.
Follow-up
- Units per order rose but contribution margin per order fell. What is the likely marginal unit, and what would you do about the threshold?
- How do you separate the threshold effect from a seasonal category mix shift in the same two weeks?
Every device improved but the aggregate rate fell
Week over week, visit-to-order conversion rose in all four device_type values, yet the all-up rate fell 18 basis points. fct_session gives session_id, order_id, device_type, entry_channel, campaign_id, customer_id (NULL when signed out), tracking_consent and is_bot_flagged. Deliverable: decompose the aggregate change into a within-segment component and a mix component that reconcile to the observed delta, name the traffic shift that produced the mix term, and state which single number belongs in the weekly review.
Approach
- Write the aggregate as p = sum over segments of w_i * p_i, where w_i is the segment share of eligible sessions and p_i is the segment rate. Every claim that follows has to come out of that identity rather than out of intuition.
- Compute the three terms explicitly: within = sum w_i_old * (p_i_new - p_i_old), mix = sum (w_i_new - w_i_old) * p_i_old, interaction = the remainder. Confirm they sum to the total delta before interpreting anything; if they do not, the eligibility filter differs between the two weeks.
- Locate the mix term. Rank segments by (w_i_new - w_i_old) * (p_i_old - p_old) to see which share move did the damage, then push one level deeper: entry_channel by device, campaign_id, signed-in versus anonymous, country.
- Decide whether the mix shift is the business result or an artefact. A paid social campaign buying low-intent mobile traffic is a real and intentional mix shift; a bot-rule change or an app tracking loss that removes high-converting sessions is not.
- Publish the standardised rate (new segment rates at last week's mix) next to the raw rate, and say plainly that the raw rate fell because the traffic changed, not because the site got worse.
Follow-up
- Which mix do you standardise on: last week, a rolling 13-week base, or plan mix? What breaks when the base is stale?
- If one device segment is small enough that its rate is noisy, how does that noise propagate into the standardised number?
- Marketing wants credit for the within-segment gain. What do you need before you agree the campaign caused it?
Four days spend equal time on query work, statistics, modelling and product judgement at deliberately shallow depth, which produces a scored map of where you actually stand. The last three days spend everything on the two areas the role weights most, and close by re-running day one to measure movement.
Prepare, practise & reflect
One practical outcome each day. Spend longer where you need it.
0 / 7 done01Breadth pass: query fluency
- Solve six prompts spanning aggregation, joins, window functions and date arithmetic in 60 minutes total, stopping at 10 minutes each whether or not it works, and mark every prompt as solved, solved slowly, or stuck.
- For each unsolved prompt write the single blocking sentence (I lost the grain, I did not know the frame clause, I could not express the date boundary) instead of reading the solution.
- Translate one pandas transformation you know well into SQL and one SQL query into pandas, checking that both return the same row count and the same totals.
Deliverable: A scored six-row table, one line per prompt, saved for the day-seven re-run.
Practice prompt ↗Practice prompt ↗Practice prompt ↗Worked solution ↗02Breadth pass: statistics and inference
- Answer ten short questions in writing with nothing open: what a p-value is conditional on, what a 95 percent interval covers across repeated samples, when a paired test is the right one, what the bootstrap estimates, why multiple comparisons inflate false positives, how controlling the family-wise error rate differs from controlling the false discovery rate, what power depends on, what a missed real effect costs a product, the three situations where the central limit theorem does not rescue you (small n, very heavy tails, dependent observations), and what a standard error is the standard deviation of.
- Grade yourself against a reference and count only the answers that were exactly right, not the ones that were nearly right.
- Rewrite the two weakest answers the following morning from memory in full sentences.
Deliverable: Ten graded answers with an honest count of exact hits.
Practice prompt ↗Practice prompt ↗03Breadth pass: modelling
- Take one tabular dataset end to end in 90 minutes: a leakage-safe split, a baseline that is not a model (majority class or historical mean), one regularized linear model, one gradient-boosted tree, and a single evaluation metric chosen before you look at any result.
- Write why that metric fits the cost structure: precision at a fixed recall for alerting, calibration for anything feeding a price or a threshold, ranking metrics for retrieval, and note that area under the ROC curve is insensitive to class balance in a way that can flatter a rare-positive problem.
- Name the leak you were most likely to introduce (an encoding fit on all rows before splitting, or a feature computed after the label's timestamp) and write the check that would have caught it.
Deliverable: A notebook whose first cell states the metric and the baseline, plus two lines on what beat what and by how much.
Practice prompt ↗Practice prompt ↗04Breadth pass: product judgement
- Answer three case prompts aloud at 15 minutes each, timing how long passes before you state a success metric.
- For one case write the first segmentation you would run and the row counts you expect per segment, so that a tiny segment cannot quietly drive the conclusion.
- Take a metric definition you did not write, from a public dashboard, a textbook, or documentation you already have open, and list every place two analysts implementing it would diverge: which rows the denominator admits, whether the unit is an account or a person, what the time window is anchored to, and what happens to data that arrives late. Then write the one question that would close the largest of those gaps.
Deliverable: Three recorded case answers plus an ambiguity list for a metric someone else defined, ending in the single question you would ask about it.
Practice prompt ↗Practice prompt ↗Worked solution ↗05Depth, first area
- Rank the four areas by how many bullet points in the role description each one covers, pick the top one, and spend the entire day inside it.
- Work the six hardest problems you can find in that area and for each write the generalizable move you should have reached for first, rather than the answer.
- Re-solve the two you failed the same evening with notes closed.
Deliverable: Six generalizable moves written as instructions to yourself, not as solutions.
Practice prompt ↗Practice prompt ↗06Depth, second area, and the seam between them
- Repeat the depth protocol on the second-ranked area with the same six-problem structure.
- Construct one problem that requires both areas at once, for example a metric redefinition whose effect you must validate with a test whose readout you then have to query.
- Solve your own combined problem end to end and note where the handoff between the two areas cost you time.
Deliverable: One combined problem, solved end to end, with the handoff failure written down.
Practice prompt ↗Practice prompt ↗07Integration and re-measurement
- Re-run the six prompts from day one under the same clock and compare both correctness and time.
- Run a 60-minute mixed mock that moves between areas without warning, since switching cost is what breadth passes do not train.
- Write the two areas you would still fail on, and the sentence you will use in the interview when you hit one of them.
Deliverable: A before-and-after score table plus a written plan for the two remaining gaps.
Practice prompt ↗Practice prompt ↗Worked solution ↗Expand any day for tasks and deliverables. Your progress is saved on this device.
Work that nobody used is a common and unflattering pattern in data careers, and interviewers probe for it. Have a story about an analysis that changed a decision, and be specific about how you got it in front of the person who could act. Also have one about work that went nowhere, with your reading of why.
"Tell me about a time you had a conflict with a stakeholder regarding …
"Tell me about a time you had a conflict with a stakeholder regarding a project timeline. How did you resolve it?"
Approach
- Pick a story where you drove the decision, not one where you observed it.
- State the situation in two sentences and spend the rest on your reasoning.
- Close with what you would do differently, concretely.
Follow-up
- What did you decide not to do, and why?
- How did you know the outcome was caused by your change?
Choose between three teams asking for the same week
Three requests land on the same Monday. Merchandising wants a size-curve read before a buy deadline on Thursday. Growth wants a channel attribution rebuild that has been requested twice and dropped twice. Supply chain wants a stockout root-cause on a category that cancelled four thousand units last month. You have one week and no help, and each requester believes theirs is first. State what you do, in what order, and what you tell the two people who do not get the week.
Approach
- Sort by the decision behind each request rather than by who sent it. A buy deadline is an irreversible commitment with a fixed date; an attribution rebuild changes no decision this week.
- Ask each requester two questions: which decision changes, and what happens if the answer lands a week later. Those two separate a real deadline from felt urgency without arguing about either.
- Look for the cheap partial before assuming any request consumes the week. If the size curve already exists at style grain, the merchandising read may be two hours rather than four days.
- Decline explicitly with a start date attached instead of leaving a request in a silent queue. Growth has been dropped twice, so a third silent drop is a relationship cost you are choosing to pay; name it rather than incur it by default.
- Escalate the collision upward once, with the three decisions and their dates side by side, so the tradeoff is resolved where it is owned rather than by whoever follows up hardest.
Follow-up
- Growth escalates to your manager saying analytics never supports them. What did you do before that happened, and what do you do now?
- The buy deadline moves to Tuesday. What do you cut from the size-curve read, and what do you refuse to cut?
Tell a team their test cannot be read before Friday
A checkout test has run eleven days. Conversion is 2.4 percent in control and 2.7 percent in treatment, and the team wants to ship on Friday. Revenue per visitor is higher in treatment, driven by a small number of very large baskets, and the return window on those orders has not closed. The engineering lead has already announced the win internally. You are asked for sign-off. Give your answer, the evidence behind it, and a path that lets them ship without pretending the result is something it is not.
Approach
- Compute rather than assert. State the minimum detectable effect the observed sample supports at a 2.4 percent baseline, then say whether a 0.3 point absolute lift sits inside or outside it. An objection without that number reads as caution and loses to a launch date.
- Separate the two problems, because they have different fixes. Conversion may simply be underpowered. Revenue per visitor is a different failure: the mean is driven by the tail, so it needs a cap declared before the data was seen or a bootstrapped interval, and a cap chosen now is not a cap.
- Run the mechanical checks first because they are cheap and they end arguments: sample ratio mismatch, the triggered-population definition, and whether both arms drew on the same constrained inventory.
- Quantify the return exposure concretely: the share of treatment revenue sitting in orders whose return window is open, and what the category's matured net unit return rate would do to the lift if applied to it.
- Offer a path rather than a veto. If the change is reversible and the downside is bounded, ship it, with the read scheduled at return maturity and the decision rule written down now, before anyone knows which way it goes.
- Handle the premature announcement quietly and separately. It is a fact to correct, not a position to negotiate against, and making it the topic guarantees the measurement argument is lost.
Follow-up
- The team says the large baskets are real revenue and capping throws away the win. What is your answer?
- What decision rule would you write down today so this same conversation does not happen on the next test?
- 01
"Tell me about a time you had a conflict with a stakeholder regarding a project timeline. How did you resolve it?"
- 02
Three requests land on the same Monday. Merchandising wants a size-curve read before a buy deadline on Thursday. Growth wants a channel attribution rebuild that has been requested twice and dropped twice. Supply chain wants a stockout root-cause on a category that cancelled four thousand units last month. You have one week and no help, and each requester believes theirs is first. State what you do, in what order, and what you tell the two people who do not get the week.
- 03
A checkout test has run eleven days. Conversion is 2.4 percent in control and 2.7 percent in treatment, and the team wants to ship on Friday. Revenue per visitor is higher in treatment, driven by a small number of very large baskets, and the return window on those orders has not closed. The engineering lead has already announced the win internally. You are asked for sign-off. Give your answer, the evidence behind it, and a path that lets them ship without pretending the result is something it is not.
Is this an official NIKE interview guide?
No. It is PracHub's own research and practice material for the Data Scientist role at NIKE. Rounds and questions reflect what candidates have reported, not a process NIKE has published, and they change over time. Confirm the current format and scope with your recruiter.
PracHub interview research ↗Is the position remote or onsite?
NIKE has a hybrid work culture, though specifics depend on the team. Many Data Science roles are based at the World Headquarters in Beaverton/Portland, OR, requiring some days in the office. However, some roles have been reported as remote. Always clarify this with your recruiter early in the process.
PracHub interview research ↗How long does the interview process take?
Candidates have reported that the process can be lengthy, sometimes taking several weeks between steps. Delays in scheduling the final rounds are not uncommon. It is important to follow up professionally but remain patient.
PracHub interview research ↗How difficult is the coding assessment?
Recent feedback suggests the coding difficulty is Medium to Hard. While you may not face LeetCode-style hard algorithms, the practical application of SQL and Python to data manipulation tasks is rigorously tested. You must be able to write working code without relying heavily on IDE auto-complete.
PracHub interview research ↗Do I need domain knowledge in retail or sports?
While not strictly required, having "business sense" regarding retail, supply chain, or e-commerce is a massive plus. Understanding the difference between direct-to-consumer and wholesale channels can help you answer case study questions more effectively.
PracHub interview research ↗Sources & methodology 3 sources ↗
Official role evidence, timestamped platform data and clearly labeled preparation advice.
- 01PracHub interview research ↗
PracHub editorial research into this company and role, maintained with this guide. Candidate-reported, not an employer publication.
platform · Accessed 2026-09-22 - 02PracHub Data Scientist practice ↗
Cross-company practice questions for this role.
platform · Accessed 2026-09-22 - 03PracHub interview preparation framework ↗
The framework the preparation plan follows.
platform · Accessed 2026-09-22