Define the APIs expected from the system. This is your chance to analyze and define the read and write paths so that you can come up with the high-level design...
POST /shorten
GET / {code}
GET /analytics{code}
DELETE /shorten/{code{
Describe the overall system architecture. Identify the main components needed to solve the problem end-to-end. Use the diagramming tool to create a block diagram.
Deep dive into 2-3 key components. Explain how they work, how they scale, discuss tradeoffs, capacity, and any relevant algorithms or data structures.
User → API
↓
Primary DB (auto increment ID)
↓
Base62 Encode
↓
Store (short_id, long_url)
↓
Return short.ly/g8K3
User → short.ly/g8K3
↓
Cache lookup
↓
If miss → Database
↓
Return 301 Redirect → Original URL
Client → API → Database (update URL)
↓
Delete cache entry