This chapter covers
- Learning the importance of the system design interview
- Scaling a service
- Using cloud hosting vs. bare metal
A system design interview is a discussion between the candidate and the interviewer about designing a software system that is typically provided over a network. The interviewer begins the interview with a short and vague request to the candidate to design a particular software system. Depending on the particular system, the user base may be non-technical or technical.
System design interviews are conducted for most software engineering, software architecture, and engineering manager job interviews. (In this book, we collectively refer to software engineers, architects, and managers as simply engineers.) Other components of the interview process include coding and behavioral/cultural interviews.
1.1 A discussion about tradeoffs
The following factors attest to the importance of system design interviews and preparing well for them as a candidate and an interviewer.