Design a global restaurant menu update system
Company: Google
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Onsite
Design a menu update system for a global chain of restaurants.
Context:
- The chain operates in many countries.
- Each restaurant may have multiple kinds of menu-display devices (e.g., digital menu boards, kiosks, POS screens, tablets), potentially with different capabilities.
- Menus have a shared global portion and localized country/region/store-specific portions.
- Menu changes are centrally controlled by headquarters.
- Menus can change daily, and breakfast/lunch/dinner menus may differ from the previous day.
Requirements:
1. Distribute the correct menu to each restaurant/device for the correct time window (e.g., breakfast/lunch/dinner).
2. Support localization/overrides while reusing global menu components.
3. Scale to a large number of restaurants/devices worldwide (high scalability, multi-region).
4. Handle unreliable connectivity: if a restaurant/device goes offline, it should keep functioning and eventually catch up.
5. Consider operational corner cases (partial rollout, clock skew, failures).
Describe:
- Core APIs and data model.
- How menu versions are published, scheduled, and delivered.
- How devices sync, cache, and render menus.
- How you ensure correctness, reliability, and observability at global scale.
Quick Answer: This question evaluates competence in large-scale system design, including distributed systems, data modeling, API design, time-windowed content scheduling, localization/overrides, offline synchronization, and observability for globally distributed devices.