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 /api/short-url
Body { "url": "url to shorten" }
GET /api/short-url/{url}
Returns either empty html document which redirects or a body with { "url": "original-url" }
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.
First a server for the api, connecting to a fast db. We only need 1 mapping table which means we could use a NoSQL database. Therefore we will use MongoDB as it's faster and works for this simple of a system.
Load balancer depending on the size of the system.
Redis cache for quick access to frequently used URLs.
Deep dive into 2-3 key components. Explain how they work, how they scale, discuss tradeoffs, capacity, and any relevant algorithms or data structures.
Is it really needed? It's all quite simple.