Design a scalable banking system
Company: Capital One
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Onsite
Design an online banking system (similar in scope to a credit‑card application system) that supports:
1) secure user login;
2) user account opening;
3) ATM transactions (cash deposit and withdrawal);
4) intra‑bank transfers;
5) inter‑bank transfers;
6) querying transaction statistics within a specified time window. Describe the system architecture, core services and data stores (e.g., user/account, ledger, ATM gateway, transfer orchestration), data schema for accounts/balances/transactions/audit trails, API design and idempotency, transaction processing and concurrency control to prevent double spending, consistency and recovery guarantees, external network integrations for inter‑bank transfers and ATM networks, and your approach to efficient time‑window analytics (indexes, pre‑aggregations, streaming, or OLAP). Include scalability and availability strategies, security controls (authentication, authorization, encryption), failure handling and retries, and provide a monitoring and on‑call notification plan (key SLIs/SLOs, alerting rules, dashboards, runbooks).
Quick Answer: This question evaluates system design skills focused on distributed systems architecture, transactional integrity, strong consistency models, security and authentication, external payment and ATM integrations, data modeling, API design, concurrency control, and operational monitoring for financial platforms.