Summary

We started from a seemingly simple problem statement and went through a lot of things. And still we haven’t covered all the possible angles that one could use to look at the given task. But to do this we would need weeks or months rather than 30-40 minutes during an interview.

The important goal was to illustrate a few key points that we keep talking about at HiredInTech:

  • Given a system design problem we need to make sure we have enough context and exact requirements
  • In order to stay focused on the problem we need to describe a high-level design, which covers all aspects of the system that we need to build. We don’t dig deep into any particular aspect at this point because we don’t have the time for that, unless the interviewer explicitly asks us to
  • If asked we may need to analyze the potential bottlenecks in our design and be ready to scale it efficiently, so that it is capable of handling more of anything
  • Last but not least, practicing solving such problems in an interview-like environment is the key to becoming good at this. Remember that the interview is a special kind of format, which in most cases gives you a very limited time slot and you need to make the best out of it.