Implement a Simple Banking Ledger
Company: Coinbase
Role: Software Engineer
Category: Coding & Algorithms
Difficulty: Medium
Interview Round: Onsite
Design and implement a banking ledger for n accounts labeled 1..n with initial balances. Provide an API: deposit(id, amount) -> bool, withdraw(id, amount) -> bool, transfer(fromId, toId, amount) -> bool. Rules: return false for invalid account IDs or insufficient funds; otherwise apply updates and return true. Constraints: up to 200,000 operations, amounts up to 10^12, target O(
1) per operation and O(n) space; assume single-threaded execution. Sub-questions: write unit tests for edge cases (invalid IDs, zero/negative amounts, overflow), extend to support atomic batches of operations with rollback on partial failure, and analyze time/space complexity and common pitfalls (e.g., integer overflow).
Quick Answer: This question evaluates competence in designing an efficient, stateful ledger API and associated data structures, emphasizing correctness under invalid inputs, performance at scale, integer overflow handling, unit testing for edge cases, and transactional (atomic batch) behavior.