This thing is basically five questions stitched into one.
Start by clarifying requirements and scope, then design a high-level architecture that separates data ingestion, ranking/personalization, and serving layers. Walk through each component (data model, caching, API, client considerations, degradation) while explicitly calling out trade-offs and failure modes. Emphasize how the design meets Coinbase's needs for low latency, high availability, and regulatory compliance.
Pro tip: Proactively discuss how you would handle partial failures and data staleness—interviewers love candidates who design for resilience from the start, not as an afterthought. Also, tie your choices back to Coinbase's mission of being the most trusted crypto platform.
Ask questions to understand functional and non-functional requirements: what assets to show, personalization depth, latency targets, consistency needs, and mobile vs web constraints. Define success metrics like engagement and freshness.
Propose schemas for assets, prices, user profiles, and interactions. Describe how to ingest real-time price data from exchanges and batch user events, ensuring scalability and fault tolerance.
Outline a ranking pipeline that combines real-time signals (e.g., price changes) with batch-computed user preferences. Discuss trade-offs between precomputed and on-the-fly ranking, and how to handle cold-start users.
Specify API endpoints (e.g., GET /explore) with response schema, pagination, and error handling. Design a multi-layer caching strategy (CDN, Redis, in-memory) with appropriate TTLs and invalidation for price data.
Explain how mobile and web clients differ in rendering, data fetching, and offline support. Describe graceful degradation: fallback to cached or static content, circuit breakers, and load shedding under high traffic.
AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.