Remix.run Logo
OutOfHere 19 hours ago

Thank you! What are the right questions for a candidate to ask?

As a candidate, I feel that I should ask the interviewer if they're seeking a simple solution or a very scalable one. In this way, I can try to tune the response to the specific interviewer's expectations.

gen220 2 hours ago | parent | next [-]

I always begin system design interviews by repeating and clarifying the framing of the question. Some simple ones: "what kind of service/website is this? what's our expected peak load today? 2 years from now? 5 years from now? [regarding data structures] what's the biggest value we'd reasonably want to store?"

You're backing into things like QPS, size of the data you're responsible for hosting, uptime requirements, real-time requirements, write load vs read load.

Often the natural walk is "let's assume it's a low load, design for that, and then we'll get to higher load at the end". Other times, it's an actual systems-y problem they're facing as a company, and that they have a putative solution to compare your knowledge against.

But yeah it is generally really important to codify and at least state (if not explicitly clarify) your assumptions before recommending a solution.

quantified 15 hours ago | parent | prev [-]

In this case, the most scalable is the simplest. Do the math on where errors can occur and accumulate, storage costs, latency, where rate-limiting can haunt you. The "throw in every feature you learned in certifications" will mess it all up.

OutOfHere 8 hours ago | parent [-]

Huh. The most scalable solution is never the simplest. Simple solutions scale fine up to a point, and no more. The two are at odds.