Company Interview Questions · Banking & Fintech

Wells Fargo & Deutsche Bank: Data / Analytics

❓ 6 questions🏢 Wells Fargo & Deutsche Bank🆕 Recent reports

Wells Fargo & Deutsche Bank: Data / Analytics Interview Experiences (2025–26). 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: Wells Fargo Data Engineer (Bengaluru, July 2025: ROW_NUMBER vs ROWID in Oracle) and Deutsche Bank Data Analyst (Mumbai, May 2026, offer: 4 rounds; Bengaluru campus, April 2025: Dijkstra; Birmingham, August 2025, offer: third-highest salary). Public guides list Data Science Consultant openings at Wells Fargo India. The questions are paraphrased, and the model answers are written by EasyLearnSpace.

Wells Fargo Deutsche Bank
Role Data Engineer; Data Science Consultant openings Data Analyst
Rounds Technical (Oracle SQL internals) Resume + projects → technical (tools, architecture, problem solving) → hands-on SQL + Python → Head of Analytics (communication, goals, fit)
Reported questions ROW_NUMBER vs ROWID Joins, window functions, CTEs, query optimisation; pandas; automation; third-highest salary; Dijkstra (campus)
Outcome Not selected 2 offers, 1 not selected

01Rounds at a glance

02Questions and model answers

Q1
What is the difference between ROW_NUMBER() and ROWID in Oracle?
  • ROWID: a physical address pseudocolumn identifying where a row is stored (data object, file, block, slot). It is fast for direct access, unique per row in a table, but can change after operations such as table moves or export/import. Not for business logic.
  • ROW_NUMBER(): an analytic function that assigns a sequential number to rows in a result set based on OVER (PARTITION BY ... ORDER BY ...). Used for ranking, top-N per group and deduplication.
  • Also: ROWNUM is a pseudocolumn assigned before ORDER BY, a classic pitfall for top-N queries.
Q2
Find the third-highest salary.
SELECT DISTINCT salary
FROM (SELECT salary, DENSE_RANK() OVER (ORDER BY salary DESC) AS rk FROM employees) t
WHERE rk = 3;
-- alternative: SELECT salary FROM employees ORDER BY salary DESC OFFSET 2 ROWS FETCH NEXT 1 ROW ONLY;  (ties differ!)
  • Explain the difference with ties: DENSE_RANK gives the third distinct salary; OFFSET gives the third row.
Q3
Use a CTE + window function to compute each customer's running balance.
WITH tx AS (
  SELECT customer_id, txn_date,
         CASE WHEN type = 'CREDIT' THEN amount ELSE -amount END AS signed_amt
  FROM transactions
)
SELECT customer_id, txn_date, signed_amt,
       SUM(signed_amt) OVER (PARTITION BY customer_id ORDER BY txn_date
                             ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_balance
FROM tx;
Q4
How do you optimise a slow SQL query in a bank's reporting system?
  • Read the execution plan: full scans, bad join orders, sorts spilling to disk.
  • Indexes on the join and filter columns (composite, in the right column order); avoid functions on indexed columns in WHERE.
  • Reduce data early: filter before joining, select only the needed columns, pre-aggregate.
  • Partition large fact tables by date; use materialised views for repeated reports; update statistics.
  • Measure before and after, and keep correctness checks (row counts, totals).
Q5
Dijkstra's shortest path: implement it in Python.
import heapq
def dijkstra(graph, src):                 # graph: {u: [(v, w), ...]}
    dist = {src: 0}; pq = [(0, src)]
    while pq:
        d, u = heapq.heappop(pq)
        if d > dist.get(u, float("inf")): continue
        for v, w in graph.get(u, []):
            nd = d + w
            if nd < dist.get(v, float("inf")):
                dist[v] = nd; heapq.heappush(pq, (nd, v))
    return dist
  • O((V + E) log V) with a binary heap; it needs non-negative weights (otherwise use Bellman-Ford).
Q6
Tell me about an automation you built and its business impact.

Answer (STAR):

  • "Monthly regulatory reports took 3 days of manual Excel work. I built a Python + SQL pipeline (pandas, templated outputs, validation checks) scheduled in Airflow."
  • "The time dropped to 2 hours with automated reconciliation against source totals. Errors went from about 4 a month to 0, and the team re-used the framework for 5 other reports."
  • Banks value control, accuracy and auditability, so mention the validation checks and documentation.

03How to prepare

Sources

Created by Ajeetkumar