It is recommended you follow the following steps to solving
-
Feature expectations ( First 2 mins ) :
As said earlier, there is no wrong design. There are just good and bad designs and the same solution can be a good design for one use case and a bad design for the other. It is extremely important hence to get a very clear understanding of whats the requirement for the question.
-
Estimations ( 2-5 mins )
Next step is usually to estimate the scale required for the system. The goal of this step is to understand the level of sharding required ( if any ) and to zero down on the design goals for the system.
For example, if the total data required for the system fits on a single machine, we might not need to go into sharding and the complications that go with a distributed system design.
OR if the most frequently used data fits on a single machine, in which case caching could be done on a single machine. -
Design Goals ( 1 mins )
Figure out what are the most important goals for the system. It is possible that there are systems which are latency systems in which case a solution that does not account for it, might lead to bad design. -
Skeleton of the design ( 4 - 5 mins )
30-40 mins is not enough time to discuss every single component in detail. As such, a good strategy is to discuss a very high level with the interviewer and go into a deep dive of components as enquired by the interviewer. -
Deep dive ( 20-30 mins )
This is an extension of the previous section.
All of the problem discussions follow the exact same pattern on InterviewBit.