JP Morgan Interview Questions 2026
Last Updated: March 2026
Introduction
JPMorgan Chase & Co. is a leading global financial services firm with assets of $3.7 trillion and operations in over 60 countries. The firm's technology division, employing over 50,000 technologists, is one of the largest technology organizations in the world.
JP Morgan's technology teams build and maintain critical systems for investment banking, asset management, consumer banking (Chase), and commercial banking. The firm has significant technology centers in India (Bangalore, Hyderabad, Mumbai), UK, and US.
For a related deep-dive, see JP Morgan Chase Interview Questions and Prep Strategy 2026.
For freshers, JP Morgan offers exceptional opportunities to work on large-scale distributed systems, learn from experienced engineers, and develop expertise in financial technology.
JP Morgan Selection Process 2026
| Stage | Description | Duration |
|---|---|---|
| Round 1: Online Assessment | Aptitude, Coding, Behavioral | 90-120 minutes |
| Round 2: Technical Interview 1 | Algorithms, Data Structures | 45-60 minutes |
| Round 3: Technical Interview 2 | System Design, Problem Solving | 45-60 minutes |
| Round 4: HR/Behavioral Interview | Culture fit, Motivation | 30-45 minutes |
Eligibility Criteria:
- Minimum 60% or 6.5 CGPA
- Strong programming fundamentals
- CS/IT/ECE/MCA preferred
- Good analytical skills
HR Interview Questions and Answers
1. Tell me about yourself.
2. Why JP Morgan?
3. What do you know about JP Morgan's business?
- Consumer & Community Banking (CCB): Chase consumer banking, credit cards, auto loans
- Corporate & Investment Bank (CIB): Investment banking, markets, securities services
- Commercial Banking: Middle-market banking, corporate client banking
- Asset & Wealth Management: Investment management, private banking
Technology initiatives include:
- JPM Coin: Blockchain-based payment system
- Onyx: Blockchain platform for wholesale payments
- COiN: Contract Intelligence using AI/ML
- Kaleidoscope: Data analytics platform
- Cloud migration: Moving to public and private cloud infrastructure
The firm also operates innovation centers and invests heavily in cybersecurity, AI, and modernizing legacy systems."
4. What are your strengths?
5. Where do you see yourself in 5 years?
Technical Interview Questions and Answers
1. Design a payment processing system.
Components:
1. API Gateway - Authentication, rate limiting
2. Payment Service - Orchestrates payment flow
3. Fraud Detection - Real-time risk scoring
4. Ledger Service - Records transactions (ACID)
5. Notification Service - Email/SMS alerts
6. Reconciliation Service - End-of-day matching
Key Considerations:
- Idempotency for duplicate requests
- Sagas for distributed transactions
- Event sourcing for audit trail
- PCI DSS compliance
- Multi-region deployment for HA
2. Find the shortest path in a grid with obstacles.
from collections import deque
def shortest_path(grid, start, end):
"""BFS for shortest path in grid"""
rows, cols = len(grid), len(grid[0])
directions = [(0, 1), (1, 0), (0, -1), (-1, 0)]
queue = deque([(start[0], start[1], 0)]) # row, col, distance
visited = {start}
while queue:
r, c, dist = queue.popleft()
if (r, c) == end:
return dist
for dr, dc in directions:
nr, nc = r + dr, c + dc
if (0 <= nr < rows and 0 <= nc < cols and
grid[nr][nc] != 1 and (nr, nc) not in visited):
visited.add((nr, nc))
queue.append((nr, nc, dist + 1))
return -1 # No path found
# Time: O(rows * cols)
# Space: O(rows * cols)
3. Implement a thread pool.
import java.util.concurrent.*;
import java.util.concurrent.atomic.*;
public class ThreadPool {
private final BlockingQueue<Runnable> taskQueue;
private final Thread[] workers;
private final AtomicBoolean isShutdown;
public ThreadPool(int numThreads) {
this.taskQueue = new LinkedBlockingQueue<>();
this.workers = new Thread[numThreads];
this.isShutdown = new AtomicBoolean(false);
for (int i = 0; i < numThreads; i++) {
workers[i] = new Worker();
workers[i].start();
}
}
public void execute(Runnable task) {
if (isShutdown.get()) {
throw new IllegalStateException("Pool is shutdown");
}
taskQueue.offer(task);
}
public void shutdown() {
isShutdown.set(true);
for (Thread worker : workers) {
worker.interrupt();
}
}
private class Worker extends Thread {
public void run() {
while (!isShutdown.get() || !taskQueue.isEmpty()) {
try {
Runnable task = taskQueue.poll(100, TimeUnit.MILLISECONDS);
if (task != null) {
task.run();
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}
}
4. Longest Increasing Subsequence.
def lengthOfLIS(nums):
"""
DP with binary search - O(n log n)
"""
if not nums:
return 0
# tails[i] = smallest tail of increasing subsequence of length i+1
tails = []
for num in nums:
# Binary search for insertion point
left, right = 0, len(tails)
while left < right:
mid = (left + right) // 2
if tails[mid] < num:
left = mid + 1
else:
right = mid
if left == len(tails):
tails.append(num)
else:
tails[left] = num
return len(tails)
# Time: O(n log n)
# Space: O(n)
5. Design a distributed cache.
Key Components:
1. Cache Client - SDK for applications
2. Proxy/Router - Routes requests to appropriate shard
3. Cache Nodes - Store actual data
4. Consistent Hashing - Distribute keys across nodes
5. Replication - Primary-replica for availability
6. Eviction Policy - LRU/LFU for memory management
Consistency:
- Write-through: Write to cache and DB simultaneously
- Write-behind: Async write to DB
- Cache-aside: Application manages cache
Scaling:
- Horizontal: Add more nodes
- Rebalancing: Consistent hashing minimizes movement
6. Maximum subarray sum (Kadane's algorithm).
def maxSubArray(nums):
"""
Kadane's algorithm - O(n)
"""
max_sum = float('-inf')
current_sum = 0
for num in nums:
# Either start new subarray or extend existing
current_sum = max(num, current_sum + num)
max_sum = max(max_sum, current_sum)
return max_sum
# With start and end indices
def maxSubArrayWithIndices(nums):
max_sum = float('-inf')
current_sum = 0
start = end = temp_start = 0
for i, num in enumerate(nums):
if current_sum + num < num:
current_sum = num
temp_start = i
else:
current_sum += num
if current_sum > max_sum:
max_sum = current_sum
start = temp_start
end = i
return max_sum, start, end
# Time: O(n)
# Space: O(1)
7. Explain Java Memory Model.
Memory Areas:
- Heap: Objects and arrays (shared across threads)
- Stack: Local variables, method calls (per thread)
- Method Area: Class metadata, static variables
- PC Register: Current instruction address
- Native Method Stack: Native method execution
Happens-Before Relationship:
// Changes in synchronized block visible to other threads
synchronized (lock) {
sharedVar = newValue;
}
// volatile ensures visibility
volatile int sharedCounter;
Garbage Collection:
- Young Generation (Eden, Survivor spaces)
- Old Generation
- Metaspace (replacing PermGen)
8. Detect cycle in directed graph.
def hasCycle(graph):
"""
DFS with three-color marking
White: Not visited
Gray: Being processed (in current DFS path)
Black: Finished processing
"""
WHITE, GRAY, BLACK = 0, 1, 2
color = {node: WHITE for node in graph}
def dfs(node):
color[node] = GRAY
for neighbor in graph.get(node, []):
if color[neighbor] == GRAY:
return True # Back edge found
if color[neighbor] == WHITE and dfs(neighbor):
return True
color[node] = BLACK
return False
for node in graph:
if color[node] == WHITE:
if dfs(node):
return True
return False
# Time: O(V + E)
# Space: O(V)
9. Implement an ATM system.
from threading import Lock
from enum import Enum
class TransactionType(Enum):
WITHDRAWAL = 1
DEPOSIT = 2
BALANCE_INQUIRY = 3
TRANSFER = 4
class ATM:
def __init__(self, atm_id, initial_cash):
self.atm_id = atm_id
self.cash_available = initial_cash
self.cash_denominations = {2000: 0, 500: 0, 100: 0}
self.lock = Lock()
self.transaction_log = []
def authenticate_user(self, card_number, pin):
"""Validate card and PIN with bank"""
# Call bank's authentication service
pass
def withdraw(self, account, amount):
with self.lock:
if amount > self.cash_available:
return False, "Insufficient cash in ATM"
if not account.debit(amount):
return False, "Insufficient balance"
# Dispense cash
notes = self._calculate_notes(amount)
if not notes:
account.credit(amount) # Rollback
return False, "Cannot dispense exact amount"
self.cash_available -= amount
self._log_transaction(TransactionType.WITHDRAWAL, account, amount)
return True, notes
def _calculate_notes(self, amount):
"""Greedy algorithm for note dispensing"""
result = {}
for denom in sorted(self.cash_denominations.keys(), reverse=True):
if amount >= denom:
count = min(amount // denom, self.cash_denominations[denom])
result[denom] = count
amount -= count * denom
return result if amount == 0 else None
10. Word break problem.
def wordBreak(s, wordDict):
"""
DP solution - O(n^2 * m) where m is avg word length
"""
word_set = set(wordDict)
n = len(s)
# dp[i] = True if s[0:i] can be segmented
dp = [False] * (n + 1)
dp[0] = True
for i in range(1, n + 1):
for j in range(i):
if dp[j] and s[j:i] in word_set:
dp[i] = True
break
return dp[n]
# With path reconstruction
def wordBreakWithPath(s, wordDict):
word_set = set(wordDict)
n = len(s)
dp = [[] for _ in range(n + 1)]
dp[0] = [[]]
for i in range(1, n + 1):
for j in range(i):
word = s[j:i]
if dp[j] and word in word_set:
for prev in dp[j]:
dp[i].append(prev + [word])
return dp[n]
# Time: O(n^2 * m)
# Space: O(n * k) where k is number of valid splits
JP Morgan-Specific Interview Tips
- Focus on Fintech Domain: Understand payments, trading, risk management basics
- Master Distributed Systems: Consistency, availability, partitioning
- Practice System Design: Design scalable, reliable systems
- Know Java Deeply: JP Morgan is primarily a Java shop
- Study Database Optimization: Indexing, query optimization, transactions
- Understand Security: Authentication, authorization, encryption
- Learn Cloud Basics: AWS, Azure fundamentals
- Research JPM Initiatives: Onyx, JPM Coin, AI/ML projects
- Prepare Behavioral Questions: Use STAR format with fintech examples
- Show Passion for Technology: Demonstrate genuine interest in engineering
You May Also Like
- Jp Morgan Placement Papers 2026
- JP Morgan Salary 2026 - CTC Breakdown, In-Hand Pay, and Perks
- Morgan Stanley Interview Questions 2026 - Round-by-Round Guide
- Stack and Queue Interview Questions 2026
FAQs
Q: What is the salary for freshers at JP Morgan? A: ₹12-18 LPA for software engineering roles in India.
Q: What technologies does JP Morgan use? A: Java, Python, JavaScript, React, Angular, Spring Boot, Kafka, Spark, cloud platforms.
Q: Is financial knowledge required? A: Basic understanding helps but not mandatory for SDE roles.
Q: How to prepare for the online assessment? A: Practice LeetCode medium-hard problems, system design basics, and aptitude questions.
Best of luck with your JP Morgan interview!
Explore this topic cluster
More resources in Interview Questions
Use the category hub to browse similar questions, exam patterns, salary guides, and preparation resources related to this topic.
Company hub
Explore all JP Morgan resources
Open the JP Morgan hub to jump between placement papers, interview questions, salary guides, and other related pages in one place.
Open JP Morgan hubPaid contributor programme
Sat JP Morgan this year? Share your story, earn ₹500.
First-person experience reports help future candidates prep smarter. We pay verified contributors ₹500 via UPI per accepted story — with byline.
Submit your story →Ready to practice?
Take a free timed mock test
Put what you learned into practice. Our mock tests match the 2026 pattern with timer, navigator, reveal, and score breakdown. No signup.
Start Free Mock Test →Related Articles
JP Morgan Fresher Salary India 2026: Complete Breakdown
If you are a 2026 engineering or commerce graduate targeting JP Morgan Chase's India operations, the first question you need...
JP Morgan Placement Papers 2026
JP Morgan Chase & Co. is the largest bank in the United States and one of the world's most respected financial services...
JP Morgan Salary 2026 - CTC Breakdown, In-Hand Pay, and Perks
JP Morgan fresher compensation depends on role family, campus tier, location, and business unit. This stub organizes the...
ABB Interview Questions 2026 - Round-by-Round Guide
ABB interviews usually go beyond textbook answers. Panels expect clean thought process, structured communication, and...
Accenture Interview Questions 2026
Accenture is a leading global professional services company providing strategy, consulting, digital, technology, and...
More from PapersAdda
JPMorgan Chase Interview 2026: Questions, Rounds & Prep Playbook
JPMorgan SRE AVP Interview Experience: 5 Rounds Decoded 2026
Amazon SDE-1 Interview Experience 2026: Tier-2 to Offer in 4 Rounds
Applabs Placement Papers Programming Technical Interview Prep 2026