InMobi Data Analytics Interview Questions & Answers
Curated interview practice questions with answers. These are practice scenarios, not a verified list of past interview questions.
About InMobi hiring for Data Analytics roles
InMobi is a Bengaluru-based technology company known for its mobile advertising and marketing technology platforms. It helps advertisers reach users across apps and devices using data and machine learning, and its group also built the Glance content platform for smartphone lock screens. It hires software engineers, data scientists, data engineers and product managers for large-scale adtech systems.
For Data Analytics roles, this InMobi practice set focuses most on Excel (7), Data Cleaning (5), SQL (5), Power BI (5). It has 30 medium, 10 hard questions, so you can start easy and work up to the harder ones.
Company type
Product
Headquarters
Bengaluru, India
Main India offices
Bengaluru
InMobi Data Analytics interview process
Online coding assessment
Technical round 1 (DSA)
Technical round 2 (system design)
Hiring manager round
HR round
Typical pattern based on public candidate experiences. Rounds vary by role, team and year.
Solved for InMobiStart 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
An inner join between orders and customers returns fewer orders than the orders table has. What could be wrong?
Orphan records are child rows whose foreign key has no matching parent, such as orders with a customer_id that does not exist in the customer table. They break joins silently: an inner join drops them and totals fall short. Find them with a LEFT JOIN from the child to the parent and filter where the parent key IS NULL. Then fix the source, add an Unknown member, or report them separately.
02
What is the logical order in which SQL executes a SELECT query?
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.
A confidence interval gives a range of plausible values for a population parameter based on a sample. A 95 percent interval for average order value of 820 to 880 rupees means that if we repeated the sampling many times, about 95 percent of such intervals would contain the true average. Wider intervals mean more uncertainty; larger samples narrow them. Reporting the interval is more honest than reporting one number.
04
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.
05
Why are A/B tests tricky in two-sided marketplaces such as ride-hailing or food delivery?
In marketplaces, groups share supply, so the treatment can affect control. If treatment riders get a discount and book more, fewer drivers remain for control riders, which makes treatment look better than it would at full rollout. This violates the independence assumption. Teams use cluster randomisation by city or region, switchback tests that alternate treatment by time slots, or model the spillover when estimating impact.
// 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
08
Find customers who ordered in January but not in February.
A good model is a governed core plus self-service on top. The central team builds certified datasets with agreed metric definitions and a small set of official dashboards for key KPIs. Business users then build their own views on those certified datasets, not on raw extracts. This gives speed and flexibility without twenty versions of revenue. Training, naming conventions and periodic clean-up of unused content keep it healthy.
These are late-arriving dimensions. Do not drop the orders, or revenue will be understated. Common practice is to insert a placeholder customer row with the natural key and 'Unknown' attributes, link the order to it, and update that row when full details arrive. Alternatively map to a single Unknown member with key -1. Also monitor how many such rows appear daily, because a spike usually means a broken feed.
12
Your workbook has 200,000 rows and hundreds of VLOOKUPs and takes minutes to recalculate. What do you do?
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.
13
What is the difference between a table and a normal range?
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.
15
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;
16
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.
17
A manager asks for a dashboard that refreshes every minute. How do you decide the right refresh frequency?
Match refresh to how quickly decisions are made. A monthly board pack needs daily refresh at most, while a warehouse dispatch board may need 15-minute or live updates. Faster refresh costs more in source load, licensing and complexity, and can show incomplete data. Ask how quickly someone will act on a change, check when upstream systems finish loading, and always display the last refreshed time on the dashboard.
18
Two tables have a many-to-many relationship and your report totals look inflated. What do you do?
Inflated totals usually mean rows are being double counted through the many-to-many path. I would first check whether a proper dimension table can sit between them, turning it into two one-to-many relationships, for example a bridge table of unique customer IDs. I would set single filter direction, test totals against the source with a simple SQL query, and use measures with DISTINCTCOUNT where needed. Many-to-many should be a deliberate choice, not a default.
19
How do you handle a dataset with 30% missing values in a key column?
Understand why it is missing, consider imputation or a missing flag, test sensitivity, and talk to data owners about fixing collection if it is systematic.
20
Write pandas code for a pivot table of sales by region and category with sum and count.
Use a star schema, remove unused columns, prefer measures, reduce visuals per page, limit high-cardinality fields and use aggregations or incremental refresh.
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;
It extracts and transforms data using recorded steps in M language, such as merging, unpivoting, changing types and removing errors, before loading to the model.
25
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
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%}')
28
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);
29
What do the match_mode and search_mode arguments of XLOOKUP control?
match_mode decides how a value is matched: 0 exact (default), -1 exact or next smaller, 1 exact or next larger, and 2 wildcard. search_mode decides direction: 1 searches first to last, -1 searches last to first, and 2 or -2 use binary search on sorted data. Searching last to first is a quick way to fetch the latest entry for a customer without sorting, and next-smaller matching handles tax slabs or commission bands.
30
Why would you publish a Tableau data source separately instead of embedding it in each workbook?
A published data source lives on Tableau Server or Cloud and can be reused by many workbooks. Calculations, joins, field names and extract refresh schedules are defined once, so every report uses the same revenue logic and the database is queried once per refresh instead of once per workbook. You can certify it and set permissions. Embedded sources are fine for a quick personal analysis but drift over time.
First check whether it is a tracking problem: did the analytics tag break on some templates, did consent settings change, does server log or backend order data show the same fall? If the drop is real, check the search console for impressions and rankings, recent site releases such as changed URLs, missing redirects, noindex tags or robots.txt changes, and whether a search algorithm update or seasonal pattern matches. Then break the drop down by page group.
Field parameters let report users switch which measure or dimension a visual uses through a slicer. For example, one chart can switch between Sales, Profit and Quantity, or between grouping by Region, Category and Channel. This replaces many duplicate visuals or bookmark tricks, keeping the report lighter and easier to maintain. They are created from Modeling, New parameter, Fields, which generates a small table behind the slicer.
36
Write a DAX measure for a KPI card showing achievement against target and a colour for conditional formatting.
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
37
Actual sales are at order-line level but targets are set per region per month. How do you model them together?
Keep two fact tables at their natural grains: fact_sales at order line and fact_target at region-month. Never spread targets onto order lines. Both share conformed dimensions at a common level, such as a month attribute in the date dimension and region in the geography dimension. In reports, compare them only at month and region or higher. In Power BI, relate targets to month-level or region-level tables, not to daily keys.
38
What is the difference between an outlier and a data error?
An outlier is a genuine but unusual value, such as a bulk corporate order of 50 laptops; it is real and may be important. A data error is an incorrect value, such as an age of 250 or a price entered in paise instead of rupees. Errors should be fixed or removed. Outliers should be investigated and often kept, perhaps analysed separately or with median-based metrics so they do not distort averages.
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.
Tips to crack the InMobi Data Analytics interview
Practise DSA problems along with concepts of high-throughput systems, caching and low-latency design used in advertising platforms.
For data roles, revise SQL, statistics and machine learning basics like click-through rate prediction and model evaluation metrics.
Read about how mobile advertising works, including ad auctions and targeting, to discuss the business side confidently.
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; InMobi interviewers usually ask follow-ups on your first answer.
Frequently asked questions
How many rounds are there in the InMobi Data Analytics interview?
Candidates usually go through 5 stages: Online coding assessment; Technical round 1 (DSA); Technical round 2 (system design); 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 InMobi Data Analytics interview?
This practice set leans on Excel (7), Data Cleaning (5), SQL (5), Power BI (5). Revise those first, then practise explaining one or two of your own projects end to end, because most InMobi interviewers ask you to walk through real work.
Are these the exact questions asked at InMobi?
No. These are curated practice questions that match the skills and difficulty usually tested in product interviews like InMobi's. They are not a leaked or verified list of past questions.
Where does InMobi hire Data Analytics professionals in India?
InMobi has large teams in Bengaluru. Openings and locations change often, so check the InMobi careers page and filter by city and experience.