Cracking the Tech Career: Insider Advice on Landing a Job at Google, Microsoft, Apple, or any Top Tech Company
Scalability Questions
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.