Thursday, July 9, 2015

(3) How should I prepare system design questions for Google/Facebook Interview? - Quora



(3) How should I prepare system design questions for Google/Facebook Interview? - Quora
1) Asynchronous is good  (use Queues, Topics etc.)
2) Parallel is good  (Multi-threading, load balancing etc.)
3) Avoid points of contention e.g. synchronization
4) Avoid writing to disk until you must - cache like crazy
5) Scale out not up
6) At web scale the speed of light is a problem
7) At web scale everything fails - networks, load balancers etc.

And here are some good articles to read and presentations to watch

http://s3.amazonaws.com/AllThing...
High Scalability - High Scalability - Amazon Architecture
http://www.addsimplicity.com/dow...
Scalability Best Practices: Lessons from eBay
http://www.hpts.ws/papers/2009/session9/shoup.pdfShopzilla - Performance By Design
http://static.googleusercontent....
facebook architecture for 600M users
Infrastructure at Facebook
Scaling Memcache at Facebook
Scuba: Diving into Data at Facebook
Unicorn: A System for Searching the Social Graph
http://www.cs.cmu.edu/~pavlo/cou...
Scale at Facebook
Scalability, Availability & Stability Patterns
LinkedIn - A Professional Network built with Java Technologies and ...
LinkedIn Data Infrastructure (QCon London 2012)
Global Netflix Platform
Timelines at Scale
Big Data in Real-Time at Twitter

https://github.com/checkcheckzz/system-design-interview
How should I prepare system design questions for Google/Facebook Interview?
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
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:

Read full article from (3) How should I prepare system design questions for Google/Facebook Interview? - Quora

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts