Wells Fargo Lead Java Engineer · Week 4 of 4 · Final Round

SYSTEM
DESIGN
+ LEADERSHIP

This week decides selection. Architects draw systems. Leaders tell stories. Know your frameworks cold — RESHADED for design, STAR for leadership. One weak answer here ends the process.

🏗️ Payment System Design Capacity Estimation K8s Deployments CI/CD Pipelines Architecture Tradeoffs STAR Stories Behavioral Questions Production Incidents
Chapter One · System Design
THE DESIGN FRAMEWORK
Every system design answer must follow a repeatable structure. Deviation signals inexperience. Interviewers score you on process as much as solution.
🗺️
RESHADED — 8-Step Design Framework
Requirements · Estimation · Scale · HA · API · Data · Explain · Deep-dive
Use Every Time
System Design — 45-Minute Interview Structure
R
Requirements Clarification
Functional: what must the system do? Non-functional: latency SLA, availability (99.9% vs 99.99%), consistency model, durability. Ask — never assume. State constraints explicitly.
⏱ 3–5 min
E
Estimation (Capacity)
Traffic: RPS (read/write split). Storage: data size × retention. Bandwidth. Memory (cache sizing). Show arithmetic — don't guess. Round to powers of 10.
⏱ 4–6 min
S
Scale Strategy
Horizontal vs vertical. Stateless services. DB read replicas. Caching layers. CDN for static. Partitioning/sharding strategy.
⏱ 3 min
H
High-Level Design
Draw the boxes. API Gateway → Services → DB. Synchronous vs async paths. Don't get lost in detail yet — cover the full system first.
⏱ 8–10 min
A
API Design
Key REST endpoints. Request/response schema. Auth model. Idempotency keys for mutations. Versioning strategy.
⏱ 3–4 min
D
Data Model
Key entities. Schema design. Which DB per service (polyglot persistence). Indexes. Consistency requirements per table.
⏱ 4–5 min
E
Explain Component Deep Dives
Pick the hardest parts: payment deduplication, consistency across services, high-throughput read path. Go deep on two or three components.
⏱ 8–10 min
D
Discuss Failure Modes & Tradeoffs
What fails? How do you detect it? How does the system degrade gracefully? What would you do differently with 10× the budget? This is where leads shine.
⏱ 5–7 min
💡 Interviewer Psychology

Interviewers don't expect a perfect system. They're evaluating: Do you ask the right questions? Do you reason about tradeoffs? Do you know when to use which technology? Do you think about failure? Speak your reasoning aloud — silence is death in system design.

Chapter Two · System Design
DESIGN A PAYMENT SYSTEM
The most likely system design question at Wells Fargo. Know this architecture from memory — every layer, every decision, every failure mode.
💳
High-Scale Payment Processing Platform
100K TPS · 99.999% uptime · Exactly-once · SWIFT/ISO20022
Most Likely Question
Wells Fargo Payment Platform — Full Architecture
Client Layer
Mobile App
Web Banking
Corporate API
3rd Party (ISO20022)
↓ TLS 1.3 · mTLS for B2B ↓
Edge & Gateway Layer
API Gateway
JWT Auth · Rate Limit · WAF · TLS · Routing
Fraud Pre-Screen
<10ms rule engine
↓ Load Balancer (L7, health-aware) ↓
Core Business Services
Payment
Orchestrator
Account
Service
FX & Fees
Service
Compliance
Service
Notification
Service
↓ Kafka Event Bus (partitioned by accountId) ↓
Async Processing
SWIFT/ISO20022
Connector
Settlement
Engine
Reconciliation
Service
Audit & Ledger
Service
↓ Data Layer ↓
Data Layer
Oracle RAC
(ACID core)
Redis Cluster
(idempotency+lock)
MongoDB
(audit log)
Elasticsearch
(search+query)
Prometheus
+ Grafana
Key Design Decisions — Explain Each One
DecisionChoiceWhy — The Architect's Reasoning
Sync vs AsyncHybridPayment initiation sync (user waits for ack). Settlement async via Kafka — decouples latency-sensitive API from slow SWIFT network
IdempotencyRedis SETNX + DB constraintClient sends UUID. Redis lock prevents concurrent duplicates. DB unique constraint is final safety net — two layers of protection
Distributed transactionSaga (Orchestration)No 2PC in microservices. Orchestrated saga gives visibility, central failure handling, compensating transactions. Temporal or Axon for orchestrator
DB choiceOracle RACACID, Oracle RAC for HA, proven at financial institutions, regulatory compliance. Polyglot: MongoDB for audit (schema-less, append-only)
MessagingKafka (partitioned by accountId)Ordering per account. High throughput. Replay for audit. Exactly-once with transactions API. Dead letter queue for failures
CachingRedis (account data, limits, FX rates)Account metadata: TTL 5min. FX rates: TTL 30s. Payment dedup window: TTL 24h. Never cache balances without invalidation strategy
Payment Flow — Step by Step (Interviewer Loves This)
Wire Transfer — Happy Path + Failure Handling
1
Client → POST /v1/payments {idempotencyKey, amount, fromAccount, toAccount} + JWT
2
API Gateway: verify JWT → check rate limit (Redis) → route to Payment Orchestrator
3
SETNX lock:idempotencyKey (Redis, TTL 24h) → duplicate? return cached response immediately
4
Validate: account exists, sufficient balance (SELECT FOR UPDATE), fraud score, AML/compliance check
5
DB: INSERT payment record (status=PENDING), debit source account — in single DB transaction
6
Kafka: produce PaymentInitiated event (key=accountId, exactly-once) → return 202 Accepted + paymentId to client
7
Settlement Engine consumes event → sends SWIFT MT103/pacs.008 → polls for confirmation → updates status=SETTLED → publishes PaymentSettled event
8
Notification Service consumes PaymentSettled → push notification + email + webhook. Audit Service persists immutable record.
🎤 Follow-Up — Failure Modes

The SWIFT network is down for 2 hours. How does your system behave? What does the customer see?

✅ Architect Answer
  • Circuit breaker opens on SWIFT connector after N failures
  • Payments queue in Kafka — not lost. The system accepts payment initiation normally, debits the account, status=PENDING
  • Customer UI: "Payment received — processing may take longer than usual due to network delays"
  • When SWIFT recovers: Settlement Engine resumes from Kafka offset — processes backlog in order per account
  • SLA breach alert: if PENDING > 30 min, ops team alerted. Manual intervention path available
  • Backpressure: if Kafka lag exceeds threshold, API starts returning 503 with Retry-After header — prevents flooding queue
Chapter Three · System Design
CAPACITY ESTIMATION
Interviewers want to see you can reason from first principles. Show arithmetic. Use round numbers. State assumptions loudly.
📐
Payment System — Back-of-Envelope Estimation
Traffic · Storage · Cache · Bandwidth · Instances
Must Show Working
Assumptions — State These First
Given — State Before Estimating
Scale10M active customers, 100M payment transactions/day~1,150 TPS avg
Peak factor10× average (month-end, payroll)~11,500 TPS peak
Read:Write ratioStatus checks + history vs. new payments80:20 read-heavy
Payment record size~500 bytes (IDs, amounts, status, timestamps, metadata)500B
Retention7 years (regulatory requirement for financial data)7yr
Calculations
Storage Estimation
Daily storage100M payments × 500B50 GB/day
Annual storage50 GB × 365~18 TB/year
7-year total18 TB × 7 (+ 3× replication)~380 TB total
Audit/Kafka logs2× payment record size × 30 day retention~3 TB Kafka
Compute & Cache Estimation
API instances11,500 TPS peak ÷ 500 RPS per instance~24 pods (×2 spare = 48)
Redis cache size10M active accounts × 1KB cache per account~10 GB Redis memory
Idempotency keys100M keys/day × 100B per key × 1 day TTL~10 GB Redis
DB connections48 pods × 20 pool size960 connections (Oracle RAC can handle)
Kafka partitions11,500 TPS ÷ 100 msg/s per partition~120 partitions (round to 128)
Network bandwidth11,500 TPS × 2KB avg payload~23 MB/s = ~184 Mbps
💡 Interview Technique

Always say "Let me state my assumptions" before calculating. Interviewers know the numbers are approximate — they're watching whether you can reason logically. Round aggressively: 86,400 seconds/day ≈ 100,000. 1 million bytes ≈ 1MB. Show the formula, then the result.

Chapter Four · System Design
ARCHITECTURE TRADEOFFS
Lead engineers must justify every technology choice. "We used it before" is not an answer. Know the tradeoffs cold — both sides of every argument.
⚖️
15 Critical Architecture Tradeoff Questions
Each question has two defensible answers — know both
Lead Differentiator
Sync vs Async communication?
Synchronous (REST/gRPC)
+ Simpler. Immediate response. Easy debugging.
– Tight coupling. Cascading failures. Latency chains.
Async (Kafka/MQ)
+ Decoupled. Absorbs load spikes. Resilient.
– Eventual consistency. Harder debugging. DLT needed.
SQL vs NoSQL?
Oracle / PostgreSQL
+ ACID. Joins. Mature. Regulatory trust.
– Horizontal scale harder. Schema migrations costly.
MongoDB / Cassandra
+ Horizontal scale. Schema flexibility. High write throughput.
– Eventual consistency. No joins. Less suited for financials.
Push vs Pull (notifications)?
Push (WebSocket/SSE)
+ Real-time. Low latency.
– Connection management at scale. Reconnect logic.
Pull (polling)
+ Simple. Stateless. Client controls rate.
– Wasteful. Not real-time. N+1 problems.
Strong vs Eventual consistency?
Strong (ACID)
+ No stale reads. Simpler logic.
– Higher latency. Lower throughput. Harder to scale.
Eventual
+ High availability. Low latency. Scales globally.
– Stale reads. Complex conflict resolution. User confusion.
Microservices vs Monolith?
Microservices
+ Independent deploy. Fault isolation. Team scale.
– Distributed complexity. Network latency. Ops overhead.
Modular Monolith
+ Simple to start. Easy debugging. No network hops.
– Full deploy on change. Harder to scale parts separately.
Cache-aside vs Write-through?
Cache-aside (Lazy)
+ Only cache what's needed. Low write overhead.
– Cache miss on first access. Stampede risk.
Write-through
+ Cache always warm. No stale reads.
– Every write hits cache + DB. Higher write latency.
🎤 Classic Architect Trap Question

"Just use a distributed cache to make everything fast." Why might you push back on this?

✅ Lead's Answer — Don't Be a Yes-Engineer
  • Cache invalidation is hard: stale balance data in a payment system = real money risk. When does the cache get invalidated?
  • Consistency model: for payment balances, strong consistency is required. A cache introduces lag — even 100ms can cause double-spend under high load
  • Operational complexity: Redis cluster adds another failure point. Now you need Redis HA, eviction policies, monitoring, disaster recovery
  • Correct use: Cache account metadata (name, limits), FX rates, idempotency keys — not account balances in the hot payment path
  • Pushback technique: "I want to understand what's slow first. Let's profile the actual bottleneck before adding infrastructure."
Chapter Five · Cloud & DevOps
KUBERNETES DEPLOYMENTS
Wells Fargo runs on OpenShift (OCP) — Red Hat's enterprise Kubernetes. Know K8s objects, deployment strategies, resource management, and health probes.
K8s Objects, HPA & Deployment Strategies
Pod · Deployment · Service · ConfigMap · HPA · PodDisruptionBudget
Important
K8s Cluster — Payment Service Deployment
Control Plane
API Server
etcd
Scheduler
Controller Manager
Worker Node 1
payment-svc-7d9f [RUNNING]
payment-svc-8a1c [RUNNING]
account-svc-3b2e [RUNNING]
Worker Node 2
payment-svc-2f4a [RUNNING]
payment-svc-9c1d [PENDING — scaling]
fraud-svc-5e3f [CrashLoopBackOff ⚠]
Deployment Strategies — Know All Four
ROLLING
Default K8s strategy
  • Replace pods gradually
  • maxSurge=1 extra pod
  • maxUnavailable=0 for payments
  • Zero downtime
  • Slow rollback
  • Use: standard releases
BLUE-GREEN
Two full environments
  • Deploy to Green (idle)
  • Switch LB from Blue→Green
  • Instant rollback: flip back
  • 2× infrastructure cost
  • Zero-downtime guaranteed
  • Use: critical payment API releases
CANARY
Phased traffic shift
  • Route 5% traffic to new version
  • Monitor error rate + latency
  • Gradually increase to 100%
  • Immediate rollback if metrics degrade
  • Needs Istio/NGINX for weights
  • Use: high-risk feature validation
RECREATE
Kill all, start new
  • Terminate all old pods first
  • Then start new pods
  • Downtime guaranteed
  • Simple — no overlap complexity
  • Use: dev/test ONLY. Never prod payments.
payment-service-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: payment-service
  namespace: payments-prod
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0        # zero downtime — critical for payments
  template:
    spec:
      containers:
      - name: payment-service
        image: registry.wf.com/payment-service:2.4.1
        resources:
          requests:
            memory: "512Mi"
            cpu: "500m"
          limits:
            memory: "1Gi"              # never exceed — OOMKilled
            cpu: "1000m"
        readinessProbe:             # traffic only when ready
          httpGet:
            path: /actuator/health/readiness
            port: 8080
          initialDelaySeconds: 30
          periodSeconds: 10
        livenessProbe:              # restart if deadlocked
          httpGet:
            path: /actuator/health/liveness
            port: 8080
          initialDelaySeconds: 60
          failureThreshold: 3
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
spec:
  minReplicas: 3
  maxReplicas: 20
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70  # scale up at 70% CPU
Chapter Six · Cloud & DevOps
CI/CD PIPELINES
Know the full pipeline from commit to production. Every stage, every quality gate, and why each one protects a financial institution.
🔄
Production CI/CD Pipeline — Financial Services
GitHub → Jenkins → SonarQube → Nexus → OCP → Approval Gates
Know This Pipeline
CI/CD Pipeline — Payment Service Release
📝
Code Commit
GitHubFeature BranchPR Review
🔨
Build & Unit Test
JenkinsMaven/GradleJUnit 5Mockito
🔍
⛔ Quality Gate — Fails Build if Not Met
SonarQube80% coverage0 Critical bugsOWASP check
🧪
Integration Tests
TestcontainersWireMockContract Tests (Pact)
📦
Artifact Build & Publish
DockerNexus RegistrySBOM (supply chain)Trivy scan
🚀
Deploy to DEV → UAT
Helm ChartArgoCD (GitOps)Smoke Tests
⛔ CAB Approval Gate (Financial Services)
Change Advisory BoardRisk sign-offRollback plan
Deploy to PRODUCTION
Blue-Green / CanaryAutomated smoke testsAuto-rollback on errors
🎤 Interview Question

A deployment broke production payments at 2pm on a Friday. Walk me through your response.

✅ Incident Commander Answer
  • T+0 — Declare P1: Alert on-call team via PagerDuty. Open incident bridge. Assign roles: Incident Commander, Tech Lead, Comms Lead.
  • T+2 min — Rollback first, debug later: Immediately roll back deployment. In K8s: kubectl rollout undo deployment/payment-service. Blue-green: flip load balancer back to blue. Restoration > investigation.
  • T+5 min — Verify recovery: Check payment success rate metric in Grafana. Confirm error rate returning to baseline.
  • T+10 min — Stakeholder comms: Status page update. Email to impacted teams. Estimated resolution time if still down.
  • T+1 hour — Root cause analysis: Review deployment diff. Check logs for exception. Reproduce in UAT.
  • T+24 hours — Blameless postmortem: Timeline, root cause, contributing factors, action items. Publish to engineering. No blame — systems improvement focus.
💡 Lead Differentiator

Saying "rollback first, debug later" immediately signals experience. Junior engineers want to fix the bug in production. Leads know: restoration is always the priority, understanding is secondary.

Chapter Seven · Cloud & DevOps
OBSERVABILITY
The three pillars: Metrics, Logs, Traces. A system you can't observe is a system you can't trust with other people's money.
📡
Three Pillars + SLI/SLO/SLA
Metrics · Logs · Traces · Alerting · Error budgets
Know for Architecture
PillarWhat It AnswersToolsPayment Example
MetricsIs the system healthy right now?Prometheus, Grafana, Micrometer, DatadogPayment TPS, success rate, P99 latency, Kafka lag, DB pool utilisation
LogsWhat happened for a specific request?ELK Stack, Splunk, Loki, FluentdStructured JSON logs with traceId, paymentId, accountId, correlationId in MDC
TracesWhere did latency come from?Zipkin, Jaeger, Datadog APM, OpenTelemetryTrace a single payment across API Gateway → Payment Service → DB → Kafka → Settlement
SLI / SLO / SLA — Definitions You Must Know
TermDefinitionPayment Example
SLI (Service Level Indicator)The actual metric being measuredPayment API success rate = successful_requests / total_requests
SLO (Service Level Objective)The target you set internallyPayment success rate ≥ 99.95% over rolling 30 days
SLA (Service Level Agreement)The contractual commitment to customers99.9% payment availability — breach triggers financial penalty
Error BudgetAllowed downtime = 100% − SLO99.95% SLO = 0.05% error budget = 21.9 min/month downtime allowed
💡 Lead Insight — Error Budgets

When the error budget runs out, you stop new feature releases and focus only on reliability improvements. This creates a healthy tension between product velocity and operational stability. Mention this — it signals SRE maturity that stands out at Wells Fargo.

PaymentMetrics.java — Micrometer
@Component
public class PaymentMetrics {

    private final MeterRegistry registry;
    private final Counter successCounter;
    private final Counter failureCounter;
    private final Timer processingTimer;

    public PaymentMetrics(MeterRegistry registry) {
        this.registry = registry;
        this.successCounter = Counter.builder("payments.processed")
            .tag("status", "success")
            .description("Successful payment count")
            .register(registry);
        this.processingTimer = Timer.builder("payments.processing.duration")
            .publishPercentiles(0.5, 0.95, 0.99)  // P50, P95, P99
            .register(registry);
    }

    public void recordSuccess(Duration duration) {
        successCounter.increment();
        processingTimer.record(duration);
    }
}

// Structured logging — always include correlation fields
MDC.put("traceId", traceId);
MDC.put("paymentId", paymentId);
MDC.put("accountId", accountId);
log.info("Payment processed", Map.of("amount", amount, "status", status));
// → Queryable in Splunk/ELK: traceId=xyz AND paymentId=abc
Chapter Eight · Leadership
STAR STORIES
The leadership round decides selection. Every answer needs a story. Generic answers fail. Real, specific, quantified stories win. Prepare five stories minimum.
5 Pre-Built STAR Stories — Adapt to Your Experience
Production Incident · Architecture Disagreement · Mentoring · Delivery Under Pressure · Driving Standards
Memorise These
🔥 Story 1 — Production Incident Leadership
Situation
Our payment processing service had a P1 incident — 35% of transaction requests were timing out during peak trading hours (9am Monday). Error rate spiked from 0.02% to 18% in under 5 minutes. I was the senior engineer on-call.
Task
Restore service within our 15-minute RTO SLA, communicate status to 3 business stakeholders, and identify root cause without pulling resources from the ongoing investigation.
Action
Opened bridge immediately and assigned roles. I took the technical lead. Checked Grafana — DB connection pool at 100% saturation. Examined recent deployments — a new query in the overnight release had no index and was doing full table scans on a 50M-row payments table. Rolling back took 4 minutes. Simultaneously had the DBA add a non-blocking index (CREATE INDEX … ONLINE) to fix the root cause. Communicated status updates every 3 minutes to stakeholders.
Result
Service restored in 11 minutes — inside SLA. Zero payment data lost. Postmortem led to implementing mandatory query execution plan review in the CI pipeline via SonarQube custom rule. Zero similar incidents in the following 18 months.
🎯 What This Story Shows
  • Technical depth: you knew where to look (DB pool → execution plan → index)
  • Leadership: structured response, role assignment, stakeholder comms
  • Systems thinking: systemic fix (CI gate) not just reactive fix (rollback)
🏗️ Story 2 — Architecture Disagreement
Situation
The team was designing a new payment notification system. The tech lead proposed using a REST polling approach — clients poll every 5 seconds for payment status updates. I believed this was the wrong approach for our scale (10M active users) and would create unnecessary load on our payment query service.
Task
Advocate for a better approach while maintaining a collaborative relationship and not derailing the delivery timeline.
Action
I first validated the tech lead's reasoning — the polling approach was simpler and they'd used it successfully in the previous system at 1/10th the scale. Then I presented data: at 10M users polling every 5s = 2M RPS sustained load just for status checks, with 99% returning "no change". I built a 2-hour proof-of-concept using Server-Sent Events (SSE) through our existing API Gateway and showed it handled 50,000 concurrent connections with a fraction of the server load. Proposed a 1-week spike to validate at scale before deciding.
Result
Team adopted SSE. The system handled peak load at 40% of the projected infrastructure cost of the polling approach. The tech lead later cited the data-first approach as the right way to challenge architectural decisions in our team retrospective.
🎯 Key Phrases to Use

"I first validated their reasoning before presenting the alternative" — shows emotional intelligence. "I backed the pushback with data and a working PoC" — shows engineering rigour. "Propose a time-boxed spike" — shows pragmatism.

🌱 Story 3 — Mentoring a Junior Engineer
Situation
A junior engineer on my team was consistently producing code that passed code review but caused production bugs — the code was syntactically correct but lacked understanding of concurrency and transaction boundaries in our payment system.
Task
Improve the engineer's output quality without damaging their confidence or creating dependency on my review.
Action
Set up weekly 1:1 sessions focused specifically on the patterns causing issues — I called them "Payment System Internals" sessions. Used their own code as examples (anonymised in early sessions). Built a personal "anti-pattern guide" document with them — every time they encountered a new concurrency or transaction issue, they documented it themselves. Assigned them ownership of writing the team's transaction management guide — forcing them to deeply understand the topic.
Result
Within 3 months, zero production issues attributed to their code. Within 6 months, they were reviewing other juniors' PRs for transaction issues. The anti-pattern guide became part of team onboarding for all new starters.
🚀 Story 4 — Delivery Under Pressure
Situation
Three weeks before a regulatory deadline (PSD2 Strong Customer Authentication), our implementation was 40% complete. Two engineers had left the project. The deadline was immovable — non-compliance risked a regulatory fine of £10,000/day.
Task
Deliver compliant authentication flow within 3 weeks with reduced team headcount, without compromising payment security.
Action
Immediately scoped the minimum viable compliance deliverable with the compliance team. Cut scope aggressively — deferred enhanced UX to post-deadline. Moved one engineer from another squad (with manager agreement) for 2 weeks. Implemented pair programming full-time on the critical auth flow. Set up daily 15-minute standups focused purely on blockers. Used feature flags to deploy incrementally without disrupting existing payment flows.
Result
Delivered compliant implementation 2 days before deadline, fully tested. Zero compliance issues. Enhanced UX shipped 3 weeks later as planned. Team retrospective identified the need for regulatory deadline tracking in our quarterly planning process — implemented immediately.
📏 Story 5 — Driving Engineering Standards
Situation
Our team of 8 engineers had no consistent patterns for exception handling, logging, or transaction management. Every payment service microservice handled errors differently — making incident debugging a 2-hour process of reading unfamiliar code under pressure.
Task
Establish shared standards without creating bureaucracy or slowing delivery velocity.
Action
Facilitated a team session to identify the 5 patterns causing the most production pain. Team voted — no top-down mandate. For each pattern, created a concrete example in a shared GitHub repo with explanation of why. Added SonarQube custom rules for automated enforcement. Presented at monthly engineering guild — other teams adopted two of the patterns. Ran a "standards sprint" where we retrofitted existing services — engineers owned their own service migration.
Result
Mean time to diagnose production incidents dropped from 47 minutes to 11 minutes over the following quarter. New engineer onboarding time reduced by a week. One pattern (structured logging with MDC fields) adopted across the entire payments platform — 12 teams.
Chapter Nine · Leadership
BEHAVIORAL QUESTIONS
All 25 high-probability behavioral questions with answer frameworks. For each, identify which STAR story from Chapter 8 fits — or adapt one of your own.
💬
25 Behavioral Questions + Answer Frameworks
Conflict · Ownership · Mentoring · Delivery · Architecture · Stakeholders
Prepare All 25
Ownership & Delivery
Ownership
Tell me about a time you took ownership of a problem that wasn't technically your responsibility.
Answer must show: you noticed the problem, stepped in without being asked, drove resolution to completion. Avoid: "I helped out" — say "I took ownership".
Delivery
Describe a time when you had to deliver under extremely tight deadlines. What trade-offs did you make?
Shows: scope negotiation, prioritisation, stakeholder management. Key phrase: "I worked with the business to define the minimum viable deliverable".
Failure
Tell me about a significant mistake you made. How did you handle it?
Shows: accountability without self-pity. Structure: what you did wrong → immediate action → what you changed systemically. Never blame others or the process.
Ambiguity
Describe a time you had to make an important technical decision with incomplete information.
Shows: how you gather enough information to act, how you manage risk, how you revisit the decision when more data arrives. Mention time-boxing and reversibility of the decision.
Leadership & Influence
Influence Without Authority
How have you influenced a technical direction without having direct authority over the decision?
Shows: data-driven advocacy, building coalitions, PoC approach. Never: "I convinced them I was right." Say: "I presented data and let the team decide".
Mentoring
How do you develop junior engineers? Give a specific example.
Shows: structured approach, ownership transfer, measuring improvement. Mention: code reviews as teaching, pair programming, giving them increasing responsibility with guardrails.
Conflict
Describe a conflict you had with a team member about a technical approach. How was it resolved?
Shows: you understand their position before presenting yours. Use "disagree and commit" framework. Outcome: team moved forward, relationship intact. Never say the other person was wrong.
Standards
How have you raised the quality bar for an entire team, not just your own work?
Shows: community building, not gatekeeping. Examples: ADRs (Architecture Decision Records), coding standards with team input, automated quality gates, guild presentations.
Technical Leadership
Architecture Decision
Tell me about the most important architecture decision you've made. What were the trade-offs?
Shows: your ability to reason about tradeoffs, not just pick a trendy technology. Structure: the problem → options considered → why you chose this → what you gave up → how it played out. Include numbers.
Technical Debt
How do you balance technical debt against feature delivery?
Shows: pragmatism. Answer framework: "I treat tech debt as risk — I quantify the cost of leaving it. If a component causes 40% of production incidents, reducing that debt has a higher ROI than feature X." Mention allocating 20% capacity to debt reduction.
Cross-team
Describe a time you worked across multiple teams to deliver a shared goal.
Shows: communication, dependency management, shared ownership. Key: how you handled when another team's priorities didn't align with yours. Mention: RACI, shared Slack channel, cross-team standups, joint retros.
Pushback
Tell me about a time when you pushed back on a business requirement.
Shows: you understand business context, not just technical constraints. "I pushed back because the timeline would have required cutting security testing — I proposed an alternative scope, not an extended timeline." Never: "The business was wrong." Always: offer an alternative.
Wells Fargo-Specific Questions
Risk & Compliance
How do you balance innovation with the regulatory constraints of a financial institution?
Shows: you understand the context. Answer: "Compliance is a non-negotiable foundation, not an obstacle. I involve compliance teams early — in the design phase, not at the end. I use feature flags to deploy compliant versions incrementally."
GenAI
How would you use GenAI tools in your engineering workflow? What risks would you manage?
Shows: pragmatic adoption, not hype. Mention: GitHub Copilot for boilerplate generation (always review output), LLMs for test case ideation, RAG for internal documentation Q&A. Risks: hallucinated code in financial logic, data leakage in prompts, over-reliance replacing understanding.
Legacy Modernisation
You've joined a team running a 15-year-old payment system. How do you approach modernisation?
Shows: Strangler Fig pattern knowledge, risk management, incremental approach. Answer: "I'd never do a big-bang rewrite. Start with observability — you can't improve what you can't measure. Then strangle the monolith one capability at a time, starting with the highest-risk/most-changed components."
Final Round
RAPID-FIRE Q-BANK
All high-probability Week 4 questions. Practise answering each one in 2 minutes or under — interviewers notice when answers drag.
🎤
20 Final-Round Questions with Answer Skeletons
System Design · K8s · CI/CD · Leadership · Architecture
Practice Aloud
System Design
Q1

Design a notification system for 50 million users. Push + email + SMS.

Answer Skeleton
  • API: POST /notifications → validate → store in Cassandra (write-heavy, no joins) → publish to Kafka topic per channel
  • Workers: separate consumer groups per channel (push/email/SMS) — independently scalable
  • Push: APNs/FCM via Firebase. Email: SES with retry queue. SMS: Twilio with fallback provider
  • Fan-out problem: one event to 50M users? Pre-compute recipient lists. Use Kafka partitioned by userId. Rate-limit outbound per provider
  • Deduplication: Redis idempotency key per notification+userId, TTL 24h
Q2

Design a URL shortener. What data model and what read/write ratio?

Answer Skeleton
  • Write: POST /shorten → generate 6-char base62 ID (or hash) → store in {short_id, long_url, created_at, expires_at} in Cassandra/DynamoDB
  • Read: GET /{short_id} → Redis cache (L1, TTL 1h) → DB. 301 Permanent vs 302 Temporary redirect. Read:write = 100:1
  • Scale: 100B URLs = ~600GB storage. Redis cache top 20% hot URLs. CDN for edge redirects
  • Collision: on hash collision, append counter or retry with different hash
Q3

How would you design a rate limiter for the Wells Fargo API Gateway?

Answer Skeleton
  • Per-user, per-IP, per-endpoint: different limits. JWT-authenticated users get higher limits
  • Algorithm: Token bucket in Redis. INCRBY tokens used, EXPIRE window. Sliding window with sorted set for accuracy
  • Distributed: Redis Cluster with Lua script for atomic check-and-decrement
  • Response: 429 Too Many Requests + Retry-After header + X-RateLimit-Remaining header
  • Bypass: internal service mesh traffic exempt. Use mTLS to identify internal callers
Kubernetes & Cloud
Q4

What is the difference between a liveness probe and readiness probe?

Answer

Liveness: "Is this pod alive?" If fails → K8s restarts the pod. Use for deadlock detection — when the app is running but stuck. Endpoint: /actuator/health/liveness.
Readiness: "Is this pod ready to receive traffic?" If fails → K8s removes pod from Service endpoints (no new traffic). Use for slow startup, DB connections not yet established. Pod stays running but not in rotation.
Key insight: During rolling deployment, readiness gate ensures old pods keep serving until new pod is fully ready. Critical for zero-downtime payment deployments.

Q5

What is a PodDisruptionBudget? Why does it matter for payments?

Answer

PDB ensures a minimum number of pods remain available during voluntary disruptions (node drain, cluster upgrades). Example: minAvailable: 2 — K8s won't drain a node if it would leave fewer than 2 payment-service pods running. Without PDB, a cluster upgrade could terminate all pods of a service simultaneously → payment outage. Essential for any production financial service on K8s.

Q6

Explain GitOps. How does ArgoCD work?

Answer

GitOps: Git is the single source of truth for infrastructure and deployment state. Changes are made via PR → ArgoCD detects drift between Git state and cluster state → syncs automatically or on approval. Benefits: full audit trail (every deployment is a git commit), easy rollback (revert the commit), no manual kubectl in production. ArgoCD continuously reconciles desired state (Git) with actual state (K8s cluster).

Leadership
Q7

How do you handle a high-performing engineer who is consistently rude to teammates?

Answer Framework
  • Private conversation — specific behaviour, specific impact. Not "you're rude", but "in last Tuesday's review, you interrupted Sarah three times — here's the impact on team morale"
  • Separate the person from the behaviour. Acknowledge their technical contributions
  • Set clear expectation: technical excellence is table stakes, but so is psychological safety
  • Follow up in writing. Document the conversation
  • If behaviour continues: escalate to management. High performance doesn't exempt anyone from team standards
Q8

How do you prioritise when your team has more work than capacity?

Answer Framework
  • Explicit prioritisation with stakeholders — don't silently deprioritise. Make the trade-off visible
  • Framework: Impact × Urgency ÷ Effort. Not all items are equal
  • Say no to the right things: "We can do A or B this sprint, not both. Which matters more to the business?"
  • Protect time for tech debt — if 40% of incidents come from one system, reducing that debt IS a business priority
Q9

What's your approach to code reviews?

Answer

Code reviews are a teaching tool, not a gatekeeping tool. I distinguish: blocking issues (correctness, security, data risk) vs non-blocking suggestions (style preferences, alternative approaches). I explain the why — not just "this is wrong" but "this pattern causes X problem in our payment context". I aim for reviews within 24 hours — slow reviews kill momentum. I also review my own PRs before requesting others'.

Q10

Where do you see yourself in 3 years? Why Wells Fargo specifically?

Answer Framework

Answer: "In 3 years I want to be solving systems-level problems at scale — not just writing code but setting technical direction for a domain. Wells Fargo specifically: the combination of real-world financial scale, the modernisation journey from legacy to cloud-native, and the opportunity to work on systems that move real money for real people is genuinely rare. Most companies can't offer this combination of scale and impact."