← 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 one big question about elevator systems, which sounds deceptively simple but spirals fast once you start pulling on the scheduling and fault tolerance threads.

Questions Asked (1)

Q1

Design the software for a multi-elevator control system in a high-rise building. Walk through your class design, how you'd assign cars to requests, how the system handles peak traffic and fairness, what happens when a car fails, and how you'd test and simulate the whole thing.

System DesignTechnical Trade-offsAlgorithms & Data Structures
Author's notes

I started with the obvious classes (elevator car, request queue, controller) and felt okay for the first few minutes.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements (building size, traffic patterns, failure modes) and defining core entities like Elevator, Request, and Dispatcher. Then walk through the design in layers: class model, scheduling algorithm, peak handling, fault tolerance, and testing/simulation. Emphasize trade-offs and justify decisions with metrics like average wait time and throughput.

Pro tip: Treat the system as a real-time resource allocation problem: discuss how you'd measure and optimize key metrics (wait time, ride time, energy) and how you'd handle edge cases like multiple simultaneous requests and car failures. Showing awareness of operational constraints (e.g., door open time, acceleration) sets you apart.

1. Clarify Requirements and Scope

Ask about building height, number of elevators, traffic patterns (morning up-peak, evening down-peak, inter-floor), and failure handling expectations. Define success metrics like average wait time, max wait time, and throughput.

2. Design Core Classes and Interfaces

Outline classes: Elevator (state, direction, current floor, door status), Request (source floor, destination, timestamp, priority), Dispatcher (assigns requests), and Building (floors, elevators). Consider interfaces for scheduling strategies and failure detection.

3. Develop Scheduling Algorithm

Explain how requests are assigned: e.g., collective control, destination dispatch, or a scoring function based on estimated time of arrival. Discuss handling of multiple requests, directionality, and fairness (e.g., aging, round-robin).

4. Address Peak Traffic and Fault Tolerance

Describe strategies for peak traffic: zoning, express elevators, dynamic reassignment. For failures, outline detection (heartbeat), reassignment of pending requests, and graceful degradation (e.g., reduced capacity).

5. Testing and Simulation

Propose a simulation framework with configurable traffic patterns and metrics. Discuss unit tests for individual components, integration tests for scheduling, and stress tests for failure scenarios. Mention using discrete-event simulation.

Key Points to Mention

  • Trade-offs between different scheduling algorithms (e.g., FCFS, SSTF, LOOK, destination dispatch) and their impact on wait time and fairness.
  • Handling of peak traffic: up-peak and down-peak patterns, zoning, and dynamic car assignment.
  • Fault tolerance: detecting car failures, reassigning requests, and ensuring system continues operating with reduced capacity.
  • Fairness: preventing starvation of requests, using aging or priority adjustments.
  • Testing and simulation: discrete-event simulation, metrics collection, and scenario-based testing (e.g., rush hour, random failures).
  • Scalability: how the design handles increasing number of floors and elevators, and potential bottlenecks.

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