← Meta Interview Insights

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

Senior
Jun 2026

Summary

Meta EM interview, system design round. Just one question but it had a lot of surface area and I don't think I covered it as well as I should have.

Questions Asked (1)

Q1

Design Facebook Messenger from scratch.

System DesignTechnical Trade-offsData Modeling
Author's notes

I went straight to the data model and storage layer, which in hindsight was probably the wrong entry point.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying functional and non-functional requirements, then estimate scale to inform high-level design. Focus on core components like real-time messaging, storage, and delivery guarantees, and discuss trade-offs for scalability and reliability.

Pro tip: Emphasize the importance of message ordering and delivery guarantees, and how you would handle offline users and multi-device synchronization—these are critical for a chat system and often overlooked.

1. Clarify Requirements

Ask questions to understand scope: 1:1 vs group chat, message types (text, media), real-time delivery, offline support, read receipts, etc. Also define non-functional requirements like latency, scalability, and availability.

2. Estimate Scale

Estimate daily active users, messages per user per day, peak load, storage needs, and bandwidth. This will guide decisions on sharding, replication, and caching.

3. High-Level Design

Outline core components: client apps, API gateway, chat servers (WebSocket), message queue, storage (message DB, user DB), and notification service. Explain data flow for sending and receiving messages.

4. Deep Dive into Key Components

Detail message storage (e.g., Cassandra for messages, MySQL for users), message ID generation (e.g., Snowflake), delivery guarantees (at-least-once, deduplication), and real-time communication (WebSockets, long polling).

5. Address Trade-offs and Scalability

Discuss trade-offs: consistency vs availability, SQL vs NoSQL, push vs pull. Explain scaling strategies: sharding by user ID, caching, CDN for media, and handling failures.

Key Points to Mention

  • Message ordering and delivery guarantees (e.g., using sequence numbers, idempotent message IDs)
  • Storage choices: wide-column store (Cassandra) for messages, relational DB for user data
  • Real-time communication: WebSockets for active users, push notifications for offline
  • Multi-device synchronization and message state (sent, delivered, read)
  • Scalability: sharding, replication, and load balancing for chat servers
  • Trade-offs: consistency vs latency, storage cost vs performance

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