MakeMyTrip Data Analytics Interview Questions & Answers
Curated interview practice questions with answers. These are practice scenarios, not a verified list of past interview questions.
About MakeMyTrip hiring for Data Analytics roles
MakeMyTrip is an Indian online travel company offering flights, hotels, holidays, buses and trains, and it also owns Goibibo and redBus. Its technology and analytics teams work on search, pricing, personalisation and customer service. It hires for software engineers, SDETs, business analysts and data scientists.
For Data Analytics roles, this MakeMyTrip practice set focuses most on Dashboards and KPIs (7), Python for Analysis (7), Data Storytelling (4), A/B Testing & Experiments (4). It has 2 easy, 25 medium, 13 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, Bengaluru
MakeMyTrip Data Analytics interview process
Online assessment (coding or SQL)
Technical round 1
Technical round 2 or case round
Hiring manager round
HR round
Typical pattern based on public candidate experiences. Rounds vary by role, team and year.
Solved for MakeMyTripStart 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
A stakeholder wants 20 more visuals added to an already crowded dashboard page. How do you respond?
I would ask which decisions each new visual supports and how often they will look at it. Usually a few are essential and the rest are nice to have. I would propose keeping the main page focused on core KPIs and moving detail into drill-through pages, tooltips or a separate analysis tab. Showing a quick mock-up of both versions helps them see that the cleaner page answers questions faster.
02
What is the difference between extract filters and data source filters in Tableau?
Extract filters decide which rows go into the extract file at all, which reduces its size and speeds every view; filtered rows are simply not available. Data source filters apply to all worksheets using that data source, for live or extract, and are useful for security or scope, such as only the India business. Both act before context filters. Normal worksheet filters only affect one sheet.
03
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.
Add logging to a file or central log, wrap the main steps in try and except that send an alert by email or chat on failure, and exit with a non-zero code so the scheduler marks the job failed. Add data checks, such as row counts above a minimum and no missing dates, before sending output. Use a proper scheduler or orchestrator with retries, and include the data date in every report.
06
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.
This is an encoding mismatch: a UTF-8 file was read as a different encoding such as Latin-1 or Windows-1252. Re-read it with the right encoding, for example pd.read_csv(path, encoding='utf-8') or 'utf-8-sig' for files with a byte order mark, or set the file origin in Excel and Power Query import. Avoid re-saving through tools that change encoding, and agree on UTF-8 for all exchanges, especially for Hindi or other Indian language text.
08
A measure shows correct values per row in a table visual, but the grand total looks wrong. Why, and how do you fix it?
Totals in DAX are not the sum of visible rows; the measure is recalculated in the total's filter context. A measure like a distinct count, a ratio or an IF condition can give a different result at total level. If the business wants the sum of row values, iterate explicitly, for example SUMX ( VALUES ( Product[Name] ), [My Measure] ). Confirm with stakeholders which total is correct before changing it.
09
Your 50/50 test has 52,400 users in control and 47,600 in treatment. What does this tell you?
This is a sample ratio mismatch. A chi-square test on these counts gives a tiny p-value, so the gap is not chance. Something is filtering users unevenly, such as the treatment page crashing on some devices, a redirect losing tracking, bots in one arm or a bug in assignment. The results cannot be trusted until the cause is found. Check splits by browser, platform and day to locate it.
10
Your sales data contains negative quantities. What do you do with them?
Do not delete them blindly. First find out what they mean: often they are returns, cancellations or credit notes, which are valid business events. Check with the source team or a documentation note. If they are returns, keep them but report gross sales, returns and net sales separately. If some are clearly entry errors, such as a negative quantity on a new order, flag and correct them and log the rule.
11
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);
12
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.
Direct is the default bucket when the source is unknown, so a jump usually means attribution broke. Common causes are redirects that strip UTM parameters, a new referrer policy hiding the referring site, the analytics tag missing on landing pages so sessions start later on the site, payment or login domains not added to the cross-domain or referral exclusion list, and HTTPS to HTTP transitions. Compare landing pages and campaign traffic before and after.
15
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])
16
You share a forecasting workbook and users keep overwriting formulas. How do you protect it?
Separate input cells from calculation cells and colour inputs clearly. Unlock only the input cells through Format Cells, Protection, then protect the sheet so formulas cannot be edited, and optionally hide formulas. Add data validation on inputs to block wrong values such as negative quantities. Protect workbook structure so sheets cannot be deleted, keep a version history, and add a short instructions sheet so users know where to type.
17
What is the difference between OLTP and OLAP systems?
OLTP systems run day-to-day operations, such as billing or order entry. They handle many small inserts and updates, use normalised tables and need fast single-row access. OLAP systems support analysis, scanning millions of rows to aggregate sales by month or region. They use denormalised star schemas, columnar storage and are mostly read-heavy. Analysts should query OLAP copies so heavy reports do not slow down the live application.
18
Tell me about a time a dashboard you built changed a business decision.
Situation: our operations team assumed late deliveries were evenly spread. Task: I built a delivery performance dashboard. Action: I added a breakdown by courier partner and pin code cluster with a weekly trend, and reviewed it with the operations manager. Result: it showed one partner caused 60 percent of delays in two zones. The company shifted those zones to another partner, and on-time delivery rose from 84 to 92 percent in two months.
19
Design a dashboard for CXOs — what principles do you follow?
Start from the business questions, show 4–6 top KPIs with trend vs target, allow drill-downs, keep colours consistent, remove clutter, add time/region filters and give one clear insight per visual.
Lead with the fact clearly, then show where the gap came from, such as which regions, products or deal stages, so it becomes actionable rather than a blame session. Separate controllable causes like lower conversion from uncontrollable ones like a delayed product launch. Highlight what did work, and end with two or three specific actions and the metrics to track them. Share the numbers with sales leaders privately first, to avoid surprises.
Lagging indicators report outcomes that have already happened, such as monthly revenue, profit or churn; they are accurate but too late to change. Leading indicators move earlier and predict outcomes, such as qualified leads, demo bookings, cart additions or support ticket backlog. A sales dashboard should pair them: pipeline coverage today signals revenue next quarter. Leading indicators need validation that they really predict the lagging result.
24
Write SQL using LAG to compare each month's revenue with the previous month.
WITH monthly AS (
SELECT DATE_TRUNC('month', order_date) AS month,
SUM(amount) AS revenue
FROM orders
GROUP BY 1
)
SELECT month,
revenue,
LAG(revenue) OVER (ORDER BY month) AS prev_revenue,
ROUND(100.0 * (revenue - LAG(revenue) OVER (ORDER BY month))
/ NULLIF(LAG(revenue) OVER (ORDER BY month), 0), 1) AS mom_pct
FROM monthly
ORDER BY month;
25
What is the difference between frequentist and Bayesian A/B testing?
Frequentist testing asks how surprising the data would be if there were no difference, and gives p-values and confidence intervals with a fixed sample size. Bayesian testing combines a prior with the data to give a probability that treatment beats control and the expected loss of choosing it. Bayesian results are easier for business users to read, but still depend on priors and still need sensible stopping rules.
26
Tell me about a time you automated a manual Excel task.
Situation: our team spent about four hours every Monday copying sales exports from five branches into one summary sheet. Task: I was asked to cut that time. Action: I built a Power Query that read every file in a shared folder, cleaned headers and appended them, then a PivotTable and a few formulas produced the summary on refresh. Result: the report took ten minutes, copy-paste errors stopped, and two other teams reused the template.
27
Write a Tableau calculated field that keeps only sales from the last 30 days.
// Calculated field: Last 30 Days Flag
DATEDIFF('day', [Order Date], TODAY()) <= 29
AND [Order Date] <= TODAY()
// Put this field on Filters and keep True.
// For a sales measure instead of a filter:
// IF DATEDIFF('day', [Order Date], TODAY()) <= 29 THEN [Sales] END
28
Write SQL to calculate monthly customer churn rate.
WITH active AS (
SELECT DISTINCT customer_id,
DATE_TRUNC('month', order_date) AS month
FROM orders
)
SELECT a.month,
COUNT(*) AS active_customers,
COUNT(*) - COUNT(n.customer_id) AS churned_next_month,
ROUND(100.0 * (COUNT(*) - COUNT(n.customer_id)) / COUNT(*), 1) AS churn_pct
FROM active a
LEFT JOIN active n
ON n.customer_id = a.customer_id
AND n.month = a.month + INTERVAL '1 month'
GROUP BY a.month
ORDER BY a.month;
A junk dimension combines several low-cardinality flags and indicators, such as payment type, is_gift, is_express and order channel, into one small dimension table. Each row is a unique combination of those values, and the fact table stores a single key to it. This keeps the fact table narrow and avoids many tiny dimensions or loose flag columns. It works best when the combinations are limited, typically a few hundred rows.
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.
32
You inherit a monthly Excel report and suspect some numbers are hard-typed over formulas. How do you audit it?
Use Go To Special and select Constants with Numbers to highlight hard-typed values inside formula areas. Show Formulas (Ctrl+`) to scan columns for inconsistencies, and use Trace Precedents and Dependents on key totals. Inquire or Spreadsheet Compare, if available, can flag inconsistent formulas. Then fix the overwritten cells, protect formula ranges and add check totals that compare with the source data each month.
33
When would you choose Polars or DuckDB over pandas?
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.
34
Write Python code to test whether conversion differs between control and treatment.
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
Leadership wants a single revenue number for next quarter, but your forecast is uncertain. How do you present it?
Show ranges, not just a single number: a forecast line with a shaded prediction interval, or a statement like revenue will likely be between 48 and 55 crore, most likely 51. Explain the main assumptions and what would change the outcome, perhaps with best, base and worst scenarios. Use plain words such as likely or unlikely consistently. Hiding uncertainty makes a forecast look precise but leads to bad decisions when reality differs.
Start by listing both definitions: gross or net of returns and discounts, with or without tax, booking date or invoice date, and which entities are included. Compare at a detailed level for one region to find exactly where the difference arises. Usually both are correct for their purpose. Agree with both owners which is the official revenue KPI, rename the other clearly, such as booked sales, and document it in the metric dictionary.
38
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.
39
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.
40
What is an A/B test and why is random assignment so important?
An A/B test is a controlled experiment where users are split into a control group that sees the current version and a treatment group that sees a change, and you compare a metric such as conversion. Random assignment makes the groups similar in every way except the change, including things you cannot measure. That is why a difference in results can be attributed to the change itself, not to user mix or seasonality.
Tips to crack the MakeMyTrip Data Analytics interview
Prepare cases on travel funnels, such as drop-offs between search and booking or hotel conversion rates.
Practise testing scenarios for booking flows, including fare changes, payments, cancellations and refunds across flights and hotels.
Read about MakeMyTrip, Goibibo and redBus to understand its multi-brand travel business.
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; MakeMyTrip interviewers usually ask follow-ups on your first answer.
Frequently asked questions
How many rounds are there in the MakeMyTrip Data Analytics interview?
Candidates usually go through 5 stages: Online assessment (coding or SQL); Technical round 1; Technical round 2 or case round; Hiring manager round; HR 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 MakeMyTrip Data Analytics interview?
This practice set leans on Dashboards and KPIs (7), Python for Analysis (7), Data Storytelling (4), A/B Testing & Experiments (4). Revise those first, then practise explaining one or two of your own projects end to end, because most MakeMyTrip interviewers ask you to walk through real work.
Are these the exact questions asked at MakeMyTrip?
No. These are curated practice questions that match the skills and difficulty usually tested in e-commerce & consumer tech interviews like MakeMyTrip's. They are not a leaked or verified list of past questions.
Where does MakeMyTrip hire Data Analytics professionals in India?
MakeMyTrip has large teams in Gurugram, Bengaluru. Openings and locations change often, so check the MakeMyTrip careers page and filter by city and experience.