Company Interview Questions · Banking & Fintech

JPMorgan & Amex: AI / Data Science (2025)

❓ 7 questions🏢 JPMorgan & Amex🆕 Recent reports

JPMorgan Chase & American Express: AI / Data Science Interview Experiences (2025). Rounds, real reported questions and model answers, compiled from public candidate reports (sources at the end). Practice mode hides every answer: say your answer first, press Show answer, then rate yourself. Use 🔁 Review again to build your revision list and 🎲 Random question for a quick drill.

About this interview

Compiled from public candidate reports: JPMorgan Chase VP, AI/ML & Data Science (Bengaluru, May 2025) and American Express AI Engineer (Hyderabad, campus, November 2025) and Analytics, Software & Sciences (India, September 2025). Public process guides for both firms are used for context. The questions are paraphrased, and the model answers are written by EasyLearnSpace.

JPMorgan Chase American Express
Role VP, AI/ML & Data Science AI Engineer (campus); Analytics, Software & Sciences
Reported round First round: hands-on EDA in Python/NumPy Project guesstimates, ML and DL basics, introduction and languages
Outcome Not progressed after round 1 (candidate felt it went well) Not selected; both rated the experience positive
Lesson Even VP roles start with practical coding and data skills Be ready to quantify your project with estimates

01Rounds at a glance

02Questions and model answers

Q1
JPMC: perform EDA on a dataset and handle the outliers. Walk through your code.
import pandas as pd, numpy as np, matplotlib.pyplot as plt

df = pd.read_csv("transactions.csv")
print(df.shape, df.dtypes, df.isna().mean().round(3), sep="\n")
print(df.describe(percentiles=[.01, .25, .5, .75, .99]).T)

col = "amount"
q1, q3 = df[col].quantile([.25, .75]); iqr = q3 - q1
lo, hi = q1 - 1.5 * iqr, q3 + 1.5 * iqr
out = (df[col] < lo) | (df[col] > hi)
print(f"outliers: {out.mean():.2%}")

fig, ax = plt.subplots(1, 2, figsize=(10, 4))
ax[0].boxplot(df[col].dropna()); ax[0].set_title("Amount (raw)")
ax[1].hist(np.log1p(df[col].clip(lower=0)), bins=50); ax[1].set_title("log(1+amount)")
plt.tight_layout(); plt.show()

df["amount_capped"] = df[col].clip(lo, df[col].quantile(.995))   # winsorise, keep the rows
df["is_outlier"] = out.astype(int)                              # keep the signal for fraud models
  • Say why: in banking, outliers are often the signal (fraud), so flag them rather than deleting them. Cap them for linear models, and log-transform skewed money amounts.
  • Also mention z-scores vs IQR (IQR is robust to skew), and Isolation Forest for multivariate outliers.
Q2
How do you choose a method to handle outliers?
  • First ask whether the outlier is an error or a real rare event. Data-entry errors get fixed or removed; real extremes (large transactions) are kept.
  • Options:
  • Winsorise or cap.
  • Log or Box-Cox transform.
  • Robust scaling (median/IQR).
  • Tree models, which are insensitive to outliers.
  • Robust losses (Huber).
  • A separate model for the extreme segment.
  • Multivariate outliers: Isolation Forest, LOF, Mahalanobis distance.
  • Document the decision and its effect on model metrics; regulators may ask.
Q3
How would you build a credit-card fraud detection system at a bank?
  • Real-time scoring within about 100 ms at authorisation.
  • Features:
  • Velocity (transactions in 1 h / 24 h).
  • Amount vs the user's typical spend.
  • Merchant risk, geography and travel distance.
  • Device and channel.
  • Time of day.
  • Graph links (shared cards, devices, merchants).
  • Model: gradient boosting for tabular data plus rules for known patterns; consider a sequence model for transaction history.
  • Imbalance: class weights; PR-AUC; recall at a fixed false-positive rate.
  • Decision layer: approve / step-up (OTP) / decline, with thresholds tuned on fraud loss vs customer friction.
  • Operations:
  • Labels arrive with a delay (chargebacks), so handle that.
  • Monitor drift, retrain weekly or monthly.
  • Model risk management (SR 11-7 style validation) and explainability via reason codes.
Q4
How do GenAI use cases in banking differ from other industries?
  • Common use cases:
  • Internal knowledge assistants (policies, procedures).
  • Document extraction (KYC, trade documents).
  • Call summarisation.
  • Code assistants.
  • Research summarisation for analysts.
  • Extra constraints:
  • Data residency.
  • No customer PII leaving the bank's boundary (private endpoints or self-hosted models).
  • Explainability and audit trails.
  • Model risk governance.
  • Strict accuracy on numbers.
  • Patterns: RAG with citations, a human in the loop for any customer-facing or decision output, deterministic tools for calculations (never let the LLM do the arithmetic), and red-teaming for prompt injection.
Q5
Amex: guesstimate how many transactions per second your fraud model must handle.

Answer (show the structure, not the exact number):

  • Assume about 100 million active cards, with about 1.5 transactions per card per day → about 150 million transactions per day.
  • 150M / 86,400 s ≈ 1,700 TPS on average. Peak (festive sales, evenings) is roughly 3–5× → design for about 8,000 TPS.
  • At a p99 latency budget of about 50 ms per score, with each instance handling about 500 requests per second → about 16 instances, plus headroom across 2 regions.
  • State your assumptions clearly, sanity-check them, and tie them to the design (caching features in Redis, horizontal scaling).
Q6
Explain the vanishing gradient problem and how modern networks avoid it.
  • The problem: in backpropagation through many layers, gradients are products of derivatives. With sigmoid or tanh (derivatives below 1), they shrink exponentially, so early layers barely learn. RNNs suffer this over time steps.
  • Fixes:
  • ReLU / GELU activations.
  • Residual connections (ResNets, Transformers).
  • Normalisation (Batch / Layer Norm).
  • Careful initialisation (He / Xavier).
  • LSTM / GRU gates for sequences.
  • Gradient clipping, for exploding gradients.
Q7
Behavioural (JPMC VP): how do you lead a data science team through a model that fails validation?
  • Own it: "Our credit model failed independent validation on stability (PSI 0.3 in one segment)."
  • Act: 1. Run a root-cause review with the team, without blame. 2. Find the issue: a feature driven by a policy change. 3. Rebuild with stable features and add segment-level monitoring. 4. Communicate the timeline to the business and risk teams every week.
  • Result: "It passed revalidation in five weeks. We added stability tests to our standard development checklist, and the next two models passed on the first submission."
  • A VP-level answer shows governance, communication, coaching and process improvement.

03How to prepare for banking AI roles

Sources

Created by Ajeetkumar