Company Interview Questions · Product & Retail Tech
Zepto & Nykaa: Data Scientist / Engineering
Zepto & Nykaa: Data Scientist / Engineering Interview Experiences (2025–26). Rounds, real reported questions and model answers, compiled from public candidate reports (sources at the end). Practice mode hides every answer: say your answer first, press Show answer, then rate yourself. Use 🔁 Review again to build your revision list and 🎲 Random question for a quick drill.
About this interview
Compiled from a public Zepto Data Scientist report (August 2025, offer declined: an EDA + modelling task on product data) and a public Nykaa SDE-1 report (Gurgaon, March 2026) that shows the coding bar. The questions are paraphrased, and the model answers are written by EasyLearnSpace.
| Zepto | Nykaa | |
|---|---|---|
| Role | Data Scientist | SDE-1 Backend (tech bar reference) |
| Rounds | Hands-on: EDA on a dataset (product ID, rating, brand, return rate) → build a model + why Zepto | Round 1: merge two sorted arrays; the interviewer wanted only the optimal approach |
| Outcome | Offer received, declined | Not selected |
| Domain | Quick commerce: demand forecasting per dark store, ETA, assortment, returns | Beauty e-commerce: recommendations, search, personalisation |
01Rounds at a glance
- Quick commerce DS is very practical: messy product data, fast EDA, a sensible model and business takeaways.
- Coding rounds: go straight to the optimal solution when asked, and explain trade-offs briefly.
02Questions and model answers
Q1
Zepto task: EDA on products (product ID, rating, brand, return rate), then build a model. What would you do?
import pandas as pd, numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.metrics import mean_absolute_error
df = pd.read_csv("products.csv")
print(df.describe(), df.isna().mean(), df.brand.value_counts().head(10), sep="\n")
print(df.groupby("brand")["return_rate"].agg(["mean", "count"]).query("count >= 20").sort_values("mean").tail(10))
print(df[["rating", "return_rate"]].corr())
# model: predict return rate from rating + brand (target-encoded with smoothing) to flag risky listings
brand_stats = df.groupby("brand")["return_rate"].agg(["mean", "count"]); gm = df.return_rate.mean()
df["brand_te"] = df.brand.map((brand_stats["mean"] * brand_stats["count"] + gm * 20) / (brand_stats["count"] + 20))
X, y = df[["rating", "brand_te"]], df["return_rate"]
Xtr, Xte, ytr, yte = train_test_split(X, y, test_size=.2, random_state=0)
m = GradientBoostingRegressor().fit(Xtr, ytr); print("MAE", mean_absolute_error(yte, m.predict(Xte)))
- Framing: predict the return rate (or a high-return flag) to act on: delist, fix product descriptions, renegotiate with brands.
- Note: target encoding must be computed inside the CV folds to avoid leakage. The quick version above is for illustration; say so in the interview.
- Insights to present: brands with high return rates and low ratings, the rating–return correlation, and recommended actions.
Q2
Why do you want to join Zepto?
- "Quick commerce is an ML-dense business. Ten-minute delivery depends on accurate dark-store demand forecasts, assortment, rider ETAs and dynamic pricing. Small model gains turn directly into fresher stock, less waste and faster delivery."
- Show that you know the operations (dark stores, SKU counts, peak hours) and what you would improve first.
Q3
Forecast hourly demand per SKU per dark store. How?
- Features: hour of day, day of week, holidays, weather/rain, promotions, price, local events, recent sales lags, stock-outs (censored demand).
- Model: a global LightGBM across SKU-store series with hierarchical reconciliation; quantile predictions (P50/P90) drive safety stock.
- Decisions: replenishment orders and the assortment per store. Evaluate on WAPE plus business metrics (stock-out rate, wastage for perishables).
Q4
Merge two sorted arrays in place (nums1 has room at the end).
def merge(nums1, m, nums2, n):
i, j, k = m - 1, n - 1, m + n - 1
while j >= 0:
if i >= 0 and nums1[i] > nums2[j]: nums1[k] = nums1[i]; i -= 1
else: nums1[k] = nums2[j]; j -= 1
k -= 1
- Fill from the back: O(m + n) time, O(1) extra space. That is the optimal answer the interviewer wanted.
Q5
Design product recommendations for a beauty e-commerce app (Nykaa-style).
- Signals: skin type and tone, concerns (from a profile or quiz), browsing and purchase history, ratings and reviews, price affinity, brand loyalty, replenishment cycles (repeat purchases).
- Approaches: "frequently bought together" (co-purchase), embeddings of products from descriptions and images, a personalised ranker; replenishment reminders timed to usage (a 60-day serum).
- Constraints: cold start for new launches, shade matching (avoid wrong-shade returns), sponsored placements balanced against relevance.
- Metrics: conversion, AOV, repeat rate, return rate.
Q6
How do you handle a high return rate as a data scientist?
- Diagnose: returns by reason code, product, brand, size/shade, seller, delivery delay, customer segment.
- Models: a return-risk score per order (pre-dispatch) or per listing.
- Actions: better size/shade guidance, image and description fixes, seller quality programmes, policy tweaks for serial returners. A/B test them.
- Measure: return rate, net revenue after returns, customer satisfaction.
03How to prepare
- Zepto: a fast, clean EDA → model → business insight workflow on product and order data; forecasting for dark stores.
- Nykaa: optimal-solution DSA and personalisation/recommendation design.
Sources
Created by Ajeetkumar