Rapido Data Analytics Interview Questions & Answers
Curated interview practice questions with answers. These are practice scenarios, not a verified list of past interview questions.
About Rapido hiring for Data Analytics roles
Rapido is a Bengaluru-based ride-hailing platform that started with bike taxis and expanded into auto rickshaws, cabs and parcel delivery. It is known for affordable rides and a subscription-style model for driver partners. It hires software engineers, data scientists, data analysts, product managers and operations roles to run its mobility platform across many Indian cities.
For Data Analytics roles, this Rapido practice set focuses most on SQL (9), Tableau (4), Statistics and Case Studies (4), Python for Analysis (4). It has 3 easy, 22 medium, 15 hard questions, so you can start easy and work up to the harder ones.
Company type
Product
Headquarters
Bengaluru, India
Main India offices
Bengaluru
Rapido Data Analytics interview process
Online coding or analytics assessment
Technical round 1 (DSA or SQL)
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 RapidoStart 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
Site conversion rate rose from 2.0% to 2.4%, but total revenue stayed flat. What would you check?
Check the components: sessions may have fallen, for example after cutting paid campaigns, which removes low-intent traffic and lifts the rate without new sales. Average order value may have dropped because of discounts or a mix shift towards cheaper products. Also check whether conversion definitions or tracking changed. Revenue equals sessions times conversion rate times AOV, so break down the change across those three factors by channel.
02
Write a Tableau calculation to find each customer's first purchase date and flag new versus repeat orders.
// First Purchase Date
{ FIXED [Customer ID] : MIN([Order Date]) }
// Order Type
IF [Order Date] = [First Purchase Date]
THEN 'New'
ELSE 'Repeat'
END
// Cohort Month for retention analysis
DATETRUNC('month', [First Purchase Date])
03
What is the difference between a surrogate key and a natural key?
A natural key comes from the source system and has business meaning, such as a customer mobile number or product SKU. A surrogate key is a meaningless integer or hash generated in the warehouse. Surrogate keys protect the model when source keys change, get reused or clash across systems, and they are essential for slowly changing dimensions where one customer has several historical rows. Keep the natural key as an attribute for lookups.
04
Write a DAX measure that counts new customers, meaning customers who bought in the selected period but never before it.
Build PivotTables from a clean table, add PivotCharts and slicers, link KPIs with formulas, and refresh from Power Query so everything updates together.
WITH ranked AS (
SELECT category,
product,
SUM(amount) AS revenue,
DENSE_RANK() OVER (
PARTITION BY category
ORDER BY SUM(amount) DESC
) AS rnk
FROM sales
GROUP BY category, product
)
SELECT category, product, revenue
FROM ranked
WHERE rnk <= 3
ORDER BY category, rnk;
09
What is the pyramid principle and how does it apply to presenting analysis?
The pyramid principle means starting with the answer, then giving the few key arguments that support it, then the detailed data under each argument. Analysts are tempted to present in the order they worked, from data to conclusion, but leaders want the conclusion first. Example: we should cut the free-delivery threshold, because it lifts order frequency, margin impact is small and competitors already did it, each backed by evidence.
Attribution decides how credit for a conversion is shared across touchpoints. Last click gives all credit to the final touch, first click to the first one. Linear splits credit equally, time decay gives more to recent touches, and position-based gives most to first and last. Data-driven attribution uses an algorithm on your own paths to estimate each channel's contribution. Each model answers a different question, so state which one a report uses.
11
Write SQL to find users who logged in on at least 3 consecutive days.
WITH d AS (
SELECT DISTINCT user_id, CAST(login_time AS DATE) AS dt
FROM logins
),
g AS (
SELECT user_id, dt,
dt - CAST(ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY dt) AS INT) AS grp
FROM d
)
SELECT DISTINCT user_id
FROM g
GROUP BY user_id, grp
HAVING COUNT(*) >= 3;
-- gaps and islands: consecutive dates share the same grp value
12
Where should data cleaning happen: Excel, SQL, Python or Power Query?
Clean as close to the source as is practical and in a repeatable tool. Fixes everyone needs belong upstream in the database or warehouse via SQL so all reports share them. Power Query suits report-specific shaping and Excel users. Python is best for complex logic like fuzzy matching or regex at scale. Manual Excel edits are fine for one-off exploration but should not be part of recurring reports because they cannot be reproduced.
13
Estimate how many cups of tea are sold in a city of 1 crore people in a day.
State assumptions clearly. Of 1 crore people, assume 70 percent drink tea, so 70 lakh. Say half of their cups are bought outside, at an average of one bought cup per drinker every day for that half, giving about 35 lakh purchased cups, with more at offices and stations. So roughly 30 to 40 lakh cups. Interviewers judge the structure, segmentation and sanity check more than the exact number.
14
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
15
Leadership wants sales by store manager, but managers move between stores every few months. How would you model it?
First agree the business rule: should a sale belong to the manager in charge on the sale date, or to the current manager? For history, track the manager on the store dimension as SCD Type 2, or keep a separate store-manager assignment table with start and end dates and join on the sale date. Add a current-manager attribute too, so both views are possible. Document the rule on the report.
16
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);
17
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
Although written as SELECT first, a query is logically processed as FROM and JOIN, then WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY and finally LIMIT. This explains common errors: you cannot use a SELECT alias in WHERE because SELECT runs later, but you can use it in ORDER BY. It also explains why aggregates belong in HAVING, not WHERE, and why window functions cannot be filtered in the same query level.
Achievement % =
DIVIDE([Total Sales], [Sales Target])
KPI Colour =
VAR a = [Achievement %]
RETURN
SWITCH(
TRUE(),
ISBLANK(a), "#9E9E9E",
a >= 1, "#2E7D32",
a >= 0.9, "#F9A825",
"#C62828"
)
-- apply KPI Colour via Format > Callout value > fx > Field value
22
Write SQL to show each category's percentage share of total revenue.
SELECT category,
SUM(amount) AS revenue,
ROUND(100.0 * SUM(amount)
/ SUM(SUM(amount)) OVER (), 2) AS pct_share
FROM sales
GROUP BY category
ORDER BY revenue DESC;
-- SUM(SUM(amount)) OVER () is the grand total across all groups
23
Many reporting queries in your team use SELECT DISTINCT to remove duplicate rows. What is the risk?
SELECT DISTINCT often hides a real problem, such as a join on the wrong key or a one-to-many join that multiplies rows. The output looks clean, but sums computed before the DISTINCT, or legitimate repeated rows, can be wrong, and DISTINCT adds a costly sort on large tables. Instead, find why duplicates appear, fix the join or aggregate the child table first, and add a uniqueness test on the key.
24
How do you present insights to non-technical stakeholders?
Lead with the answer, use one simple chart per point, translate numbers into business impact (₹, %), avoid jargon and end with a clear recommendation and next step.
25
Write SQL to find the first-touch and last-touch channel for every user who converted.
WITH touches AS (
SELECT t.user_id, t.channel, t.touch_ts,
ROW_NUMBER() OVER (PARTITION BY t.user_id ORDER BY t.touch_ts) AS first_rank,
ROW_NUMBER() OVER (PARTITION BY t.user_id ORDER BY t.touch_ts DESC) AS last_rank
FROM marketing_touches t
JOIN conversions c
ON c.user_id = t.user_id
AND t.touch_ts <= c.converted_ts
)
SELECT user_id,
MAX(CASE WHEN first_rank = 1 THEN channel END) AS first_touch,
MAX(CASE WHEN last_rank = 1 THEN channel END) AS last_touch
FROM touches
GROUP BY user_id;
Common dimensions are accuracy, values reflect reality; completeness, required fields are present; consistency, the same fact matches across systems; validity, values follow formats and rules such as a 6-digit pin code; uniqueness, no unwanted duplicates; and timeliness, data is fresh enough for its use. Measuring these with simple checks, like percent missing or duplicate rate, turns vague complaints about bad data into fixable issues.
27
A retail chain asks you which of its 120 stores it should close. How do you approach it?
Clarify the goal first: profit, cash or market share. Build a store-level dataset with revenue, contribution margin after rent and staff, trend over 24 months, footfall, catchment demographics and cannibalisation with nearby stores. Separate structural losers from stores that are new or temporarily disrupted. Estimate how much revenue would shift to nearby stores or online if a store closes. Present a shortlist with scenarios and risks, not a single answer.
28
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.
29
Write Python code for a simple difference-in-differences estimate of a store pilot.
Write a clear definition in a shared metric dictionary: formula, filters, time window, grain, owner and source table, for example a customer with at least one paid order in the last 90 days. Implement it once, in a governed dataset or semantic layer, and have all dashboards reuse it rather than recalculating. Version changes, announce them and show the definition in the dashboard tooltip. Review new metrics before they are published.
Use a star schema, remove unused columns, prefer measures, reduce visuals per page, limit high-cardinality fields and use aggregations or incremental refresh.
-- orders per week (PostgreSQL style)
SELECT DATE_TRUNC('week', order_date) AS week_start,
COUNT(*) AS orders
FROM orders
GROUP BY 1
ORDER BY 1;
-- orders by day of week (0 = Sunday)
SELECT EXTRACT(DOW FROM order_date) AS dow,
COUNT(*) AS orders
FROM orders
GROUP BY 1
ORDER BY 1;
Tableau Prep is a visual tool for cleaning and shaping data before analysis. You build a flow of steps: connect inputs, clean fields, split columns, group similar values, pivot, join, union and aggregate, and see the data change at every step. The output can be an extract or published data source that dashboards use. It suits analysts who need repeatable preparation without writing SQL or Python.
36
How do you calculate a simple customer lifetime value?
A simple formula is CLV = average order value x purchase frequency per year x gross margin x expected lifetime in years. Example: 800 rupees x 6 orders x 30 percent margin x 3 years = 4,320 rupees. Expected lifetime can be estimated as 1 divided by annual churn rate. A better version discounts future value and calculates CLV by cohort or segment, because averages hide very different customer groups.
37
Write Python code to fit a simple linear regression of sales on ad spend.
Choose them when data is large, roughly several gigabytes, or when pandas is slow or runs out of memory. DuckDB runs fast SQL directly on CSV and Parquet files on a laptop, ideal for analysts comfortable with SQL. Polars is a DataFrame library with lazy evaluation and multi-threading, often many times faster than pandas. pandas still wins for small data, its huge ecosystem and compatibility with most tutorials and libraries.
39
Your test increased conversion rate by 3% but average order value dropped by 5%. What do you recommend?
Look at the metric that reflects business value, such as revenue or margin per visitor, which combines both effects. Here revenue per visitor is roughly 1.03 times 0.95, about 2% lower, so the change may hurt. Check whether the drop is significant, which segments drive it, and whether new buyers are making smaller first orders that grow later. Without a strong reason, I would not ship it as is.
40
How do you implement row-level security in Tableau?
The scalable approach is an entitlement table mapping usernames to allowed values, such as region managers to their regions. Relate or join it to the data, then add a calculated filter like USERNAME() = [Username] and apply it as a data source filter on the published source so it cannot be removed. For small cases, user filters or group-based functions like ISMEMBEROF work. Test by viewing as different users before release.
Tips to crack the Rapido Data Analytics interview
Practise DSA and design of location-based systems such as nearby driver matching, surge pricing and live tracking.
For analyst roles, prepare metrics like ride completion rate, cancellations and captain utilisation, and practise SQL on them.
Use the Rapido app in your city and form clear opinions on rider and driver experience before the interview.
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; Rapido interviewers usually ask follow-ups on your first answer.
Frequently asked questions
How many rounds are there in the Rapido Data Analytics interview?
Candidates usually go through 4 stages: Online coding or analytics assessment; Technical round 1 (DSA or SQL); 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 Rapido Data Analytics interview?
This practice set leans on SQL (9), Tableau (4), Statistics and Case Studies (4), Python for Analysis (4). Revise those first, then practise explaining one or two of your own projects end to end, because most Rapido interviewers ask you to walk through real work.
Are these the exact questions asked at Rapido?
No. These are curated practice questions that match the skills and difficulty usually tested in product interviews like Rapido's. They are not a leaked or verified list of past questions.
Where does Rapido hire Data Analytics professionals in India?
Rapido has large teams in Bengaluru. Openings and locations change often, so check the Rapido careers page and filter by city and experience.