Object-oriented design interview questionMedium

Design an ATM Transaction Engine

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 (card reader, 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

Hidden because they name the technique, which a real interviewer would not tell you.

Show core concepts
Object-Oriented DesignState PatternHardware Abstraction

Continue preparing

Build a complete software engineer mock interview plan

Related Object-Oriented Design

Design Blackjack and a Deck of Cards

Design a reusable deck of cards and a single-round Blackjack game: cards, suits and ranks, deck shuffle/deal, hand scoring with flexible ace values, player and dealer turns, and terminal outcomes (blackjack, bust, win/lose/push).

Related Object-Oriented Design

Design a Power Plant Electricity Allocator

Design a class-level system modeling a power plant that distributes electricity to multiple neighbourhoods, each with a stated demand, subject to the plant's total capacity.

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, category reservations, vehicle assignment at pickup, and return inspection with extra charges — without overbooking a category or renting one vehicle for overlapping periods.

Related Object-Oriented Design

Design a Group Expense-Splitting Ledger

Design a system where users form groups, log shared expenses split equally, by exact amounts, or by percentage, maintain pairwise balances, and settle debts.