Medium

Design an ATM Transaction Engine Object-Oriented Design Interview

Design an ATM that authenticates a card and PIN, and supports balance inquiry, cash withdrawal with denomination dispensing, and deposits, including session/state handling and hardware abstractions.

1. Problem Statement

Design an ATM: it authenticates a card and PIN, then supports balance inquiry, cash withdrawal with denomination dispensing, and deposits, serving one customer session at a time. Model the card reader, cash dispenser, and bank backend as distinct collaborators.

2. Live Coding Format

Work in the provided coding workspace while explaining your decisions to the live interviewer. Validation may use inline tests, examples, comments, or a verbal walkthrough.

3. Key Focus Areas

  • 1
    Session state machine (idle/card-inserted/authenticated)
  • 2
    BankingService boundary/interface design
  • 3
    Transaction modeling (withdraw/deposit/balance inquiry)
  • 4
    CashDispenser denomination algorithm
  • 5
    Failure-mode handling (card retention, network failure after dispense)

4. What Strong Candidates Should Demonstrate

  • Model a session lifecycle explicitly (State pattern) instead of a flag-heavy conditional mess.
  • Separate hardware/backend collaborators (dispenser, banking service) from orchestration logic.
  • Design a concrete denomination-dispensing strategy after the core object model is coherent, and know its limits.
  • Reason about failure modes: wrong PIN limits, network drop mid-transaction, insufficient denominations.

Want interactive feedback?

Practice this problem in the live coding workspace while the interviewer probes your clarification, implementation, trade-offs, and validation.

Continue to Dashboard

Core Concepts

Object-Oriented DesignState PatternHardware Abstraction

Continue preparing

Build a complete software engineer mock interview plan

Related Object-Oriented Design

Design a Vending Machine Controller

Design a vending machine that manages inventory, accepts money, supports product selection and cancellation, returns change, and enforces a clear transaction state machine.

Related Object-Oriented Design

Design a Car Rental System

Design a car rental domain model covering vehicle categories and vehicles, branches, customers and drivers, a rental date range, rate-based quotes, reservations, pickup rental agreements, and return inspection with extra charges — preventing overlapping rentals of the same vehicle.

Related Object-Oriented Design

Design a Cricket Information Platform

Design a cricket scoring domain model covering teams and players, a match, innings, overs and deliveries, batting and bowling scorecards, extras and wickets, striker rotation, over completion, and match results for a configurable limited-overs format.

Related Object-Oriented Design

Design a Group Expense-Splitting Ledger

Design a system where users form groups, log shared expenses using pluggable splitting strategies (equal/exact/percentage), maintain pairwise balances, and settle debts.