You have to do a systems design interview and you have no idea what that means?
A systems design or architecture interview is a conversation about how to build a software system given real world assumptions about scale, constraints and tradeoffs.
Typically this means drawing boxes for components like load balancers, web servers, databases, caching layers, etc. and describing how they work together to deliver the desired service.
There is no right answer! What matters is how well you can talk it through.
If this is new to you, here are some things you can read to get up to speed.
If you only read one thing… 🔗︎
-
Systems design for advanced beginners
A light, story-driven overview of architecture of a generic web/mobile service. Topics include: single-page architecture, APIs, client libraries, webhooks, password security, database sharding, replication, text search, and more.
If you have time for a few more… 🔗︎
-
Acing your architecture interview
A model for interviews: diagram, add constraints, find the bottlenecks, update the diagram, repeat. Good coverage of typical constraints and bottlenecks.
-
An interviewer’s perspective on how to give and assess these kinds of interviews.
-
Checklist of ideas to remember. Covers general approach to the interview and specific ideas for scaling bottlenecks.
If you prefer videos… 🔗︎
-
The Unqualified Engineer: Intro to Architecture and Systems Design Interviews
Breaking the problem down, making traffic estimates, etc. Also has a written summary of the video.
-
Google Systems Design Interview with an Ex Googler
A mock systems design interview. Learn by watching someone else do it.
-
System Design Interview Channel
General guidance and five specific examples (top-k, distributed cache, rate limiting, notification service, distributed message queue).