System Design Interviews

At the system design interview, you are usually given a very vague design problem like "Design Twitter", and you need to share your approach in about 45 minutes. The purpose of these interviews is to test your experience working with real software systems, and how much you know about these systems in general.

You usually don't code much during these rounds, but simply show your design and considerations on the whiteboard, and discuss your approach with the interviewer.

System design rounds are more common for senior and more experienced candidates, and interns and new grads usually don't have them. But it's still important to keep them in mind.

How to prepare

Format

First, it's important to understand how system design interviews are conducted, what is the format, and what needs to be done.

For an introduction to system design interviews, you can watch a great video by Jackson Gabbard below:

System design problems

As with coding rounds, you can also try existing system design problems. Probably the most valuable thing from them is reading their solutions, seeing what you missed, and getting exposed to new concepts.

For a good collection of system design problems with solutions, you can check out a System design course on educative.io. It's not free, but well worth it. There are also several lessons available for free preview.

We will also cover some more good sources of system design problems in the materials below.

Learn about real systems

Perhaps the best thing you can do long term to prepare for system design interviews is to learn about real software systems and general principles in them. Even if you read about software systems for 1-2 months, you will be much better prepared for system design interviews, and will become a better software engineer too.

One of the best things you can read is a good book about software engineering and software systems. I highly recommend Designing Data-Intensive Applications as a great book about big distributed systems, and as one of the best technical books I've ever read.

Look below for more great materials you can read.

Materials

Perhaps one of the best ways to prepare for system design interviews is to expose yourself to as much information about designs of the real systems as possible. So, here are lots of links to the books, blog posts, articles, videos and papers I found useful.

Most recommended:

Here are some videos that I found helpful:

Everything else. It's roughly sorted down from the most recommended ones, but you can check and see what you like: