Grant Thornton Bharat Data Science Interview Questions & Answers
Curated interview practice questions with answers. These are practice scenarios, not a verified list of past interview questions.
About Grant Thornton Bharat hiring for Data Science roles
Grant Thornton Bharat is the Indian member firm of the Grant Thornton global network of audit, tax and advisory firms. It provides assurance, tax, risk advisory, deals, forensic and digital consulting services to businesses and government organisations. In India it hires for audit, risk consulting, cybersecurity, data analytics and technology roles, with offices in metros and several tier-2 cities.
For Data Science roles, this Grant Thornton Bharat practice set focuses most on Python for Data Science (8), Machine Learning (5), SQL for Data Science (5), Time Series & Forecasting (4). It has 5 easy, 29 medium, 6 hard questions, so you can start easy and work up to the harder ones.
Grant Thornton Bharat Data Science interview process
Resume screening or online assessment
Technical interview
Managerial round
Partner or HR round
Typical pattern based on public candidate experiences. Rounds vary by role, team and year.
Solved for Grant Thornton BharatStart 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.
L1 (Lasso) adds absolute weights and can shrink some to zero, giving feature selection. L2 (Ridge) adds squared weights and shrinks them smoothly without removing features.
02
How do you use groupby with multiple aggregations?
Three weeks is too little to learn seasonality, so borrow information. Find similar past launches by category, price band and channel, and use their early sales curves as analogues. A global model trained across many products, with product attributes as features, can also forecast a cold-start item. Combine this with planned marketing spend and business judgement, show a wide interval, and update the forecast weekly as real data arrives.
04
Halfway through a test you discover a bug that broke the treatment for Android users. What do you do?
Stop or pause the affected part, fix the bug and restart the test with fresh data, since mixing broken and fixed periods biases results. Do not simply drop Android users from analysis afterwards, because that can break randomisation balance if the bug affected behaviour or logging. Document the incident, and add pre-launch checks such as running the variant through QA on every platform and monitoring guardrails in the first hours.
05
What is multicollinearity and how do you handle it?
Predictors that are highly correlated make coefficients unstable. Detect with VIF above about 5-10, then drop or combine features, use PCA or apply regularisation.
06
What is Bayesian A/B testing and how are its results reported?
Bayesian A/B testing starts with a prior on each variant's metric, updates it with observed data and produces a posterior distribution. Instead of a p-value, you report things like the probability that treatment beats control, say 94 percent, and the expected loss if you choose the wrong variant. Business teams find this easier to interpret. Priors must be chosen sensibly, and continuous monitoring still needs discipline about decision rules.
07
Your neural network's training loss suddenly becomes NaN. What do you check?
Common causes are a learning rate that is too high, exploding gradients, bad input values, and unstable maths like log of zero. I would check the input data for NaN or infinite values, lower the learning rate, add gradient clipping, and make sure the loss uses the stable built-in version with logits. With mixed precision, I would check the loss scaler. Logging gradient norms per step helps find the exact point it breaks.
08
Your feature computation on millions of rows uses only one CPU core. Would you use threads or processes to speed it up?
Because of the GIL, threads in CPython do not run Python bytecode in parallel. Threads are fine for I/O-bound work like calling APIs or reading many files. For CPU-bound work like feature computation on chunks, multiprocessing or joblib runs separate processes on separate cores. The cost is process start-up time and copying data between processes. Many NumPy and Pandas operations already release the GIL internally, so measure before adding complexity.
09
Write SQL to compute week-1 retention by signup week.
WITH signups AS (
SELECT user_id, DATE_TRUNC('week', signup_date) AS cohort, signup_date
FROM users
), active AS (
SELECT DISTINCT s.user_id, s.cohort
FROM signups s
JOIN events e ON e.user_id = s.user_id
AND e.event_date >= s.signup_date + INTERVAL '7 day'
AND e.event_date < s.signup_date + INTERVAL '14 day'
)
SELECT s.cohort, COUNT(*) AS users,
ROUND(100.0 * COUNT(a.user_id) / COUNT(*), 1) AS week1_retention_pct
FROM signups s
LEFT JOIN active a ON a.user_id = s.user_id
GROUP BY s.cohort
ORDER BY s.cohort;
Use grid search, random search or Bayesian optimisation with cross-validation, starting with a coarse random search and narrowing the promising ranges.
12
Explain exponential smoothing and the Holt-Winters method.
Simple exponential smoothing forecasts with a weighted average of past values where weights decay exponentially, so recent points matter more. Holt's method adds a smoothed trend component. Holt-Winters adds a seasonal component as well, either additive or multiplicative. Each component has a smoothing parameter between 0 and 1 that is fitted to the data. These models are fast, easy to explain and strong baselines for retail and demand data.
13
Your LLM assistant confidently quotes a policy clause that does not exist. Why does this happen and how do you reduce it?
Hallucination is when a model produces confident text that is false or not supported by any source. It happens because the model generates plausible tokens rather than checking facts. Reduce it by grounding answers in retrieved documents, asking the model to cite sources and say I do not know when context is missing, using low temperature, and validating outputs with rules or a second checking step. Measure it with a labelled evaluation set.
14
After joining orders with a promotions table, total revenue doubled. What went wrong?
The join created duplicate order rows, because some orders match more than one promotion row, so each amount is counted several times. Check by comparing COUNT(*) with COUNT(DISTINCT order_id) after the join. Fix it by aggregating the promotions table to one row per order first, picking one promotion with ROW_NUMBER, or summing revenue before the join. Always check row counts after every join.
15
A Pandas merge suddenly returns many more rows than the left table had. What happened?
The join key is probably not unique on the right side, so each left row matches several right rows and the result multiplies. Check with right['key'].duplicated().sum(). Other causes are null or blank keys matching each other after cleaning, or joining on the wrong column. Fix it by deduplicating or aggregating the right table first, and use merge(..., validate='many_to_one') so Pandas raises an error when the assumption breaks.
16
Your LLM gives different summaries for the same document on different runs, but auditors need consistent output. What do you do?
Set temperature to zero or near zero and fix other sampling settings, and use a seed where the API supports it, though outputs may still vary slightly. Pin the exact model version. Use a structured output format with fixed fields, and reduce ambiguity in the prompt. Cache and store each generated output with its inputs and version, so the stored result, not a regeneration, is what auditors see.
Retrieval-Augmented Generation fetches relevant documents and gives them to an LLM as context, reducing hallucination and keeping answers grounded in current private data.
18
Pandas: find customers whose monthly spend increased for three consecutive months.
NULL means unknown, so any comparison with NULL, even NULL = NULL, gives unknown and the row is filtered out. Use IS NULL or IS NOT NULL instead. Aggregates like SUM, AVG and COUNT(column) skip NULLs, so AVG may be computed over fewer rows than you expect. NOT IN with a subquery that contains a NULL returns no rows. COALESCE replaces NULLs with a default value.
20
Your credit model has good overall AUC but performs much worse for applicants from one region. What do you do?
First confirm with per-segment metrics and enough samples, since small groups are noisy. Then check why: fewer training examples from that region, different feature distributions, missing data or labels that reflect past biased decisions. Fixes include collecting more data, reweighting, segment-aware features or a separate calibration. Also review fairness and regulatory requirements, and agree with risk and compliance teams on acceptable performance gaps before launch.
21
Tell me about a time you found a mistake in your own analysis after sharing it.
Situation: after presenting a retention report, I noticed I had counted test accounts as users. Task: correct it before decisions were made. Action: I reran the numbers that evening, informed my manager and the audience with a short note showing old and new figures and what changed, and added a filter and a check to the shared query. Result: the conclusion held with smaller numbers, and the team valued the transparency.
22
Your product image classifier works on studio catalogue photos but fails on photos users take with their phones. Why, and what do you do?
This is domain shift: user photos have clutter, blur, poor lighting and odd angles that the model never saw. Collect and label a sample of real user photos and evaluate on them separately. Add augmentation for blur, noise, colour jitter, rotation and random crops, and fine-tune on a mix of studio and real images. Monitor accuracy on user photos in production, since that is the distribution that matters.
23
How would you structure a data science codebase so notebooks do not become unmaintainable?
Keep notebooks for exploration and reporting only. Move reusable logic into a Python package with modules for data loading, features, training and evaluation, and import it into notebooks. Keep settings in config files, write unit tests for feature functions, and use pre-commit with a formatter and linter. Track experiments in a tool like MLflow. A clear folder template and code reviews keep the team consistent as the project grows.
24
Explain precision vs recall. When would you prefer recall?
Precision = TP / (TP + FP). Recall = TP / (TP + FN).
Prefer recall when missing a positive is costly — for example disease screening or fraud detection.
Situation: my weekly demand forecast under-predicted a category by 30 percent for a month. Task: explain the miss and stop it recurring. Action: I compared forecast and actuals by region and found a new distribution channel had launched that the model knew nothing about. I told the planning team quickly, added channel as a feature and set up a weekly error review. Result: error returned to normal and planners trusted the alerts.
27
Tell me about a time you created documentation that helped your team work with data.
Situation: new analysts kept misusing two similar revenue columns. Task: reduce repeated questions and errors. Action: I wrote a short data dictionary for our main tables, with definitions, known pitfalls and sample queries, and linked it in the team wiki and onboarding checklist. I updated it whenever schemas changed. Result: onboarding time dropped, and the number of revenue mismatches in reports fell noticeably within a quarter.
28
Soon after a new model version went live, customer complaints spiked. How do you roll back safely and learn from it?
Roll back immediately to the previous registry version through the deployment pipeline, rather than editing servers by hand, and confirm metrics recover. Then investigate offline: compare predictions of both versions on the same traffic, check feature pipelines and data changes, and review what the offline evaluation missed. Add the failing cases to the test set, and use canary or shadow rollout with alert thresholds for future releases.
29
Write torchvision transforms for training and validation of an image classifier using ImageNet normalisation.
Situation: one morning our recommendation model started showing the same five products to all users. Task: restore service and find the cause. Action: I rolled back to the previous model version within 20 minutes, then traced the issue to an upstream table that had arrived empty, so all user features were defaults. Result: we added data volume checks before scoring and a blameless postmortem. Rollback readiness saved us that day.
31
Difference between a shallow copy and a deep copy?
A shallow copy duplicates the outer object but shares nested objects. A deep copy (copy.deepcopy) recursively duplicates everything, so changes to nested items do not leak.
32
How do you make a machine learning experiment reproducible?
Version the code with Git, the data with a tool like DVC or dated snapshots, and the environment with pinned requirements or Docker. Set random seeds for every library. Log parameters, metrics and the exact data version for each run with a tracker like MLflow. Keep preprocessing inside a pipeline rather than manual notebook steps. Then anyone should be able to rebuild the same model from a commit and a data version.
33
A deep network you built from scratch does not learn at all; the loss stays flat from the first epoch. Could weight initialisation be the reason?
If weights start too large, activations and gradients explode; if too small, they vanish, and training stalls. If all weights are equal, every neuron learns the same thing. Good schemes keep the variance of activations stable across layers: Xavier or Glorot initialisation for tanh and sigmoid, and He initialisation for ReLU. Frameworks use sensible defaults, but it matters when building custom layers or very deep networks.
34
Write Python code to run an ADF stationarity test and difference the series if needed.
from statsmodels.tsa.stattools import adfuller
def is_stationary(s, alpha=0.05):
p_value = adfuller(s.dropna())[1]
return p_value < alpha
series = s.copy()
d = 0
while not is_stationary(series) and d < 2:
series = series.diff()
d += 1
print('differencing order d =', d)
35
Write Python code to compare revenue per user between two groups using Welch's t-test.
I would first align definitions: date range, time zone, filters like test users or cancelled orders, and whether the metric counts users or events. Then compare at a smaller grain, by day or by city, to find where the gap starts. I would read the dashboard's underlying query and check data refresh times. Once found, I would document the agreed definition so the same mismatch does not repeat.
They store same-type values in contiguous memory and run vectorised operations in compiled C, avoiding Python loop overhead and per-object type checks.
The receptive field is the region of the input image that can influence one activation. Early layers see small patches like edges, and deeper layers see larger regions, enabling recognition of whole objects. It grows with kernel size, depth, stride and pooling, and dilated convolutions increase it without extra parameters. If the receptive field is smaller than the objects you care about, the network cannot capture their full context.
It projects data onto orthogonal directions of maximum variance to reduce dimensions, remove correlation and speed up models, at some cost of interpretability.
Pooling downsamples a feature map by summarising small regions. Max pooling keeps the largest value in each window, such as 2x2, and average pooling keeps the mean. It reduces computation, enlarges the receptive field of later layers and gives a little tolerance to small shifts. Many modern networks replace pooling with strided convolutions, but global average pooling before the classifier head is still very common.
Tips to crack the Grant Thornton Bharat Data Science interview
Revise accounting and audit basics or IT risk concepts, depending on the service line you are applying to.
For technology and risk roles, learn basics of internal controls, IT general controls, cybersecurity frameworks and data analysis in Excel.
Prepare to explain why you prefer advisory or audit work and how you handle detail-oriented tasks under tight deadlines.
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; Grant Thornton Bharat interviewers usually ask follow-ups on your first answer.
Frequently asked questions
How many rounds are there in the Grant Thornton Bharat Data Science interview?
Candidates usually go through 4 stages: Resume screening or online assessment; Technical interview; Managerial round; Partner or 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 Grant Thornton Bharat Data Science interview?
This practice set leans on Python for Data Science (8), Machine Learning (5), SQL for Data Science (5), Time Series & Forecasting (4). Revise those first, then practise explaining one or two of your own projects end to end, because most Grant Thornton Bharat interviewers ask you to walk through real work.
Are these the exact questions asked at Grant Thornton Bharat?
No. These are curated practice questions that match the skills and difficulty usually tested in consulting interviews like Grant Thornton Bharat's. They are not a leaked or verified list of past questions.
Where does Grant Thornton Bharat hire Data Science professionals in India?
Grant Thornton Bharat has large teams in Gurugram, Mumbai, Bengaluru, Kolkata, Chandigarh, Kochi. Openings and locations change often, so check the Grant Thornton Bharat careers page and filter by city and experience.