← Meta Interview Insights

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

Senior
Jul 2026

Summary

Meta system design round for a software engineer role, focused entirely on building an online chess platform. Pretty scoped question but there's a lot of surface area once you start pulling threads on real-time state and reconnection logic.

Questions Asked (1)

Q1

Design an online chess platform that supports ranked and unranked matchmaking, real-time low-latency gameplay, server-enforced rules and timers, and persistent game history with reconnection support.

System DesignTechnical Trade-offsData Modeling
Author's notes

I started with matchmaking and spent probably too long on the ELO ranking queue before realizing the real complexity was in the real-time move sync.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying functional and non-functional requirements, then design the high-level architecture focusing on real-time communication and matchmaking. Dive into critical components like game state management, server-enforced rules, and persistence, discussing trade-offs and scalability.

Pro tip: Emphasize the importance of server authority for game rules and timers to prevent cheating, and discuss how to handle reconnection seamlessly using game state snapshots and event sourcing.

1. Requirements Clarification

Ask about scale (concurrent users, games), latency requirements, matchmaking criteria (rating, region), and persistence needs (history duration, replay).

2. High-Level Architecture

Outline components: API gateway, matchmaking service, game servers, database, and real-time communication layer (WebSockets). Consider using a pub/sub system for scalability.

3. Matchmaking Design

Design ranked matchmaking using Elo/Glicko ratings, with a queue system that pairs players based on rating and latency. For unranked, use a simpler queue.

4. Real-Time Gameplay & Server Authority

Use WebSockets for low-latency communication. Game server validates moves, enforces rules, and manages timers. Consider state synchronization and conflict resolution.

5. Persistence & Reconnection

Store game history in a database (e.g., Cassandra for scalability). For reconnection, maintain game state in memory and allow clients to rejoin via session tokens, replaying missed moves.

Key Points to Mention

  • Use WebSockets for real-time communication and consider regional game servers to reduce latency.
  • Implement server-authoritative game logic to prevent cheating and ensure fair play.
  • Design matchmaking with a rating system (e.g., Elo) and use a queue with time-based expansion of rating range.
  • Persist game state and moves using event sourcing or snapshots for history and reconnection.
  • Handle reconnection by storing active game state in memory and allowing clients to resync via a session ID.
  • Discuss scalability: sharding game servers, using a distributed cache (Redis) for matchmaking queues, and load balancing.

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