Title is pretty much self-explanatory. I have had design interviews where I've been asked to design Twitter, and failed miserably. And then I've had design interviews where I've been asked to design Twitter, rattled off some newsfeed precomputation and observer pattern BS from Educative and gotten selected. My question is, what is the point? There are probably about 15 distinct questions which can be asked, and detailed discussions on all of them are available online. As an interviewer, you cannot reasonably expect someone to come up with a solution that betters them. So, what do you usually look for? How do you ensure that people are not just rattling off something they've _learnt_, and if they do, what do you judge on?
System design is just a debate material that’s somewhat relevant to the profession. Some companies or interviewers expect the “right” answer but more than often it’s about the debating process. Back in Microsoft there was no monolithic guideline and I used to look at design knowledge, analytical thinking, engineering maturity and behavioral. In Google we’re asked to provide feedback in 5 well defined aspects. In either case the correctness of the final answer doesn’t take much weight.
Interesting point about Google. Thanks for the info.
System design interview is indeed subjective to the interviewer and the company. The idea and throw you into the ocean and see if you will swim. A good interviewer will follow your thought process and see how you approach a problem. Some people will talk about observer pattern. Some people will discuss handling unexpected peak loads. This problem is very big deal for Twitter, but probably not so for Dropbox. Ultimately it's the way to see how you structure the problem. What details you will focus on and what will be omitted. It's also the way to poke and find the depth of your knowledge. For example, if you mention something like java atomics, I would be interested to hear your level of understanding of how these are actually work.