How I got an offer from Facebook

Phong Le
8 min readJun 14, 2021

— End of ’22 Note: The article is shorten and improvised.

Welcome to my article about preparing for a software engineer interview at Facebook. In the following pages, I will detail my personal journey to receiving an offer from the company and share the resources I used to prepare for the coding and system design interviews. Please note that this is just my personal experience and should be used at your own discretion. Some of the links provided may be affiliate or referral links. If any of the links are broken, please let me know and I will try to find a working alternative.

How it started

I first learned about the opportunity to work at Facebook through an online referral from a member of the Blind community, a platform where people share their experiences and advice about pursuing careers at top tech companies like Facebook. While the community can be toxic at times, it is also a source of encouragement and inspiration for those looking to break into the industry.

I was particularly motivated by the stories of people who had achieved their dream of working at a FAANG company without a computer science degree, as it reminded me that consistency and perseverance are key. In addition to learning about the interview process and what to expect, I also found valuable resources and preparation materials on Blind and other online forums.

At the time, I was actively seeking new opportunities and participating in interviews with various companies. I saw each interview as a learning opportunity and a chance to improve my skills, so I applied for the E5 software engineer position at Facebook’s London office. Fortunately, the referral helped me move quickly through the process and eventually receive an offer.

Screening call

A week or two after receiving the referral, I received a screening call for a software engineer position at Facebook. During the call, I was asked to solve a medium-level algorithm problem involving tree traversal to find a specific node.

Although I knew that the brute-force solution was not optimal, I struggled to come up with a better solution. I tried to think aloud and explain my thought process to the interviewer, but I became stuck. The interviewer saw that I was struggling and suggested solving the problem using any solution to get it done. I quickly described the brute-force solution, which has a time complexity of O(n).

After the call, I was disappointed in myself and thought I had failed the screening round. However, to my surprise, the recruiter contacted me two weeks later to inform me that they wanted to move me to the virtual onsite interviews. From what I understand, the bar for the screening round is lower than the onsite interviews, which is why I was able to pass despite my difficulties with the algorithm problem.

Delay the final rounds

Unfortunately, there was a complication — I had recently accepted an offer from another company. I didn’t think it would be fair to participate in the Facebook interviews while working for the new company, as the probation period would be hectic and I may not have sufficient time to prepare.

Therefore, I requested to delay my virtual onsite interviews with Facebook for five months, which would be one month after completing my probation at the other company. I believed that interviewing with Facebook at that time would be a valuable learning experience and give me the opportunity to prepare better in the future.

To my relief, the recruiter accepted my request and rescheduled the interviews for the later date.

Preparation for the final round

In this section, I will share the materials and resources I used to prepare for the final round of interviews with Facebook. I will only highlight the most important ones, but you can find a complete list in the final section of the article.

Initially, I had planned to spend one month preparing for the interviews. However, due to my busy workload at my new company, I told myself that this was just a learning experience and that it wouldn’t matter if I wasn’t fully prepared. This was a lame excuse, but it helped me justify my lack of preparation.

Despite this, I still made an effort to prepare by looking for success stories on Blind and reviewing “Cracking the Coding Interview” again, as well as watching YouTube videos about the interview process. Overall, I tried to gather as much information as I could to increase my chances of success.

Code

When preparing for a coding interview, “Cracking the Coding Interview” is a must-have resource, as it is recommended by recruiters at top tier companies. Leetcode is also a gold standard for practicing algorithms and data structures, but it can take years to complete all of the problems. Therefore, I took a structured approach to my preparation.

First, I used the “Blind Curated 75” list to cover as many problem types as possible. This list is curated to include a variety of problem types, so going through it should give you a sense of the different types of problems you might encounter.

Additionally, I found the course “Grokking the Coding Interview: Patterns for Coding Questions” on educative.io to be very helpful. It covers all of the common patterns in coding questions in a systematic way. (You can use my referral link above for a 10% discount.)

I also focused on the “Top Facebook Questions” from Leetcode (Premium), as some feedback suggests that this list is particularly useful. Because of my limited time, I went through the solutions for the problems I couldn’t solve on my own, trying to understand the ideas behind the solutions rather than memorizing them. Ultimately, the best way to prepare is to solve the problems yourself and then practice until you have a good grasp on them.

I understand that these kinds of interviews are not the best way to evaluate engineer skills. But they are the best method to hiring at scale. So you have to prepare for it. (Source of Image: internet)

System design

System design was always my weakest area, as I had never had the opportunity to work on large scale systems. Most of my experience was in developing applications for internal users, and in interviews with non-FAANG companies, I had only encountered a few system design questions. I always struggled with these questions and had a hard time understanding the concepts.

However, I knew that FAANG companies, especially Facebook, place a lot of importance on system design skills.

To prepare, I read every post and comment on Blind about system design, especially those related to Facebook interviews. I found this general approach to system design to be particularly helpful: https://www.teamblind.com/post/My-Approach-to-System-Design-V4SJARdx. I also used tryexponent’s mock interview series to learn how to navigate the system design interview process and gain a deeper understanding of system design. While I found their series on coding interviews to be less helpful, others might find it useful.

I watched and learned from optimal designs for at least 8–10 popular systems, including Facebook, Instagram, WhatsApp, and Messenger. From these resources, I developed a general structure for tackling system design questions:

  • Break down the problem into specific features
  • Estimate the non-functional requirements
  • Design the APIs, starting with the client layer and working all the way to the backend
  • Design the entities and data models, and create a database design
  • Discuss the choices for the database (SQL or NoSQL)
  • Verify the design by testing all features from the API to the database with a simple case
  • Identify bottlenecks and add sufficient scaling ability to the design (e.g. load balancers, caches, message queues, replication)
  • Handle special cases
  • Walk through all features from top to bottom again, testing with all cases and failures

Using this structure, I was able to get an E5 grade result in my design interview. The interviewer didn’t have many questions or concerns, as I had addressed most of them through my process.

Overall, I found that the key to preparing for a system design interview is to familiarize yourself with common design patterns and approaches, and to practice organizing your thoughts and explaining your design decisions. It’s also helpful to have a clear structure in mind to guide your design process.

Not the whole Facebook. You need to scope it out to specific features.

Behavioural interview

In my preparation for the Facebook interviews, I focused more on the coding and system design questions and didn’t put as much effort into preparing for the behavioral interviews. However, I recommend giving more attention to this aspect of the interview process, particularly if you are applying to Amazon, as they place a great emphasis on behavioral interviews.

To prepare for behavioral interviews, it’s helpful to think about your past experiences and how they demonstrate your skills and qualities. You can use the STAR method (Situation, Task, Action, Result) to structure your responses to behavioral questions. This involves describing a specific situation or task you faced, the actions you took to address it, and the result of those actions.

It’s also a good idea to review common behavioral interview questions and practice answering them. Some examples might include:

  • Tell me about a time when you faced a challenge and how you overcame it.
  • Describe a situation where you had to work with a team to achieve a goal.
  • Share an example of a time when you had to make a difficult decision.
  • Talk about a time when you had to adapt to a new situation or challenge.

By thinking through your past experiences and practicing your responses, you can be better prepared to demonstrate your skills and strengths in a behavioral interview.

Btw, Facebook does not ask this kind of question (Image Source: On the image)

Result

In the design interview, I received an E5 grade result. In the coding interviews, I was able to solve the first problem optimally in both rounds, but my solutions for the subsequent problems were sub-optimal. This may have been due to the fact that I only spent a few weeks preparing for coding questions.

In the behavioral interviews, I did not have as much preparation and my performance may not have been as strong as in the other interviews.

After waiting for a few weeks, the recruiter informed me that I had not been successful in securing an E5 position at the London office. However, they mentioned that there may be an E4 position available at the Singapore office. I expressed my interest in exploring this option and, after a few more days, received confirmation that they would like to move forward with an E4 offer. Before joining Facebook Singapore, I was asked to choose a team.

Other materials

They are materials that I also used but not entirely

--

--