Design a General-Purpose Distributed Cache
Design a general-purpose distributed cache that many application services can use for low-latency key-value access. Define the API, routing, expiration, eviction, consistency, failure, rebalancing, and operational behavior. A globally exact LRU order is not required.
Design a URL Shortening Service (TinyURL)
Design a URL shortening service used by people and applications to turn long URLs into compact links. A created link should reliably redirect visitors to its destination, including when it becomes unexpectedly popular. The service must support link creation and redirection at large scale while giving operators a way to expire or disable unsafe links. Begin by clarifying the product behavior and workload before walking through your design.