System Design

System Design Questions. Ugh… I dread these things, not that I’ve really ever had to do one, but I just know I suck at them. Not having worked in Big Tech but only at banks within the enterprise (not having to deal with the consumer side), I haven’t had to engage in the topics that are vital to supporting such systems.
But I’ve always been curious and I’ve read various articles, blogposts, etc. And I’ve had Stanley Chiang’s Hacking the System Design Interview book on my shelf for quite some time. So now in my career revamp, I’m undertaking learning how to tackle this subject.
So one MUST-DO on such interviews is taking the lead by asking questions and explaining your thought process. So to that end, we need to start with:
QUESTIONS
Here are some very good, common questions that should just be automatic and roll off the tongue in these interviews. I’m noting them down here as I need to get used to them:
-
How many users are expected to use the service? DAU? MAU? What percentage are heavy-write users vs. heavy-read users?
-
Global / multi-region: Is this global (multi-region) or single-region? Why: affects replication, cross-region latency.
-
How are clients sending requests? Should integration be focused on readability or performance?
-
What characteristics should the system exhibit in terms of availability, performance, and consistency?
-
Are there any cases or examples where we might need to use strong consistency?
-
Do we need push/real-time (websockets / push notifications) or is periodic refresh acceptable? Why: affects long‑lived connections and message bus.