How I cracked system design interviews at FAANG while failing miserably before
tldr; practice in perfectsystemdesign.com (free till July 7) - it's gotten it down to a science.
3 years ago I was failing system design interviews miserably. I did all the usual prep from the popular resources. But it was the round that made the most nervous as I had no idea whether I was doing well or not and was constantly second-guessing my perf.
Fast forward to now, I'm able to clear staff-level system design interviews with ease, including 2 rounds at OpenAI (both phone and onsite), Meta E6, Microsoft (Principal), Databricks, eBay, and many startups.
The difference is:
- Do research on the companies and look up what questions they've asked before.
- There are some specific gotchas with some questions you need to be aware of. For instance, with booking/reservation system you're expected to know the SAGA pattern (which I didn't but still cleared the interview because I did the below).
- Following a structured format, while checkpointing with the interviewer as to what's important to them (more on this below).
- When preparing, follow a specific format. But when actually doing the interview, ASK the interviewer if you can move on to this next phase. Offer them choices. "Now I can do APIs or HLD" and surprisingly, they'll tell you they don't care about APIs or scale estimates, but wanna see the HLD instead first. Many don't care about capacity estimates but every youtube video does them.
- In most cases you can skip authn/authz unless it's pertinent to the design (but call it out).
- I've codified the format and the rubric in perfectsystemdesign.com (free till July 7). This canvas grades you like a real interviewer would, time-boxing each section and grading accordingly.
- It is very important to call out idempotency, reliability, handle ephemeral worker failures, and point out any edge cases BEFORE the interviewer catches them. They're counting how many hints they're giving you and how you're reacting to them. READ THE ROOM. If they're pushing you toward a specific solution, take it.
- However, you really need to understand your own design. OpenAI tried pushing back on some of my design choices, but I held firm. Turned out to be the right call.
- Do a walk through at the end, end-to-end explaining the flow.
What did not work:
- Spending $100+ on mock interviews with FAANG engineers. The problem is they choose random basic questions and the interviewers themselves were not too interactive. It hampered my confidence because it's a hit or miss.
- Just reading passively on popular sys design platforms. Read, but then DO it yourself.
- Watching youtube videos
- I really like 'Jordan has No Life' and others. Very detailed/thorough but use these as reference comparisons rather than following it verbatim.
- hellointerview.com has a community sys design feature I like. But you need to know which ones are good and which ones are bad, so it's a hit or miss and can be misleading.
- Over-optimizing for 'NoSQL vs. SQL'. I've picked SQL even when NoSQL might be the 'right' choice. This is less important than the internet has you believe.
You don't need to get the 'right' system design in many cases. You need to articulate trade-offs well, and explain your choices (even if it's as simple as 'this is what I'm more familiar with'). Remember, in most cases your interviewer hasn't designed these systems either. So they're following a rubric and comparing your perf against peers they've seen. The goal should be to not give any red flags, rather than to give the 'perfect' answer. Good luck!