Skip to content

Bajaj Finserv Data Science Interview Questions & Answers

Curated interview practice questions with answers. These are practice scenarios, not a verified list of past interview questions.

About Bajaj Finserv hiring for Data Science roles

Bajaj Finserv is a Pune-based financial services group, part of the Bajaj Group, with businesses in lending, insurance and investments. Its subsidiary Bajaj Finance is a large non-banking finance company known for consumer durable loans, personal loans and EMI cards. It hires for credit, risk, analytics, sales and technology roles, including data and digital product teams.

For Data Science roles, this Bajaj Finserv practice set focuses most on Deep Learning and NLP (7), SQL for Data Science (6), Machine Learning (5), Python for Data Science (4). It has 2 easy, 32 medium, 6 hard questions, so you can start easy and work up to the harder ones.

Company type
Fintech
Headquarters
Pune, India
Main India offices
Pune

Bajaj Finserv Data Science interview process

  1. Online assessment or resume screening
  2. Functional or technical interview
  3. Managerial round
  4. HR round

Typical pattern based on public candidate experiences. Rounds vary by role, team and year.

Solved for Bajaj FinservStart 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

What is stacking in ensemble learning?

Save to ▾
Show answer
Training a meta-model on the predictions of several base models, often using cross-validated predictions to avoid leakage.
02

What is a confidence interval?

Save to ▾
Show answer
A range built from sample data that would contain the true parameter in a stated percentage (for example 95%) of repeated samples. It is not the probability that the parameter lies inside this one interval.
03

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
04

Your neural network's training loss suddenly becomes NaN. What do you check?

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

What is data augmentation?

Save to ▾
Show answer
Data augmentation creates new training examples by applying realistic changes to existing ones. For images this means flips, rotations, crops and brightness changes. For text it can mean synonym replacement, back-translation or random word dropping. For audio, adding noise or shifting pitch. It improves generalisation when data is limited. Changes must keep the label correct; flipping a digit 6 can turn it into a 9.
06

Write PyTorch code to fine-tune a pretrained ResNet-18 for a 5-class problem by replacing its final layer.

Save to ▾
Show answer
import torch, torch.nn as nn from torchvision import models model = models.resnet18(weights=models.ResNet18_Weights.DEFAULT) for p in model.parameters(): p.requires_grad = False # freeze backbone model.fc = nn.Linear(model.fc.in_features, 5) opt = torch.optim.AdamW(model.fc.parameters(), lr=1e-3) loss_fn = nn.CrossEntropyLoss() # train head first, then unfreeze later layers with a lower lr
07

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.
08

Write SQL to calculate month-over-month revenue growth.

Save to ▾
Show answer
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), 2) AS mom_pct FROM monthly;
09

Write Python code that validates prediction requests with Pydantic before passing them to a model.

Save to ▾
Show answer
from pydantic import BaseModel, Field, ValidationError class LoanRequest(BaseModel): age: int = Field(ge=18, le=100) income: float = Field(gt=0) city: str = Field(min_length=2) def predict(payload: dict): try: req = LoanRequest(**payload) except ValidationError as e: return {'error': e.errors()} return {'score': float(model.predict_proba([[req.age, req.income]])[0, 1])}
10

You target-encoded a city column and validation AUC jumped from 0.72 to 0.95. What do you suspect?

Save to ▾
Show answer
Target encoding replaces each category with the average target value for that category, for example the churn rate per city. It handles high-cardinality columns compactly. The main risk is leakage: if a row's own target is included in its encoding, the model sees the answer and overfits. Prevent it with out-of-fold encoding, smoothing toward the global mean for rare categories, and fitting only on training data.
11

What are RNNs and why did LSTMs improve them?

Save to ▾
Show answer
RNNs process sequences with a hidden state but struggle with long dependencies. LSTMs add gates that control what to remember or forget, easing the vanishing gradient.
12

Pandas: compute a 7-day rolling average of daily sales for each store.

Save to ▾
Show answer
# df has columns: store, date, sales df['date'] = pd.to_datetime(df['date']) df = df.sort_values(['store', 'date']) df['sales_7d_avg'] = ( df.groupby('store')['sales'] .transform(lambda s: s.rolling(7, min_periods=1).mean()) )
13

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;
14

Write a Python function to split a long text into overlapping chunks by word count for a RAG index.

Save to ▾
Show answer
def chunk_words(text, size=200, overlap=40): if overlap >= size: raise ValueError('overlap must be smaller than size') words = text.split() chunks, step = [], size - overlap for start in range(0, len(words), step): chunks.append(' '.join(words[start:start + size])) if start + size >= len(words): break return chunks print(len(chunk_words(doc_text)))
15

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;
16

Write a Python function to compute MASE for a seasonal forecast.

Save to ▾
Show answer
import numpy as np def mase(y_train, y_true, y_pred, m=7): # Scale: in-sample error of seasonal naive y_train = np.asarray(y_train) scale = np.mean(np.abs(y_train[m:] - y_train[:-m])) err = np.mean(np.abs(np.asarray(y_true) - np.asarray(y_pred))) return err / scale # MASE below 1 beats seasonal naive
17

Tell me about a time you had to explain a deep learning model's mistake to a client or stakeholder.

Save to ▾
Show answer
Situation: our document classifier mislabelled several legal notices, and the client was upset. Task: explain clearly and restore confidence. Action: I showed the misclassified examples, explained that they used a format absent from training data, and avoided jargon. I proposed adding those samples, a confidence threshold for human review and weekly error reports. Result: errors on that format fell sharply and the client extended the project.
18

Write scikit-learn code to get precision, recall and a confusion matrix at a custom threshold of 0.3.

Save to ▾
Show answer
from sklearn.metrics import confusion_matrix, precision_score, recall_score proba = model.predict_proba(X_test)[:, 1] pred = (proba >= 0.3).astype(int) print(confusion_matrix(y_test, pred)) print('precision', precision_score(y_test, pred)) print('recall', recall_score(y_test, pred))
19

Your notebook runs on your laptop but fails on a colleague's machine. How do you make the work reproducible?

Save to ▾
Show answer
First pin the environment: a requirements.txt or conda environment file with exact versions, or a Docker image. Set random seeds for NumPy, scikit-learn and any framework you use. Remove hard-coded local paths and read them from a config file. Make sure data comes from a shared, versioned location. Finally, restart the kernel and run the notebook top to bottom, so hidden cell order bugs are caught before sharing.
20

The business asks you to pick a decision threshold for a churn model. How do you choose it?

Save to ▾
Show answer
The default 0.5 is rarely right. I would get the cost of each outcome: the value of saving a churner, the cost of a retention offer, and the team's capacity to contact customers. Then I compute expected profit or precision and recall at many thresholds on validation data and pick the one that maximises value within capacity. I would also check that the chosen threshold stays stable over recent months.
21

You have 50,000 unlabelled images and budget to label only 3,000. How do you use the budget well?

Save to ▾
Show answer
Do not pick 3,000 at random. Label a small diverse seed set, using embedding clustering to cover variety, and train a first model. Then use active learning: label the images the model is least confident about or that disagree across models. Use semi-supervised methods like pseudo-labelling high-confidence images, or self-supervised pretraining on all 50,000. Keep a randomly sampled test set so evaluation stays unbiased.
22

Design an end-to-end churn prediction system.

Save to ▾
Show answer
Define churn and the prediction window → build usage and billing features → handle imbalance → train gradient boosting → evaluate with PR-AUC and lift → explain with SHAP → deploy as batch scoring or an API → monitor drift → hand top-risk users to the retention team.
23

How do you handle dates and time zones in Pandas?

Save to ▾
Show answer
Convert strings with pd.to_datetime, giving a format argument for speed and safety. Use the .dt accessor to pull year, month, weekday or hour. For time zones, first tz_localize naive timestamps to their real source zone, then tz_convert to a common zone such as UTC or Asia/Kolkata. Store data in UTC and convert only for reporting. Mixing naive and aware timestamps causes errors, so keep one convention across the pipeline.
24

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.
25

Write SQL to find customers who ordered in January 2026 but not in February 2026.

Save to ▾
Show answer
SELECT DISTINCT o.customer_id FROM orders o WHERE o.order_date >= '2026-01-01' AND o.order_date < '2026-02-01' AND NOT EXISTS ( SELECT 1 FROM orders f WHERE f.customer_id = o.customer_id AND f.order_date >= '2026-02-01' AND f.order_date < '2026-03-01' );
26

What is the difference between SGD and Adam optimisers?

Save to ▾
Show answer
SGD updates weights using the gradient times a fixed learning rate, often with momentum. Adam keeps running averages of gradients and their squares, giving each parameter its own adaptive step size. Adam converges fast with little tuning and is the default for transformers. Well-tuned SGD with momentum sometimes generalises better on vision tasks. AdamW, which decouples weight decay, is the common choice for modern deep learning.
27

Your dataset is highly imbalanced (2% positives). How do you handle it?

Save to ▾
Show answer
Use stratified splits, class weights, resampling (SMOTE or undersampling) and threshold tuning, and judge the model with PR-AUC or F1 instead of accuracy.
28

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,)
29

How do you get reliable JSON output from an LLM?

Save to ▾
Show answer
Use the provider's structured output or JSON schema mode when available, which constrains the output to your schema. Otherwise, describe the exact schema in the prompt with an example, and use low temperature. Always parse and validate the response in code, for example with Pydantic, and on failure retry with the error message included. Keep schemas small and flat, and use enums for fields with fixed values.
30

What is statistical power and how can you increase it?

Save to ▾
Show answer
Power is the probability of detecting a real effect. Increase it with a larger sample, a bigger effect size, lower noise or a higher significance level.
31

Tell me about a time you found a mistake in your own analysis after sharing it.

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

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.
33

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.
34

Write scikit-learn code for a pipeline with scaling and logistic regression, evaluated with 5-fold cross-validation.

Save to ▾
Show answer
from sklearn.pipeline import make_pipeline from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.model_selection import cross_val_score pipe = make_pipeline(StandardScaler(), LogisticRegression(max_iter=1000)) scores = cross_val_score(pipe, X, y, cv=5, scoring='roc_auc') print(scores.mean(), scores.std())
35

Soon after a new model version went live, customer complaints spiked. How do you roll back safely and learn from it?

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

Tell me about a GenAI project you built and what you learned from it.

Save to ▾
Show answer
Situation: our HR team answered the same leave and policy questions daily. Task: build an internal assistant in six weeks. Action: I built a RAG pipeline over policy PDFs, added citations, created a 150-question evaluation set with HR, and iterated on chunking and reranking. Result: answer accuracy reached 91 percent and HR queries dropped by 40 percent. I learned that the evaluation set mattered more than the choice of model.
37

A feature works well offline but is not available at prediction time in production. How do you handle this?

Save to ▾
Show answer
This is training-serving skew. The feature might be computed from data that arrives later, like final order status. First confirm exactly when each feature is available in production. Rebuild the training set using point-in-time values, as they were at prediction time, or drop the feature. A feature store with point-in-time joins and the same feature code for training and serving prevents this. Expect offline scores to drop, but they become honest.
38

What is the minimum detectable effect (MDE) in experiment design?

Save to ▾
Show answer
The MDE is the smallest true effect your test can reliably detect given the sample size, baseline rate, significance level and power. If baseline conversion is 5 percent and your MDE is 10 percent relative, you can detect a move to 5.5 percent but will likely miss smaller lifts. Choose the MDE from business value: the smallest change worth shipping. A smaller MDE needs a much larger sample, roughly growing with one over MDE squared.
39

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
40

Tell me about a time you had to deliver data under an urgent deadline.

Save to ▾
Show answer
Situation: the leadership team needed festive-sale numbers by city for a 9 am review, and the dashboard pipeline had failed overnight. Task: deliver accurate numbers in three hours. Action: I queried the raw orders tables directly, reused validated logic from the dashboard SQL, cross-checked totals with finance's daily figure and flagged two cities with partial data. Result: the review went ahead on time, and I later added pipeline failure alerts.

Tips to crack the Bajaj Finserv Data Science interview

  • Learn lending basics such as credit scores, EMI calculation, interest rates and loan approval processes before the interview.
  • For analytics and risk roles, revise SQL, Excel and basic statistics, and discuss how data helps assess credit risk.
  • Understand the difference between a bank and an NBFC and know Bajaj Finserv's main product lines.
  • 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; Bajaj Finserv interviewers usually ask follow-ups on your first answer.

Frequently asked questions

How many rounds are there in the Bajaj Finserv Data Science interview?

Candidates usually go through 4 stages: Online assessment or resume screening; Functional or technical interview; Managerial 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 Bajaj Finserv Data Science interview?

This practice set leans on Deep Learning and NLP (7), SQL for Data Science (6), Machine Learning (5), Python for Data Science (4). Revise those first, then practise explaining one or two of your own projects end to end, because most Bajaj Finserv interviewers ask you to walk through real work.

Are these the exact questions asked at Bajaj Finserv?

No. These are curated practice questions that match the skills and difficulty usually tested in fintech interviews like Bajaj Finserv's. They are not a leaked or verified list of past questions.

Where does Bajaj Finserv hire Data Science professionals in India?

Bajaj Finserv has large teams in Pune. Openings and locations change often, so check the Bajaj Finserv careers page and filter by city and experience.

Data Science questions for similar companies