← Coinbase Interview Insights

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

SeniorPrefer not to say
May 2026

Summary

Coinbase system design round, pretty intense scope. They basically asked me to design a full real-time stock data pipeline from ingestion to browser, which is a lot of ground to cover in one session.

Questions Asked (1)

Q1

Design a system that continuously ingests stock data from multiple exchanges, keeps it synchronized, and serves an always-current web page to users. Walk through the full stack: data sources, storage, API, and client updates.

System DesignTechnical Trade-offsAPI & Integrations
Author's notes

This question is massive.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements (scale, latency, consistency) and then walk through the full stack: ingestion from multiple exchanges, storage for time-series data, API layer for serving data, and client update mechanism. Emphasize trade-offs at each layer, such as push vs. pull, consistency vs. availability, and cost vs. performance.

Pro tip: Demonstrate awareness of real-world constraints by discussing how to handle exchange outages, data discrepancies, and the need for idempotent processing to avoid duplicates. Also, mention monitoring and alerting for data quality issues.

1. Clarify Requirements and Scope

Ask questions to understand expected data volume, update frequency, latency requirements, consistency needs, and user scale. This sets the stage for design decisions.

2. Design Data Ingestion Layer

Describe how to connect to multiple exchanges (e.g., WebSocket, REST APIs), normalize data formats, and handle failures with retries and backoff. Consider using a message queue for decoupling.

3. Choose Storage and Processing

Select appropriate storage for time-series data (e.g., TimescaleDB, InfluxDB) and a stream processing engine (e.g., Kafka Streams, Flink) for real-time aggregation and synchronization.

4. Design API and Client Update Mechanism

Decide between push (WebSocket, SSE) and pull (polling) for client updates. Design REST or GraphQL APIs for historical data and WebSocket for real-time updates. Ensure scalability with load balancers and caching.

5. Address Trade-offs and Operational Concerns

Discuss consistency vs. availability, latency vs. cost, and how to monitor data quality, handle exchange outages, and ensure idempotency. Mention deployment and scaling strategies.

Key Points to Mention

  • Use of WebSockets for real-time client updates to minimize latency and server load.
  • Data normalization across exchanges to handle different formats and symbols.
  • Time-series database for efficient storage and querying of stock data.
  • Message queue (e.g., Kafka) for decoupling ingestion from processing and ensuring fault tolerance.
  • Idempotent processing to handle duplicate messages and ensure exactly-once semantics.
  • Caching layer (e.g., Redis) for frequently accessed data to reduce database load.

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