Loading...
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...
Input:
{
"inputURL": inputURL,
"user_id": user_id (optional),
"expiration_time": exp_time,
"customName": customName (optional)
}
Output:
{
"shortenedURL": shortenedURL
}
Input:
{
"shortenedURL": shortenedURL,
}
Output:
{
"originalURL": originalURL
}
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.
Another drawback of approach: is not straightforward to reuse shortened url's that have expired if a user is keeping track of url stats.