Monday, January 11, 2016

Scalability Design Interview



Cracking the Tech Career: Insider Advice on Landing a Job at Google, Microsoft, Apple, or any Top Tech Company
Scalability Questions
PREPARATION
One of the best things you can do is read how real-world systems were implemented. What are the components involved in the design? Why did the designers make the choices that they made? What were the trade-offs?

These systems can be major products (e.g., Twitter, Google Maps) or components of existing products (e.g., MapReduce, BigTable).

The more analysis you've done on how other systems are designed, the better you'll be able to design a new system. Again, it's not about memorizing how these systems are designed. You need to analyze why they've been designed that way.

HOW TO APPROACH
A general structure like the following four-step sequence works well:

Scope the problem. You can't build a system without knowing what it should do. While asking any questions you need to, make a list of the necessary algorithms or components. For example, if you're designing Google Maps, you might need to route people, display maps, gather traffic data, and so on.
Structure the architecture. Outline what the key components to the problem are. For example, you might have a data store, a crawler, a front-end piece to fetch data from the data structure, and so on. This is a great moment to get up and use the whiteboard. It will make your thought process clear and organized, for both you and the interviewer.
Identify key issues. Describe what the key problems are that the system will hit. Is the application read-heavy or write-heavy? What does that mean for it? What are the bottlenecks or critical resources? Do you need to distribute your database across multiple machines?
Resolve the issues. Now that you've identified challenges, it's time to solve them. If it's not clear which one you should discuss, then ask your interviewer what she'd like you to do.
While this structure is provided in a linear fashion, you don't need to absolutely stick to it. Identifying a key issue might cause a tweak in the core architecture, or you might have follow-up questions for your interviewer. Prioritize communication throughout this process.

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