Requirements Clarification - trying to define exactly and determine the exact scope of the problem to be solved.
Back of the envelope estimation - try to determine the scale of what is to be built in terms of scaling, partitioning, load balancing and caching.
System Interface Design - try to figure out the APIs needed to implement the functionalities drawn from steps 1 and 2. This will also help to figure out if you’ve misunderstood something
Data model definition: - try to determine the needed entities and their relationships. How will these data be stored, transported or encrypted? What kind of database system will be used?
High level design - try to draw out 5 or 6 boxes that show the various components of the required system. Client, load balancer, application server(s), databases, file storage.
Detailed design: Dig deeper into each component and try to explain the pros and cons of the several ways of implementing a particular component. 7: Resolving bottlenecks: try to discuss as many bottlenecks as possible and several ways to mitigate them.