

Draw top level system diagram (client, web servers, platform, database, worker services) 6. Define System APIs - Rest style mostly (read about Rest vs Soap) 5. Do capacity estimation, specifically - traffic estimation (read request per sec, write requests per sec) - storage estimation (storage needed to store worth 3 yrs of stored 'object') - bandwidth estimate ( #of bytes/sec system should handle for incoming and outgoing traffic) - cache estimate (memory needed to cache some of the hot read responses, 80-20 rule) 4. Discuss system constraints (any limitations, what is allowed vs what is not) 3. Gather requirements(use case, who is customer, why is this needed etc.) 2. Idea was to complete them in 45 mins (more on this below).

Finally I made sure I practiced on whiteboard with solving 2-3 sys design problems.

Before each interview I only referred to my notes on various components/building blocks instead of researching again. I read about few system design practical questions and analyzed what sort of things I need to address there - Grokking the sys design and Donne Martin has some good examples on these. I started going over practical system designs - Read mostly from Uber blog, Facebook blog and Yelp architecture. I started reading cloud design pattern - It has some good info on what the nomenclature is and how some components are typically used. I penned it down in my notes, copied any diagram I found its usage in, stored links to videos or blogs I saw mentioned something useful about it. For each component (whether it is a caching, messageQ, DBs) I searched for Youtube videos and gathered more info on it. I was not just reading it page but making my notes summarizing each building block, its usage, common systems where it is used and its drawbacks. I went through this page 2-3 times entirely to develop some understanding (my philosophy is to read one book 10 times than reading ten books 1 time). I also started spending time on Donne Martin Sys Design (resource 1) and tried to go through each section. This is a very practical paper to understand consistent hashing. Grokking the sys design interview - Process: - I started with reading Amazon DynamoDB paper.
System design interview tinyurl how to#
Also it is not a one size fits all thing but I hope it helps you to draft a plan and figure out how to tackle the sys design. It is not an exhaustive list and might not work for everyone.
