← Coinbase Interview Insights

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

SeniorPrefer not to say
May 2026

Summary

Coinbase system design round, one big question that sprawled across basically every hard distributed systems topic you can think of. The scope was genuinely intimidating and I'm not sure I covered even half of it well.

Questions Asked (1)

Q1

Design a crypto trading platform that routes client orders to third-party exchanges via a synchronous HTTP API, where fills and cancellations actually arrive asynchronously. Cover the overall architecture, order state machine, failure handling, traffic spikes, data consistency, optional multi-exchange routing, and client-facing APIs with observability.

System DesignAPI & IntegrationsTechnical Trade-offs
Author's notes

This question ate me alive a little.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints, then propose a high-level architecture that decouples synchronous client interactions from asynchronous exchange events using an event-driven design. Walk through the order lifecycle, failure scenarios, scalability, and consistency mechanisms, and finish with API design and observability considerations.

Pro tip: Emphasize idempotency and reconciliation: use client-provided order IDs to deduplicate requests and implement a periodic reconciliation job to detect and resolve discrepancies between internal state and exchange state.

1. Clarify Requirements and Constraints

Ask about expected throughput, latency SLAs, supported exchanges, order types, and consistency requirements. Confirm that the synchronous API is only for order submission, while fills/cancellations are asynchronous.

2. Design High-Level Architecture

Propose an event-driven architecture with an API gateway, order service, message queue (e.g., Kafka), and exchange adapters. Use a database for order state and a cache for fast lookups.

3. Define Order State Machine and Failure Handling

Outline states: PENDING_NEW, NEW, PARTIALLY_FILLED, FILLED, PENDING_CANCEL, CANCELED, REJECTED, EXPIRED. Describe transitions and how to handle failures like timeouts, partial fills, and exchange errors with retries and dead-letter queues.

4. Address Scalability, Consistency, and Multi-Exchange Routing

Discuss partitioning by client or symbol, autoscaling, and backpressure. For consistency, use idempotent operations, optimistic locking, and eventual consistency with reconciliation. For multi-exchange, implement a routing layer with smart order routing logic.

5. Design Client APIs and Observability

Define REST endpoints for order submission, cancellation, and status queries, plus WebSocket for real-time updates. Include metrics, logging, tracing, and alerting for monitoring system health and order flow.

Key Points to Mention

  • Idempotency keys for order submission to prevent duplicate orders
  • Event sourcing or CQRS for order state management
  • Message queue (e.g., Kafka) for decoupling and handling traffic spikes
  • Reconciliation process to sync internal state with exchange state
  • Circuit breakers and retries with exponential backoff for exchange API calls
  • Observability: metrics (latency, error rates), distributed tracing, and logging

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