your design must be scalable in a large environment like Facebook
Key Evaluation areas:
- Problem Exploration
- Ask questions! Ex: What is the underlying motivation of building “X”
- Gather requirements and clarify any uncertainties: Target users; # of users; amount of data to be handled; requests per second; etc.
- Attempt to define the problem and how “X” will be built (this will give you a roadmap to follow for remaining of interview)
- Design Approach
- High level discussion in regard to covering the main components (*providing reasons/logic behind why they are relevant)
- What are the different options to get to a solution
- HOW this product/system will impact other areas of the business
- Data Management
There’s a high likelihood the question you’re going to be given will have some facet of data management. Some areas to mention during the discussion:
- How will data be stored
- (If any) Define data entities
- Which technology is best to use; or, suggest which data storage solution is best and why
- Tradeoffs
- After discussing the pros/cons of each option; choose 1-2 methods to design up a solution.
- Explain why your making this choice and how it is right for the domain/service
- Make your tradeoff clear
- Deep Dive
Do a deep dive on some facet of the problem you feel comfortable with. This is where you can highlight your expertise in any one area. You will be assessed on your depth in “X” area. Discuss any additional concerns; how to prevent them; and your approach. (Its ok to go back and forth with your tradeoff if later you realize there is a more efficient method)
- Quantitative Analysis
This can be done towards the end or in between the discussions. Try to think quantitatively about how your design will work in reality - make some approximate calculations
**Helpful links:
No comments:
Post a Comment