Wednesday, July 31, 2019

How should I prepare Facebook onsite interview?

July 31, 2019

Introduction


It is so hard to prepare Facebook onsite interview. Since I do not put too much effort, I believe that I got Amazon onsite by passing online code assessment in 2019 and phone screen in June, I win some trust from the interviewer from Facebook. I did solve the first easy level algorithm, and then talked about the idea how to solve the second algorithm using optimal time complexity, I kept working hard to think about hints given through example, I passed my first Facebook phone screen in my life in July 2019.


How should I prepare onsite? 

I like to write hardness based on how I will be evaluated on system design.

Here are highlights of areas I should be evaluated.
1. Problem exploration
2. Design approach
3. Data management
4. Tradeoffs
5. Deep dive
6. Quantitative analysis


You will be given a type of system to design from scratch. This interview helps us better evaluate you on your architecture experience and your knowledge when given an unfamiliar domain or service to design. Part of your discussion should include doing a deep dive into particular components, but focus on deriving an end-to-end design before narrowing your scope. Keep in mind, that there is no 100% “right” answer in this interview – it’s about the logic and reasoning you provide as evidence to support your design.

Note: The expectation is not for your answer to align with Facebook’s infrastructure; but your design must be scalable in a large environment like Facebook.


1. Problem Exploration
a. Ask questions! Ex: What is the underlying motivation of building “X”
b. Gather requirements and clarify any uncertainties: Target users; # of users; amount of data to be handled; requests per second; etc.
c. Attempt to define the problem and how “X” will be built (this will give you a roadmap to follow for remaining of interview)

2. Design Approach
a. High level discussion in regard to covering the main components (*providing reasons/logic behind why they are relevant)
b. What are the different options to get to a solution
c. HOW this product/system will impact other areas of the business

3. 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:
a. How will data be stored
b. (If any) Define data entities
c. Which technology is best to use; or, suggest which data storage solution is best and why
3. Tradeoffs
a. After discussing the pros/cons of each option; choose 1-2 methods to design up a solution.
b. Explain why your making this choice and how it is right for the domain/service
c. Make your tradeoff clear

4. 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)

6. 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

No comments:

Post a Comment