← Google Interview Insights

Google·Software Engineer·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
May 2026

Summary

System design round at Google for a software engineering role. The whole session was basically one big elevator system question with a lot of follow-ups baked in. Felt like a reasonable scope for the time, though I definitely underestimated how deep they'd want to go on scheduling strategy.

Questions Asked (1)

Q1

Design an elevator control system for a building with N floors and M elevators. Walk through your core classes, key methods, scheduling strategy, state transitions, and how you'd handle things like concurrent requests, overloaded elevators, and stuck elevators.

System DesignTechnical Trade-offsData Modeling
Author's notes

I started with the obvious classes (Elevator, Request, Controller) and felt okay about that part.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints (e.g., N floors, M elevators, real-time guarantees, fault tolerance). Then present a high-level design with core classes, scheduling algorithm, and state machine, and finally dive into concurrency, overload, and failure handling. Emphasize trade-offs and justify your choices.

Pro tip: Show that you think about edge cases and failure modes early, and propose a simple, robust design that can be extended. Mention that you'd start with a single-threaded event loop or actor model to avoid concurrency bugs, then scale if needed.

1. Clarify Requirements and Constraints

Ask about building size, traffic patterns, real-time constraints, fault tolerance, and whether the system is distributed. Define functional and non-functional requirements.

2. Define Core Classes and Interfaces

Identify main entities: Elevator, Floor, Request, Scheduler, Controller. Define key methods and state transitions for each.

3. Design Scheduling Strategy

Choose a scheduling algorithm (e.g., SCAN, LOOK, or destination dispatch) and explain how it handles multiple requests and optimizes wait time.

4. Handle Concurrency and State Management

Describe how to manage concurrent requests, state transitions, and synchronization. Use locks, queues, or actor model to ensure thread safety.

5. Address Failure Modes and Edge Cases

Explain handling of overloaded elevators, stuck elevators, power failures, and how to recover or degrade gracefully.

Key Points to Mention

  • State machine for elevator (idle, moving up/down, doors open, overloaded, maintenance)
  • Scheduling algorithm (e.g., SCAN/LOOK) and how it minimizes wait time and energy
  • Concurrency control: request queue, locking, or actor-based design to avoid race conditions
  • Overload handling: weight sensors, skip stops, alarm, and load shedding
  • Stuck elevator detection: heartbeat, timeout, and failover to other elevators
  • Trade-offs: centralized vs distributed control, simplicity vs optimality, real-time vs throughput

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