I've been guilty myself of preparing excessively for data structure and algorithm questions while hoping a few videos will do me for the system design prep... And I messed one interview up big time! And ultimately missed out on a job I really wanted.
Since failing that interview I have been working on an AI system design interviewer which let's me practice discussing trade offs while diagraming and reacting to any questions the interviewer has for me!
Through that I have been doing lots of practice interviews and these are my top tips i have learnt for those preparing for any interview:
1 - Practice! Just as you practice leet code questions you need to practice discussing trade-offs and explaining how components in your system combine to solve a problem.
2 - Have a couple trade off points ready to discuss. A lot fo system design follows a similar pattern, so be able to easily reel off why you prefer once caching strategy to another in a certain scenario will help give your interviewer points to write down in your favour.
3 - Brush up on your database design. This is an area many interviewers will want to deep dive on and area where there is plenty to discuss and show off your knowledge. Looking into SQL vs NoSQL, CAP Theorem, and ACID are reasonable places to brush up.
4 - Be aware of time. In this high pressure situation time can creep up on you. You can find yourself thinking you have plenty of time left to discuss all the great points you have in mind and then your interviewer says "and that's time!“
Overall System design interviews offer a chance to showcase our knowledge of how complex systems are built, how we understand the effects of our design choices, and how well we can communicate the trade offs that come with those decisions. Make sure you are prepared to deliver your best self!