Please read part 0 to get an overview of what to expect in this article series.
This part focuses on the preparation materials required to nail the system design interview. Knowledge alone isn’t sufficient to excel at the system design interview, but a solid theoretical foundation is necessary.
You’ll need to go for depth as much as for breadth. Go slow & really understand the concepts. Don’t spend more than a couple of hours on a single article or video in one sitting. This is a firehose of information & your ability to absorb & retain knowledge diminishes beyond a certain threshold.
Be curious — if the article mentions exponential moving average, spend a few minutes on wikipedia to understand what exponential moving average is about, and what the common applications are in software (trending topics, auto-complete etc). Re-read & revise. For e.g. Raffi Krikorian’s Twitter timelines at scale is a 38 minute video, but I’d expect you to spend 1.5–2 hour on watching it. Pause the video when you don’t understand a concept. Rewind, rewatch. Take notes. Truly internalize it. At the end of the video you should know every little nuance — what does it mean to scatter-gather? What happens when a user’s home timeline falls out of the redis cluster? What trade-offs did twitter make when designing for time-lines at scale (you can’t scroll more than 800 tweets etc). Go the extra mile — grab a pen & paper a couple of days later & reconstruct the design by yourself. That’s how you’ll internalize it.