Design a basic banking system
CoinbaseSoftware Engineer · OnsiteLast updated
This question evaluates understanding of transactional system design, data modeling for financial domains, API design, idempotency, concurrency control, immutable audit trails, and security considerations in an online banking context.
Design and implement a basic online banking system that supports creating accounts, deposits, withdrawals, and transfers between users. Define the data model and APIs, ensure atomicity and idempotency of money movements, prevent double spending under concurrency, maintain an immutable ledger/audit trail, and address security concerns (authentication, authorization, input validation). Discuss consistency guarantees and error handling.
Solution walkthrough is for members
Get the full walkthrough with reference code and complexity analysis, plus Kitty Coach at 300 messages a day. Hints, the code runner and community answers stay free.