Meta/Facebook’s (we’ll call it “Facebook” for simplicity) interview process consists of the following steps:
Before we get into the details of each of these steps, here are a few general notes about Facebook’s hiring process, evaluation criteria, and interviewers.
Facebook interviewers are guided by the company’s current motto: move fast. All human groups have a metaphor they operate from. Facebook isn’t a family or an army. They’re a well-structured Formula 1 team; they spend a lot of effort to put safeguards in place, and then they go pedal to the metal. At Facebook, speed wins.
At Facebook, because the process is centralized, you cannot interview with multiple teams concurrently like you can at some other tech companies. You get one shot on goal every ~3 to 6 months, depending on performance.
“If you pass Facebook’s onsite, but don’t take the offer your status of ‘passed onsite’ is valid for a year. If you don’t take their offer and then choose to re-engage within that year, tell their recruiter ‘I already passed the onsite’ and push to get steps skipped because you usually can.”
When interviewing at Facebook, listen closely to the subtle clues and hints your interviewer gives you. Facebook is the only FAANG where you can’t become an interviewer unless you give good hints.
Please see the previous section called “A note about recruiter calls”.
Facebook’s technical phone screen is a 45-minute coding interview that focuses on data structures and algorithms.
Facebook’s technical phone screens are conducted in CoderPad. If you’ve never used it, you may want to play around in their sandbox and get familiar with their environment before your real interview. One specific thing about Facebook's way of using CoderPad is that during the interview, they’ll have code execution turned off – if you’ve used it before and are accustomed to testing your code during the interview by running it, you’ll need to practice not being able to.
At the beginning of the interview, your interviewer will ask you a question or two about your resume and recent work that you’ve done. These questions don’t meaningfully factor into the interview’s outcome – they are just meant to break the ice and get you talking. The part that matters is the technical portion.
The typical Facebook onsite will consist of the following:
There are four main types of interviews you’re going to encounter when you apply for an engineering job at Facebook – coding interviews, behavioral interviews, and either a system design or product design interview. Here’s what to expect during each of these rounds of interviews.
Facebook's process is highly standardized, so coding interview questions and themes tend to repeat. Coding questions are pre-approved, but that doesn’t mean the interviewers have no freedom.
“Facebook gives you the questions to ask or modify. But they don't tell you the answers in their interviewing wiki. And they let you design the path of the question: you get to ask your own twists and turns.”
“There’s some variance with the interviewer, but usually there are 20 mins per question, and the questions are simple. They want you to get the algorithm fast, and implement the basic solution. The kind of bugs that can be acceptable are empty input, and out of scope inputs like empty array/null. But an incomplete algorithm at Facebook usually doesn’t cut it. They want you to get to it and get to it quickly, and you can sacrifice making a little bit of a mess along the way.”
“I think there is a rule that during the programming interview, interviewers have to ask two questions. And the questions have to be balanced. The first is more like a juicy question testing problem solving skills and you as the interviewer can permit some bugs in the implementation. The second will be easy from the algorithmic point of view but the goal is to assess how much the candidate can write debugless code and test this code perfectly. And if a candidate fails to solve both problems, even if they somewhat shine during one problem: it will be ‘No Hire’.”
It's not that bugs are encouraged, it’s that they're the only company that's top-down directive is: sometimes, in certain rounds, bugs are okay. No other company does that. Facebook relaxes the need for bug-free code so that candidates can code faster.
Finally, Facebook doesn’t ask dynamic programming questions and, in fact, those questions are banned.
For everything you need to prepare for Facebook’s coding interview, check out the section called "Facebook coding interview preparation resources" below.
Facebook hires two types (on paper) of backend engineers: System Generalists and Product Generalists. System generalists get a system design interview, and product generalists get the confusingly named product design interview (in most other contexts, product design refers to UI/UX).
Which of these interviews you get is determined by your recruiter, based on your experience. If you have worked on a lot of product features, then you get a product design interview. If you have worked on high-scale distributed systems, then you get system design.
The product design interview at Facebook is similar to the system design interview but with some key differences:
“Product design is less databases, more data flow, more time spent on details of the API (e.g. parameters that will pass). System design is more databases, less API details, and more about scaling.”
“Many people think Facebook only asks high level system design questions like ‘Design Twitter’ or ‘Design Facebook Feed.’ But that’s not the case. They also ask low level questions. In E6 or above interviews, you will most likely be asked ‘Design Redis’, or ‘Design Kafka’, or ‘Design Memcached.’ I’d even seen rare occasions where E5 candidates would be asked low-level system design questions; low-level questions are less common in rounds for E5 and below.”
“You have to ask about back of the envelope estimations. A lot of senior engineers hate to do that. I hate to do that as well. It’s a waste of time. When I do the ‘There is a rule that I have to do this. But there is no point in doing this. Let’s spend 5 minutes talking about real system design. Let’s assume we have to scale our system from 0 to Google level and therefore estimations are just a waste of time.’”
Ask your interviewer: “Do you want to spend a few minutes on estimations? I’m okay with skipping it, but if you need to see it, then let’s do it. If we skipped it, one thing that might be a more interesting conversation would be spending a few minutes on how to scale this system.’”
If you don’t know what to talk about in a E5 Facebook system design round, talk about user experience. Go on about two choices you could make, then explain in depth the one preferred because it’d be a better user experience.
It’s also common for Facebook interviewers to ask you to walk them through a system you’ve worked on in the past, which is known as a reverse system design interview.
Unlike technical questions, behavioral questions at Facebook are not standardized: interviewers can ask you whatever they want. Behavioral rounds are of medium/low importance at Facebook; they’re less important than technical interview rounds, but they do carry some weight. For the best summary of what to expect in a Facebook behavioral interview, read this blog post by a former Facebook engineering manager – in it he describes exactly how behavioral interviews at Facebook are evaluated and also includes a bunch of sample questions.
Here is a list of questions to get you started. Read the post to get examples of good answers (split out by the candidate’s seniority level!)
Facebook’s candidate review and feedback process is usually completely asynchronous. Sometimes, they’ll do a live debrief but it’s rare. This means there’s a low likelihood for an interviewer to “fight” for a candidate. Socially influencing interviewers won’t go very far here.
Facebook is also the only FAANG that asks interviewers for a confidence score when filling out post-onsite feedback forms. As a result, the process at Facebook can be more forgiving on failed rounds because a lower confidence score means a failed round carries less weight. Also, Facebook is the only FAANG that directly asks interviewers about downleveling.
“Coding is used to decide ‘Should we hire this person?’ System and product design is used to decide ‘How should we level this person?’
For coding interviews, the interviewer says a binary score first: ‘Hire’ or ‘No Hire’. Then in the comments, they say how confident they are in that binary score. The ‘Hire’ or ‘No Hire’ is an official metric, but the confidence score is not.
For system/product design, the interviewer gives the ‘Hire’ or ‘No Hire’ first. Then they say if the candidate should be considered for another level.
So the final decision could be like: ‘No Hire’ for E5 with low confidence. ‘Hire’ for E4 with high confidence."
In cases where the hiring panel is hung, it’s possible they may request one more follow-up interview to help them get more signal.
“Interview feedback is discussed primarily by the system design and behavioral interviewers, and those are the interviewers who have the most say regarding both the hire decision and a candidate’s level. If interviewers don’t feel like they got enough signal and the candidate ends up being on the fence, the recruiter will push for an additional round. Indicative hint: If you have an additional follow-up interview, your interviewers were probably split."
“At Staff level and above, it’s a mandate that candidates can’t get hired if they don’t pass both system design rounds.”
“For E6 and above candidates, if you fail one system design round but do well in the other rounds, you can get a mulligan. They can let you retake one system design round. But the same isn’t true for behavioral: if you fail there’s no mulligan. If you fail the behavioral round, it will be ‘No Hire.’”
Unlike other FAANGs, at Facebook, you generally accept an offer before knowing with which team you’ll end up working. After you accept your offer, you’ll take part in a 6 week “Bootcamp”, where you’ll be trained on Facebook’s engineering infrastructure and systems. After the bootcamp, there will be a 2 week team-matching period.
“At most companies you get to know your team before your first day of work. Meta has a process called Bootcamp. You join Meta, and then after that meet teams and decide who to work for. I found it better than a 30 minute phone call with the hiring manager–which is how you choose a team at Google. I prefer how Facebook does it because before you pick your team you get more data; you can meet their pets, you can look at their code, and stuff like that.”
The team matching process is a bit like speed dating. You meet with hiring managers to gauge fit and chemistry. In order to move forward, both of you have to opt in.
“When the market is good, you can talk to 20 different teams at the same time in Bootcamp.”
There are exceptions – some people with niche skills may get hired for a specific team before they start Bootcamp, but they still have to do the bootcamp period, just not the team-matching part afterwards.
“While the overall process doesn't really change much, for E6 and above (the higher you go the more likely this is), candidates might be assigned to a team before the process even starts. Like for instance you might interview for a specific team, rather than a generalist SWE. It is more common at E6 and above.
In my whole time, I only met one E6 engineer who selected the team at the Bootcamp, as opposed to being assigned a team before start.”
“Top Facebook Questions" on LeetCode is a solid question bank for your practice – you’ll want to practice modifying these a bit because you’ll get slightly modified versions of these questions in real life.
In addition, we’ve aggregated a bunch of useful Facebook content for you! We have replays of candidates doing mock interviews with Facebook interviewers, long-form solutions to common Facebook questions, and deep dives into technical topics that tend to come up in Facebook interviews.
Below are a series of mock interview replays, conducted by Facebook interviewers on our platform. Watch them so you can learn from others’ mistakes.
Below are common questions that interviewers from Facebook ask on our platform. Since our data comes from mock interviews, questions may not be exactly the same as what you'd see in real interviews.
Given the head of a singly linked list, group all the nodes with odd indices together followed by the nodes with even indices, and return the reordered list.
Given the head of a linked list, remove the nth node from the end of the list and return its head.
Determine if this string, after removing any one character, can become a palindrome. If possible return true, otherwise return false.
Write an XML parser and formatter.
Given a sequence of fruit trees represented as an array of strings. Return the maximum number of fruit trees you can pick from given you can only have one type of fruit in each basket and once you start picking you can't skip a tree and then keep picking.
Given an m x n matrix of distinct numbers, return all lucky numbers in the matrix in any order.
Print out all numbers in binary, preserving leading zeros.
Given a list of words, match all words with other words from the list that are a prefix for the word.
Given an array of integers, return the indices of the two numbers that add up to a given target.
Given two strings s and t of lengths m and n respectively, return the minimum window substring of s such that every character in t (including duplicates) is included in the window.
To figure out what technical topics might come up in your Facebook interviews, we did a few things. First, we spoke to a bunch of Facebook interviewers in our community. Then we cross-referenced all the anecdotes we heard with Glassdoor data, the LeetCode question list above, AND our own data-set of mock interviews in the style of Facebook. Based on all of the above, here are the technical topics you’re likely to encounter.
The following interview guides and resources can help you better understand Facebook’s recruitment process and support your interview prep so you impress the hiring committee.
Interview prep and job hunting are chaos and pain. We can help. Really.