2 ms·
I've designed large systems, given numerous system design interviews, and prepared for these interview myself. This is what I'd recommend: 1) You can read the
by stephenbez 4y ago
I've designed large systems, given numerous system design interviews, and prepared for these interview myself. This is what I'd recommend:
1) You can read the engineering blogs from top companies such as Google, Meta, Twitter, Uber, etc. They talk about their designs. It's especially important to read the blog for the company you are interviewing with since it will give you more context for the problems they are solving.
2) I found this template to be pretty useful: https://leetcode.com/discuss/career/229177/My-System-Design-Template https://leetcode.com/discuss/career/229177/My-System-Design-...
3) By yourself, or with a friend brainstorm how you would architect certain features from popular app. For example: Uber routing, Instagram recommendations, sending WhatsApp images, live video streaming. After you are done, look up how it is actually implemented. This is fun and you can do it a couple of times a week.
4) Research details about fundamental technologies. Your system will likely want a cache and you might say you will use Redis. You should be able to know details on how you will use Redis to accomplish your goals. For example what key will you use, what TTL, what eviction policy. Almost all of these technologies are open source. If you don't use them in your job, spend 5 hours on each going through the Quickstart guides and playing with it.
5) Once you have a pretty good idea what you are talking about, make sure you talk about tradeoffs. Companies want experienced engineers who can understand the tradeoffs between different architectures and articulate their reasoning instead of picking technologies just because they are popular.
6) Does your company have design docs? Can you read those to learn how your system was built? Maybe reach out to the author and learn what went well and didn't go well once it was implemented.
Of course the best way to learn all of this is to design systems yourself and learn from its experience with production usage.
- LZ_Khan 4y agoAwesome, thanks so much. Yes, my company has design docs but the architectures are far more complex than the typical system design interview would ask for. Maybe that'd be a good exercise but it's quite a handful to understand.