How should I prepare system design questions for Google/Facebook Interview?

原帖地址:Quora

In my view there are two components to solving system design questions at interviews:

1) Having enough knowledge and skills to come up with good solutions
2) Using the right process to approach the questions

Probably 1) doesn’t need any justification and below I will list a few resources that could be a good start.

However, 2) may seem a bit too abstract. The idea is that at an interview you have 30-40 minutes to answer a question like: “How would you design a search engine”, or “Create this hierarchy of classes, which does X”.

Obviously, to solve such a question in full, companies need weeks to years and big teams of engineers. So, how on Earth should one person answer the question in 30 minutes.

Usually, such a discussion needs to start at the higher level where the interviewee presents their idea of how the architecture would be structured. Only after that, if the interviewer is ok with the higher level design one could go into more details about how they would tackle specific bottlenecks and other limitations. Most often, the interviewer would lead the discussion in one or another direction based on their goals.

In short, it’s important to practice doing that for enough system design problems. Just take a few from the internet and give it a try. Here are a few examples:

1) Design a URL shortening service.
2) How would you design the feature in LinkedIn where it computes how many hops there are between you and another person?
3) If you were to design a web platform for online chess games, how would you do that?

As for some good resources to start with, I would recommend this video lecture from prof. David Malan from Harvard, which covers many useful aspects of designing scalable systems:

I also find this 4-part article very interesting: Scalability for Dummies – Part 1: Clones.

Finally, the HighScalability blog has some nice examples of real-life architectures: http://highscalability.com/

There is a lot to be said about this topic and it’s a very exciting matter. We’ve tried to assemble a chapter on system design questions at tech interviews in HiredInTech, which I am personally involved with: http://www.hiredintech.com/syste….

I’ll be happy to hear your comments on whether it’s useful.

Good luck!