← Google Interview Insights

Google·Product Manager·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
May 2026

Summary

Google PM system design round, one big question that sprawled into basically every engineering concept I'd half-studied. Felt like I was building a plane while it was already in the air.

Questions Asked (1)

Q1

Design an internal tool that returns historical currency exchange rates and can handle 10,000 requests per second. Walk through your API design, data model, storage choices, caching strategy, consistency requirements, scalability plan, and how you'd monitor it.

System DesignAPI & IntegrationsData Modeling
Author's notes

This question is deceptively wide.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements: historical rates imply read-heavy, immutable data, so focus on caching and read scalability. Then walk through each component (API, data model, storage, caching, consistency, scalability, monitoring) with a bias toward simplicity and cost-efficiency, justifying choices based on the 10K RPS target.

Pro tip: Emphasize that historical exchange rates are immutable, so you can aggressively cache and use eventual consistency, which simplifies scaling. Also, mention that you'd start with a simple solution and iterate based on monitoring data, rather than over-engineering from day one.

1. Clarify Requirements and Assumptions

Ask questions to understand the scope: which currencies, date range, update frequency, latency SLA, and consistency needs. State assumptions like rates are updated daily and historical data is immutable.

2. Design API and Data Model

Define RESTful endpoints (e.g., GET /rates?from=USD&to=EUR&date=2023-01-01) and a simple data model with fields like base currency, target currency, date, and rate. Consider bulk endpoints for multiple dates/currencies.

3. Choose Storage and Caching Strategy

Select a storage solution optimized for read-heavy, immutable data (e.g., a key-value store or a relational database with read replicas). Implement multi-layer caching (CDN, in-memory cache like Redis) with long TTLs since data doesn't change.

4. Address Consistency, Scalability, and Monitoring

Since historical data is immutable, eventual consistency is acceptable. Scale horizontally with stateless services, load balancers, and auto-scaling. Monitor key metrics: request rate, latency, cache hit ratio, error rates, and set up alerts.

5. Summarize and Iterate

Recap the design, highlighting trade-offs (e.g., cost vs. performance). Suggest starting with a simple architecture and iterating based on monitoring data and user feedback.

Key Points to Mention

  • Immutability of historical data enables aggressive caching and eventual consistency.
  • API design should be RESTful, with clear endpoints and support for bulk queries.
  • Storage choice: read-optimized database (e.g., Bigtable, DynamoDB) or a simple relational DB with read replicas.
  • Caching layers: CDN for edge caching, Redis/Memcached for application-level caching.
  • Scalability: stateless services, horizontal scaling, load balancing, and auto-scaling groups.
  • Monitoring: track latency, error rates, cache hit ratio, and throughput; use tools like Prometheus/Grafana.

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