Skip to content

Data Science Technical Round Questions & Answers

40 questions for the technical round stage — 2 easy, 35 medium, 3 hard.

About the technical round round

The technical round is the core of a Data Science interview: concept questions with follow-ups, a live hands-on task and a deep dive into one of your projects. Interviewers check depth, not just definitions.

Tips for the technical round round

  • Say your approach out loud before you start writing.
  • After a correct answer, expect 'why?' and 'what if?' follow-ups; go one level deeper than the question.
  • Pick one project you can explain end to end, including what you would do differently.
  • If you get stuck, explain what you would try next instead of going silent.
Solved — technical roundStart 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

Write SQL to find the top 3 products by revenue in each category.

Save to ▾
Show answer
WITH rev AS ( SELECT category, product_id, SUM(price * qty) AS revenue FROM order_items GROUP BY category, product_id ), ranked AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY category ORDER BY revenue DESC) AS rn FROM rev ) SELECT category, product_id, revenue FROM ranked WHERE rn <= 3;
02

Random forest vs a single decision tree?

Save to ▾
Show answer
A forest averages many trees trained on bootstrapped rows and random feature subsets, which cuts variance and overfitting at the cost of interpretability.
03

Write Python code to run an ADF stationarity test and difference the series if needed.

Save to ▾
Show answer
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)
04

Your manager asks whether collecting more training data will improve the model. How do you answer using a learning curve?

Save to ▾
Show answer
A learning curve plots training and validation scores against the size of the training set. If both scores are low and close, the model has high bias and needs more features or a more flexible model. If training is high but validation is much lower and the gap narrows as data grows, the model has high variance and more data will help. It tells you whether collecting more data is worth the cost.
05

Write Pandas code to create lag and rolling features for each customer.

Save to ▾
Show answer
df = df.sort_values(['customer_id', 'month']) g = df.groupby('customer_id')['spend'] df['spend_lag1'] = g.shift(1) df['spend_lag3'] = g.shift(3) # shift first so the current month is not included df['spend_roll3_mean'] = g.transform(lambda s: s.shift(1).rolling(3).mean())
06

Write torchvision transforms for training and validation of an image classifier using ImageNet normalisation.

Save to ▾
Show answer
from torchvision import transforms as T mean, std = [0.485, 0.456, 0.406], [0.229, 0.224, 0.225] train_tf = T.Compose([ T.RandomResizedCrop(224), T.RandomHorizontalFlip(), T.ColorJitter(0.2, 0.2, 0.2), T.ToTensor(), T.Normalize(mean, std), ]) val_tf = T.Compose([ T.Resize(256), T.CenterCrop(224), T.ToTensor(), T.Normalize(mean, std), ])
07

Explain Bayes' theorem with an example.

Save to ▾
Show answer
P(A given B) = P(B given A) x P(A) / P(B). In a medical test it converts test accuracy and disease prevalence into the real chance a positive result means disease.
08

How does dropout work?

Save to ▾
Show answer
During training it randomly switches off a fraction of neurons so the network cannot depend on any single unit, acting as a regulariser against overfitting.
09

Write Python code to find the top 3 most similar documents to a query using cosine similarity on embeddings.

Save to ▾
Show answer
import numpy as np def top_k(query_vec, doc_vecs, k=3): q = query_vec / np.linalg.norm(query_vec) d = doc_vecs / np.linalg.norm(doc_vecs, axis=1, keepdims=True) scores = d @ q idx = np.argsort(-scores)[:k] return list(zip(idx, scores[idx])) # doc_vecs shape: (n_docs, dim), query_vec shape: (dim,)
10

What is SARIMA and how does it extend a plain ARIMA model?

Save to ▾
Show answer
SARIMA adds seasonal terms to ARIMA. It is written ARIMA(p,d,q)(P,D,Q)m, where the second set are seasonal AR, differencing and MA orders, and m is the season length, such as 7 for daily data with a weekly cycle or 12 for monthly data. SARIMAX further allows external regressors like price or holidays. It handles one seasonal period well but struggles with multiple seasonalities, such as daily plus yearly.
11

Write SQL to show each customer's first order date, last order date and the gap between them in days.

Save to ▾
Show answer
SELECT customer_id, MIN(order_date) AS first_order, MAX(order_date) AS last_order, MAX(order_date) - MIN(order_date) AS days_between, COUNT(*) AS orders FROM orders GROUP BY customer_id ORDER BY days_between DESC; -- PostgreSQL: DATE minus DATE gives days; use DATEDIFF in other engines
12

What is transfer learning?

Save to ▾
Show answer
Reusing a model pretrained on a large dataset and fine-tuning it on a smaller task-specific dataset, saving data, time and compute.
13

What is the Global Interpreter Lock (GIL)?

Save to ▾
Show answer
A mutex in CPython that lets only one thread execute Python bytecode at a time. Use multiprocessing for CPU-bound work and threads or asyncio for I/O-bound work.
14

How do you use groupby with multiple aggregations?

Save to ▾
Show answer
df.groupby('region').agg(total=('sales','sum'), avg=('sales','mean')) gives named aggregations per group in one pass.
15

Write Python code to compute the Population Stability Index for a feature to detect drift.

Save to ▾
Show answer
import numpy as np def psi(expected, actual, bins=10): edges = np.quantile(expected, np.linspace(0, 1, bins + 1)) edges[0], edges[-1] = -np.inf, np.inf e = np.histogram(expected, edges)[0] / len(expected) a = np.histogram(actual, edges)[0] / len(actual) e, a = np.clip(e, 1e-6, None), np.clip(a, 1e-6, None) return float(np.sum((a - e) * np.log(a / e))) # rule of thumb: <0.1 stable, 0.1-0.25 watch, >0.25 investigate
16

What is the difference between iterators and iterables in Python?

Save to ▾
Show answer
An iterable can produce an iterator (it has __iter__); an iterator has __next__ and remembers its position. A for-loop calls iter() on the iterable and then next() repeatedly.
17

Write Python code to apply a CUPED adjustment using each user's pre-experiment metric.

Save to ▾
Show answer
import numpy as np # df has: variant, y (metric during test), x (same metric pre-test) x, y = df['x'].to_numpy(), df['y'].to_numpy() theta = np.cov(x, y, ddof=1)[0, 1] / np.var(x, ddof=1) df['y_cuped'] = y - theta * (x - x.mean()) print(df.groupby('variant')[['y', 'y_cuped']].agg(['mean', 'var'])) # Means stay comparable; variance of y_cuped is lower
18

What is chunking in RAG and how do you choose a chunk size?

Save to ▾
Show answer
Chunking splits documents into smaller pieces before embedding them, so retrieval returns focused passages that fit in the prompt. Small chunks, like 200 tokens, are precise but lose context; large chunks, like 1,000 tokens, keep context but add noise and cost. Split on natural boundaries such as headings and paragraphs, add some overlap, and keep metadata like title and section. Then tune chunk size using retrieval metrics on real questions.
19

Explain INNER, LEFT, RIGHT and FULL OUTER joins.

Save to ▾
Show answer
An INNER JOIN returns only rows with matching keys in both tables. A LEFT JOIN returns all rows from the left table, with NULLs where the right has no match. A RIGHT JOIN is the mirror of that. A FULL OUTER JOIN returns all rows from both sides, matched where possible. In analytics, LEFT JOIN from a customers table is common so customers with no orders are still counted.
20

What are guardrails in LLM applications?

Save to ▾
Show answer
Guardrails are checks around the model that keep inputs and outputs safe and on-topic. Input guardrails detect prompt injection, abuse or off-topic requests. Output guardrails check for personal data, toxic content, policy violations or invalid formats before the answer reaches the user. They can be rules, classifiers or a second LLM call. Good guardrails also define fallback responses and log blocked cases for review.
21

Pandas: find customers whose monthly spend increased for three consecutive months.

Save to ▾
Show answer
m = (df.assign(month=df['date'].dt.to_period('M')) .groupby(['customer_id', 'month'])['amount'].sum() .reset_index() .sort_values(['customer_id', 'month'])) m['up'] = (m.groupby('customer_id')['amount'].diff() > 0).astype(int) # three rises in a row = three consecutive increases m['streak'] = (m.groupby('customer_id')['up'] .rolling(3).sum().reset_index(level=0, drop=True)) result = m.loc[m['streak'] == 3, 'customer_id'].unique()
22

What is an isolation forest and how does it detect anomalies?

Save to ▾
Show answer
An isolation forest builds many random trees that split data on random features at random thresholds. Anomalies are rare and different, so they get isolated in very few splits, giving a short average path length. Normal points need many splits. The anomaly score comes from that path length. It is fast, works without labels and scales to large data, but you must choose a contamination rate or score threshold carefully.
23

Explain exponential smoothing and the Holt-Winters method.

Save to ▾
Show answer
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.
24

How do you tune hyperparameters?

Save to ▾
Show answer
Use grid search, random search or Bayesian optimisation with cross-validation, starting with a coarse random search and narrowing the promising ranges.
25

What is SVM and the kernel trick?

Save to ▾
Show answer
SVM finds the maximum-margin separating hyperplane. Kernels such as RBF compute similarity in a higher-dimensional space implicitly, so non-linear boundaries are possible.
26

Write SQL to compute a 7-day rolling average of daily active users.

Save to ▾
Show answer
WITH daily AS ( SELECT activity_date, COUNT(DISTINCT user_id) AS dau FROM events GROUP BY activity_date ) SELECT activity_date, dau, AVG(dau) OVER (ORDER BY activity_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS dau_7d_avg FROM daily ORDER BY activity_date;
27

What is the Augmented Dickey-Fuller test?

Save to ▾
Show answer
The ADF test checks whether a series has a unit root, which means it is non-stationary. The null hypothesis is that a unit root exists. A small p-value, say below 0.05, lets you reject the null and treat the series as stationary. It is often paired with the KPSS test, whose null is the opposite, stationarity. Using both gives a more reliable conclusion before choosing how much to difference.
28

Write Python code to evaluate a forecasting model with expanding-window time series cross-validation.

Save to ▾
Show answer
import numpy as np from sklearn.model_selection import TimeSeriesSplit from sklearn.metrics import mean_absolute_error tscv = TimeSeriesSplit(n_splits=5, test_size=28) scores = [] for tr, te in tscv.split(X): model.fit(X.iloc[tr], y.iloc[tr]) pred = model.predict(X.iloc[te]) scores.append(mean_absolute_error(y.iloc[te], pred)) print(np.mean(scores), scores)
29

What is U-Net and why is it popular for segmentation?

Save to ▾
Show answer
U-Net is an encoder-decoder network. The encoder downsamples to capture context, and the decoder upsamples back to full resolution to produce a per-pixel mask. Skip connections copy encoder feature maps to the matching decoder level, so fine spatial detail lost during downsampling is recovered. It works well with limited labelled data, which made it the standard for medical imaging and industrial defect segmentation, and it is also the backbone of many diffusion models.
30

How do you choose a learning rate for a neural network?

Save to ▾
Show answer
Start with a sensible default such as 1e-3 for Adam, run a learning-rate range test, and use schedulers or warm-up while watching the loss curve.
31

Which activation functions do you know and when to use them?

Save to ▾
Show answer
ReLU for hidden layers, sigmoid for binary outputs, softmax for multi-class outputs and tanh when zero-centred outputs help; Leaky ReLU avoids dead neurons.
32

You added an index but the query is still slow. How do indexes work, and when do they fail to help or even hurt?

Save to ▾
Show answer
An index is a separate sorted structure, usually a B-tree, that lets the database find rows without scanning the whole table, like a book index. It speeds up filters, joins and sorting on the indexed columns. Indexes cost storage and slow down inserts, updates and deletes because each index must be updated. They may be ignored for low-selectivity columns or when a function is applied to the column in WHERE.
33

Explain ROC curve and AUC.

Save to ▾
Show answer
The ROC curve plots true positive rate against false positive rate across thresholds. AUC is the probability that a random positive is ranked above a random negative; 0.5 is chance.
34

What is TF-IDF?

Save to ▾
Show answer
Term Frequency × Inverse Document Frequency: a word scores high if it is frequent in one document but rare across all documents. A classic way to turn text into numeric features.
35

What is normalisation, and why are analytics tables often denormalised?

Save to ▾
Show answer
Normalisation splits data into related tables to remove redundancy, so each fact is stored once, which suits transactional systems with many updates. Analytics workloads mostly read large volumes, and joins across many tables are slow and error-prone. So warehouses often use denormalised, wide tables or star schemas that repeat some attributes. The trade-off is more storage and the need to keep copies consistent through pipelines.
36

What is recursive feature elimination?

Save to ▾
Show answer
Recursive feature elimination trains a model, ranks features by importance or coefficient size, removes the weakest ones, and repeats until the desired number remains. RFECV picks the number of features using cross-validation. It considers features together rather than one at a time. The downsides are high compute cost on large data and unstable results when features are correlated, so check stability across folds.
37

Explain the chi-square test.

Save to ▾
Show answer
It checks whether observed category counts differ from expected counts, used for independence between two categorical variables and for goodness of fit.
38

What are decorators in Python?

Save to ▾
Show answer
A decorator wraps a function to add behaviour such as logging, timing or caching without changing its code. It is applied with the @name syntax above the function.
39

Write SQL to compute week-1 retention by signup week.

Save to ▾
Show answer
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;
40

Your model performance degrades every few months. Would you retrain on a fixed schedule or based on triggers?

Save to ▾
Show answer
Scheduled retraining, like monthly, is simple and predictable but may be too late after a sudden change or wasteful when nothing changed. Trigger-based retraining runs when monitoring shows drift or a performance drop, which reacts faster but needs reliable monitoring. Many teams combine both: a regular schedule plus triggers for big shifts. Either way, a retrained model must pass the same evaluation gate before replacing the current one.

Frequently asked questions

What happens in the Data Science technical round round?

The technical round is the core of a Data Science interview: concept questions with follow-ups, a live hands-on task and a deep dive into one of your projects. Interviewers check depth, not just definitions.

How do I clear the technical round round?

Say your approach out loud before you start writing. After a correct answer, expect 'why?' and 'what if?' follow-ups; go one level deeper than the question. Pick one project you can explain end to end, including what you would do differently.

Which round comes next?

A typical order is online assessment, telephonic screening, one or two technical rounds, a managerial round and HR. Use the other round pages to practise each stage.