Blinkit Data Analytics Interview Questions & Answers
Curated interview practice questions with answers. These are practice scenarios, not a verified list of past interview questions.
About Blinkit hiring for Data Analytics roles
Blinkit is an Indian quick commerce company, owned by Eternal (formerly Zomato), that delivers groceries and everyday essentials within minutes. It was earlier known as Grofers and runs a network of dark stores in many cities. It hires software engineers, data analysts, product managers, supply chain and operations professionals to run its fast delivery platform.
For Data Analytics roles, this Blinkit practice set focuses most on Excel (7), Python for Analysis (5), Dashboards and KPIs (4), Data Modelling & Warehousing (4). It has 3 easy, 29 medium, 8 hard questions, so you can start easy and work up to the harder ones.
Company type
E-commerce & consumer tech
Headquarters
Gurugram, India
Main India offices
Gurugram
Blinkit Data Analytics interview process
Online coding or analytics assessment
Technical round 1
Technical round 2 (design or case)
Hiring manager round
Typical pattern based on public candidate experiences. Rounds vary by role, team and year.
Solved for BlinkitStart practicing
3 QUESTIONS FREESign up to unlock the full question bank and track your progress.Unlock every question and answer, then continue practising company-wise and package-wise.
✓ 3 questions free • Unlock the rest in seconds
01
How do you let users choose Top N customers with a parameter in Tableau?
Create an integer parameter Top N with a range of 5 to 50 and show its control. Drag Customer to the Filters shelf, choose the Top tab, select By field, and set it to top Top N by SUM(Sales). Alternatively create a set based on the parameter so you can show Top N versus Others in one chart. If the Top N must respect a category filter, add that category filter to context.
02
Your findings deck has 30 slides and you have 10 minutes with leadership. How do you cut it down?
Write the single key message first, then keep only slides that directly support it, usually three to five: the headline finding, the main driver, the impact in money, and the recommendation with next steps. Merge related charts, use action titles, and move everything else to an appendix for questions. Rehearse to fit in about seven minutes, leaving time for discussion, because the discussion is where decisions are made.
03
What are pre-attentive attributes and how do you use them in charts?
Pre-attentive attributes are visual properties the brain notices in a fraction of a second before conscious thought, such as colour, size, position, length and bold weight. Use them to direct attention: make all bars grey and highlight only the declining region in a strong colour, or bold the one number that matters. Using too many highlights cancels the effect, so emphasise one or two things per chart.
04
Tell me about a time you used data to challenge an assumption.
Situation: our team believed weekend discounts drove most sales. Task: I was preparing the monthly review. Action: I compared discount and non-discount weekends over six months and controlled for paydays and festivals. Discounts moved sales forward from the following week but added little overall. I presented it with one clear chart. Result: management trialled fewer discount weekends, and margin improved without a fall in monthly revenue.
05
What is the difference between Goal Seek and Solver?
Goal Seek changes one input to hit a target output; Solver optimises with several variables and constraints, for example maximising profit under budget limits.
06
Write SQL to calculate daily active users and the DAU/MAU stickiness ratio.
WITH dau AS (
SELECT CAST(event_ts AS DATE) AS day,
COUNT(DISTINCT user_id) AS dau
FROM events
GROUP BY CAST(event_ts AS DATE)
)
SELECT d.day,
d.dau,
(SELECT COUNT(DISTINCT e.user_id)
FROM events e
WHERE CAST(e.event_ts AS DATE) BETWEEN d.day - INTERVAL '29 days' AND d.day) AS mau,
ROUND(100.0 * d.dau / (SELECT COUNT(DISTINCT e.user_id)
FROM events e
WHERE CAST(e.event_ts AS DATE) BETWEEN d.day - INTERVAL '29 days' AND d.day), 1) AS stickiness_pct
FROM dau d
ORDER BY d.day;
Confirm data accuracy first → break down by region, product, channel and customer segment → compare with seasonality and last year → check pricing, stock-outs, marketing changes and funnel conversion → present the root causes with clear charts.
10
Write pandas code to compute month-on-month percentage change and cumulative sales for each store.
df = df.sort_values(['store', 'month'])
df['mom_pct'] = (
df.groupby('store')['sales'].pct_change() * 100
).round(1)
df['cum_sales'] = df.groupby('store')['sales'].cumsum()
# first month of each store has NaN for mom_pct, which is expected
11
Your pandas script takes 40 minutes on 10 million rows. How do you speed it up?
First profile to find the slow step instead of guessing. Common fixes: replace row-wise apply and loops with vectorised operations, convert repeated strings to category dtype, downcast numeric types, read only needed columns with usecols, and filter early. Push heavy joins and aggregations into SQL. If it is still slow, use a columnar engine such as DuckDB or Polars, or store intermediate data as Parquet instead of CSV.
12
During a review, an executive asks a question about your numbers that you cannot answer on the spot. What do you do?
Do not guess. Say clearly that you do not have that cut ready, restate the question to confirm it, and give a time by which you will reply, for example by end of day. If you know a partial answer or a reasonable expectation, share it with a caveat. Then follow up on time with a short, precise answer. Being honest and reliable builds more trust than a confident wrong number.
A bus matrix is a planning grid with business processes as rows, such as orders, shipments and returns, and conformed dimensions as columns, such as date, customer, product and warehouse. A tick shows which dimensions each process uses. It helps prioritise which fact tables to build, shows which dimensions must be shared and conformed first, and gives leaders a one-page roadmap of the warehouse without technical detail.
14
What are transaction, periodic snapshot and accumulating snapshot fact tables?
A transaction fact stores one row per event, such as each payment. A periodic snapshot stores the state at regular intervals, such as daily stock per store or month-end loan balance. An accumulating snapshot has one row per process instance, like an order, updated as it reaches milestones such as placed, packed, shipped and delivered, with a date for each. Choose based on whether the question is about events, states or process durations.
15
What is the difference between relationships, joins and data blending in Tableau?
Relationships, the default logical layer, connect tables flexibly and Tableau decides join type and level per view, avoiding duplicated measures. Joins physically merge tables into one at a fixed level, which can duplicate rows if grains differ. Blending combines data from separate data sources at the view level using a primary and secondary source, aggregating the secondary first. Prefer relationships, use joins for specific row-level needs, and blending as a last resort.
16
Email open rates suddenly jumped from 22% to 45% without any campaign change. Should you celebrate?
No. Privacy features in some mail apps pre-load email images, which fires the open tracking pixel even if the person never reads the email, so open rates get inflated. Check opens by email client to confirm. Move reporting towards clicks, click-to-send rate, conversions and unsubscribes, which reflect real behaviour, and avoid using opens alone to pick winning subject lines or to define engaged subscribers.
Build PivotTables from a clean table, add PivotCharts and slicers, link KPIs with formulas, and refresh from Power Query so everything updates together.
18
An A/B test shows a 2% lift with p = 0.04, but it only ran for 3 days. Would you ship it?
Not yet. Three days misses weekly patterns, and early results are often inflated by novelty effects or by stopping once the p-value looked good. I would check whether the planned sample size was reached, whether the split was balanced, and how guardrail metrics behaved. I would recommend running to the pre-planned duration, at least one or two full weeks, and then deciding, considering the cost of being wrong.
19
Write SQL to incrementally load new and changed products into a dimension using MERGE.
MERGE INTO dim_product t
USING stg_product s
ON t.product_id = s.product_id
WHEN MATCHED AND (t.name <> s.name OR t.category <> s.category) THEN
UPDATE SET name = s.name,
category = s.category,
updated_at = CURRENT_TIMESTAMP
WHEN NOT MATCHED THEN
INSERT (product_id, name, category, updated_at)
VALUES (s.product_id, s.name, s.category, CURRENT_TIMESTAMP);
20
After joining orders to payments, your revenue total doubles. What went wrong?
This is a join fan-out: an order has more than one matching payment row, for example split payments or retries, so each order line is repeated and sums are inflated. Check by counting rows per key on both sides. Fix it by aggregating payments to one row per order before joining, joining at the correct grain, or using the right key. Always compare row counts and totals before and after a join.
21
Write an Excel formula to look up a price using two criteria, product and city.
=XLOOKUP(1, (A2:A500=G2) * (B2:B500=H2), C2:C500, "Not found")
-- A = product, B = city, C = price
-- G2 and H2 hold the product and city to find
-- each condition returns TRUE/FALSE; multiplying gives 1 only where both match
22
Write Excel formulas to get a sorted list of unique customer names and their count.
-- unique customers from column B, sorted A to Z
=SORT(UNIQUE(B2:B1000))
-- number of unique customers
=COUNTA(UNIQUE(B2:B1000))
-- unique customers sorted by total sales, highest first
=SORTBY(UNIQUE(B2:B1000), SUMIFS(D2:D1000, B2:B1000, UNIQUE(B2:B1000)), -1)
Use a star schema, remove unused columns, prefer measures, reduce visuals per page, limit high-cardinality fields and use aggregations or incremental refresh.
24
Write SQL to find the median order value overall and per city.
-- Works in PostgreSQL, Snowflake, SQL Server (with OVER for SQL Server)
SELECT
city,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY order_value) AS median_value,
AVG(order_value) AS mean_value
FROM orders
GROUP BY city
ORDER BY median_value DESC;
25
Write SQL to flag rows that fail basic validation rules in a customer table.
SELECT customer_id,
CASE WHEN email IS NULL OR email NOT LIKE '%_@_%._%' THEN 1 ELSE 0 END AS bad_email,
CASE WHEN LENGTH(pincode) <> 6 THEN 1 ELSE 0 END AS bad_pincode,
CASE WHEN signup_date > CURRENT_DATE THEN 1 ELSE 0 END AS future_signup,
CASE WHEN age NOT BETWEEN 18 AND 100 THEN 1 ELSE 0 END AS bad_age
FROM customers;
-- sum each flag to report the error rate per rule
26
A query on a 2-billion-row fact table in a cloud warehouse scans the whole table even when you filter one week. How do you fix it?
Partition the table by date so the engine can prune partitions outside the filtered week, and cluster or sort by frequently filtered columns such as store or customer. Make sure the filter is on the partition column directly, not wrapped in a function like CAST or DATE_TRUNC that blocks pruning. Select only needed columns, because storage is columnar. For dashboards, also consider a pre-aggregated daily summary table.
Broadcasting lets NumPy perform operations on arrays of different shapes without copying data, by virtually stretching the smaller array. For example, subtracting a 1D array of column means from a 2D array centres every column in one line: X - X.mean(axis=0). Shapes are compatible when trailing dimensions are equal or one of them is 1. It is a key reason vectorised code is much faster than Python loops.
Situation: the support team was judged only on tickets closed, which encouraged rushed replies. Task: propose a better measure. Action: I analysed reopen rates and satisfaction scores, then proposed first-contact resolution rate with clear rules for what counts as resolved. I tested it on three months of history and reviewed edge cases with team leads. Result: it became the main KPI and reopen rates fell 18% in a quarter.
30
How do you handle large CSV files that do not fit in memory in Python?
First switch calculation to manual to work safely, then find the cause. Replace whole-column references with Tables, swap repeated VLOOKUPs for one XLOOKUP or INDEX-MATCH helper column, and remove volatile functions like OFFSET, INDIRECT and TODAY used in many cells. Better still, move the joins into Power Query or the Data Model so lookups happen once at refresh. Finally paste values for historic data that never changes and keep formulas only where needed.
32
Tell me about a time you had to say no to a stakeholder's request.
Situation: a regional manager asked me to show his team's numbers excluding two weeks of a stock-out. Task: be helpful without misreporting. Action: I explained that removing the period would make his region incomparable with others, and offered an annotation and a separate view showing the stock-out impact. Result: he accepted, the leadership review understood the dip, and the main dashboard stayed consistent for every region.
from statsmodels.stats.proportion import proportions_ztest, proportion_confint
conversions = [1180, 1295] # control, treatment
visitors = [30000, 30100]
z, p = proportions_ztest(conversions, visitors)
print(f'z = {z:.2f}, p = {p:.4f}')
for c, n in zip(conversions, visitors):
low, high = proportion_confint(c, n, method='wilson')
print(f'rate {c/n:.3%} 95% CI {low:.3%} to {high:.3%}')
35
What does apply do in pandas and why can it be slow?
apply runs a Python function on each row or column of a DataFrame, or each value of a Series. It is flexible but slow on large data because it loops in Python rather than using optimised C code. For example, df['total'] = df['qty'] * df['price'] is far faster than an apply with a lambda. Prefer vectorised operations, np.where, np.select, map with a dictionary, or string accessor methods first.
36
Tell me about a time you found a serious data quality issue.
Situation: while building a returns report I noticed one warehouse had zero returns for three months. Task: confirm whether it was real. Action: I compared with the source system and found its return codes had changed after a software update, so my filter missed them. I informed the data owner, updated the mapping and back-filled the history. Result: the corrected report showed that warehouse had the highest return rate, which led to a packaging review.
37
A campaign landing page gets heavy traffic but very few sign-ups. How would you diagnose it?
Check traffic quality first: is the right audience coming, and does the ad message match the page? Then look at page behaviour by device: load time, scroll depth, form start versus form submit, and which form field users abandon. Session recordings or heatmaps help. Test the form on mobile for errors. Common fixes are faster pages, fewer form fields, a clear call to action above the fold and matching the ad's offer.
38
Write a Tableau table calculation for year-over-year sales growth.
// with YEAR(Order Date) in the view, Compute Using: Table (across)
(ZN(SUM([Sales])) - LOOKUP(ZN(SUM([Sales])), -1))
/ ABS(LOOKUP(ZN(SUM([Sales])), -1))
// the built-in Quick Table Calculation 'Year over Year Growth' generates similar logic
// format the field as a percentage
39
A file has dates in mixed formats, some dd/mm/yyyy and some mm/dd/yyyy. How do you handle it?
Find out which system or region produced each format, since a source column often explains it. Values with a day above 12 reveal the format unambiguously. Parse with an explicit format per source, for example pd.to_datetime(col, format='%d/%m/%Y', errors='coerce'), rather than letting the tool guess. Check failed or suspicious parses, such as future dates, and ask the source team to send ISO format yyyy-mm-dd going forward.
Fix the root cause when possible, or wrap formulas with IFERROR or IFNA to return a clear fallback value.
Tips to crack the Blinkit Data Analytics interview
Think about quick commerce challenges such as dark store inventory, demand forecasting and delivery time before case discussions.
Practise SQL with time-based analysis and metrics like order volume, delivery time and fill rate for analyst roles.
For engineering roles, revise DSA and design of real-time systems like order tracking and rider assignment.
Keep a one-minute story ready for every project on your CV: problem, your part, tools, result.
Practise the hard questions on this page aloud; Blinkit interviewers usually ask follow-ups on your first answer.
Frequently asked questions
How many rounds are there in the Blinkit Data Analytics interview?
Candidates usually go through 4 stages: Online coding or analytics assessment; Technical round 1; Technical round 2 (design or case); Hiring manager round. The exact rounds change with the role, team, location and your experience, so confirm the process with the recruiter.
Which topics should I prepare for the Blinkit Data Analytics interview?
This practice set leans on Excel (7), Python for Analysis (5), Dashboards and KPIs (4), Data Modelling & Warehousing (4). Revise those first, then practise explaining one or two of your own projects end to end, because most Blinkit interviewers ask you to walk through real work.
Are these the exact questions asked at Blinkit?
No. These are curated practice questions that match the skills and difficulty usually tested in e-commerce & consumer tech interviews like Blinkit's. They are not a leaked or verified list of past questions.
Where does Blinkit hire Data Analytics professionals in India?
Blinkit has large teams in Gurugram. Openings and locations change often, so check the Blinkit careers page and filter by city and experience.