← Bank of America Interview Insights

Bank of America·Software Engineer·Technical Phone Screen·Intermediate

IntermediatePrefer not to say
Jul 2026

Summary

Got asked a concurrency/system design question during a recent interview and my answer didn't land the way I expected. Still not totally sure what they were looking for.

Questions Asked (1)

Q1

How would you handle multiple users trying to book the same seat at the same time?

System DesignTechnical Trade-offs
Author's notes

Said Redis distributed lock and DB-level constraints.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements and constraints, then propose a solution that ensures data consistency and handles concurrency, such as using database transactions with locking or optimistic concurrency control. Discuss trade-offs between different approaches and how you would scale the solution.

Pro tip: Mention that in a banking context, correctness and auditability are paramount, so you'd lean towards pessimistic locking or serializable isolation to prevent double-booking, even at some cost to throughput.

1. Clarify Requirements

Ask about expected load, consistency requirements, and whether the system is distributed. This shows you don't jump to solutions without understanding the problem.

2. Identify Core Challenge

Explain that the main issue is a race condition where multiple users read the same seat as available and then try to book it, leading to double-booking.

3. Propose Concurrency Control

Suggest using database transactions with appropriate isolation levels (e.g., serializable) or locking mechanisms (pessimistic or optimistic) to ensure only one booking succeeds.

4. Discuss Trade-offs

Compare approaches: pessimistic locking ensures consistency but may reduce concurrency; optimistic locking improves throughput but requires retry logic. Choose based on business needs.

5. Address Scalability and Reliability

Mention how to scale (e.g., sharding by event or seat) and handle failures (e.g., idempotent operations, distributed locks if needed).

Key Points to Mention

  • Race conditions and the need for atomic operations
  • Database transactions and isolation levels (e.g., serializable)
  • Pessimistic vs. optimistic locking and their trade-offs
  • Idempotency and retry mechanisms
  • Distributed locking (e.g., using Redis or ZooKeeper) for distributed systems
  • Banking context: emphasis on correctness, auditability, and compliance

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.