← Google Interview Insights

Google·Software Engineer·Onsite - Coding / Algorithms·Intermediate

Intermediate
Apr 2026

Summary

Google SWE coding round with one big open-ended system design question that even the interviewer seemed unsure about. The lack of structure made it hard to get into any real depth.

Questions Asked (1)

Q1

Design an elevator controller system. You're given the time a user pressed the button, their current floor, and their destination floor. No output is predefined. You need to define the outputs, classes, and interfaces yourself, and discuss strategies like fairness-first vs. path-first scheduling, as well as how you'd coordinate multiple elevators.

System DesignTechnical Trade-offsAdaptability & Ambiguity
Author's notes

The interviewer literally said at some point that the question was too open-ended, which was both reassuring and kind of unsettling.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and defining the system's scope, then design the core classes and interfaces for a single elevator before extending to multiple elevators. Discuss scheduling strategies (fairness-first vs. path-first) and their trade-offs, and explain how you would coordinate multiple elevators to optimize overall efficiency.

Pro tip: Explicitly state your assumptions (e.g., elevator capacity, speed, number of floors) and treat the design as iterative—start simple and refine based on feedback. This shows you can handle ambiguity and collaborate effectively.

1. Clarify Requirements and Scope

Ask questions to understand constraints: number of elevators, floors, capacity, speed, and expected load. Define functional and non-functional requirements (e.g., latency, fairness, energy efficiency).

2. Define Core Classes and Interfaces

Identify key entities: Elevator, Request, Controller, Scheduler. Define their responsibilities and interactions. For a single elevator, outline methods like requestElevator(floor, direction) and step().

3. Design Scheduling Strategies

Compare fairness-first (e.g., FCFS, round-robin) vs. path-first (e.g., SCAN, LOOK) scheduling. Discuss trade-offs: fairness reduces starvation but may increase average wait time; path-first optimizes throughput but can starve distant requests.

4. Coordinate Multiple Elevators

Propose a central controller or distributed approach. Use strategies like zone-based assignment, nearest-elevator, or load balancing. Discuss communication and state sharing between elevators.

5. Discuss Trade-offs and Extensibility

Summarize key decisions and their implications. Mention how to handle edge cases (e.g., emergency, maintenance) and how the design can scale or adapt to changing requirements.

Key Points to Mention

  • Assumptions and constraints (e.g., elevator speed, capacity, number of floors)
  • Class design: Elevator, Request, Controller, Scheduler, and their interfaces
  • Scheduling algorithms: FCFS, SCAN, LOOK, and their fairness vs. efficiency trade-offs
  • Multi-elevator coordination: central vs. distributed control, zone-based or nearest-elevator strategies
  • Performance metrics: average wait time, max wait time, throughput, energy consumption
  • Edge cases: emergency stops, maintenance mode, overload, and failure handling

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