Whether you are a software engineer looking to move to the best tech companies or a new college graduate looking for your first software engineering position, passing an interview at a FAANG company is not easy--especially at Facebook.
The interview process at Facebook is especially known for being very exacting. According to Gayle McDowell, author of ‘Cracking the Coding Interview’, each applicant at Facebook is evaluated based on how they perform on each interview relative to other candidates who were asked the same question. This means that to successfully pass the interview at Facebook, you have to stand out from other applicants. At Interview Kickstart, we have you covered.
Interview Kickstart offers interview preparation courses taught by actual FAANG tech leads and hiring managers. We’ve helped thousands of applicants learn how to pass the toughest interviews.
This interview guide will help you develop a deeper understanding of what it takes to successfully pass an interview at Facebook by focusing on the following key areas:
- Facebook’s interview process from the initial technical screening round to the onsite interview.
- The qualities, skills, and abilities that Facebook looks for in candidates as told to us by current and former Facebook employees .
- Technical and behavioral questions commonly asked in Facebook interviews to help you know what to expect during the interview.
- WeFacebook’s job-specific requirements and the company culture.
Facebook Interview Process
We’ve examined Facebook’s career website and collated experiences of current and former Facebook employees to understand Facebook’s software engineer interview process.
Stage 1: Technical Screening
The interviewer will first introduce themselves and explain what they do at Facebook from their day-to-day tasks to their role in the company.
- Career Aspirations (5 to 10 Minutes)
For the next 5-10 minutes, the interviewer will ask about your work experience and career aspirations.
- Coding Interview (30 to 35 Minutes)
The applicant will be given one or more coding questions that are short enough to solve and explain in 10 to 30 minutes. For remote interviews, you will have to write code using an online collaborative editor and for in-person interviews, a whiteboard is used. In a coding interview, the interviewer tries to understand an applicant’s approach to problem-solving. The interviewer may add further questions and requirements to the question to test the depth of a candidate’s knowledge
- Questions for the interviewer(5 Minutes)
This is when candidates will get a one-on-one opportunity to talk to the interviewer to get valuable information about the role and the company.
Stage 2: Onsite Interview
- Coding Interview (45 Minutes)
The onsite coding interview is typically harder than the initial screening interview. In this round, interviewers will ask more challenging questions and will have a more exacting evaluation process.
During the first five minutes of the interview, you will introduce yourself and answer brief questions about your background. For the next 30 minutes you will have to complete one or more coding problems. The last five minutes will be when you can ask the interviewer questions about the role.
- Design Interview (45 Minutes)
There are two types of design interviews:
- System design
- Product design
System design: The first part of the interview will be spent reviewing the systems you’ve already designed. You will be asked about your approach and what worked well in it. Then, you will be asked to design a system from scratch. . An example of a system design question is “How would you architect the backend for a messaging system?” The interview will end with a Q&A session.
Product design: As in a system design interview, you will start by talking about your past projects and your learnings from them. You will then be asked to solve a product design problem. Examples of product design questions are “How would you design an email server?” or “How would you design a client-server API to build a rich document editor?” The interview will end with a Q&A session..
- Behavioral Interview (Time varies)
The behavioral interview is actually half behavioral interview and half coding interview. The behavioral interview is spent first on explaining about you as an employee, your history, your resume, and your motivation to apply for Facebook. This is to assess whether you will be successful in Facebook’s peer-to-peer, minimal process, unstructured engineering organization.
The coding interview is a shorter version of the initial coding interview stated before. Here, you will answer a coding question to be used as another coding assessment.
What Qualities Does Facebook Look For in Candidates?
Lori Goler, Facebook’s VP of People, says Facebook’s values have not changed since 2008.
- They’re bold
When Facebook CEO and co-founder Mark Zuckerberg filed for the company's initial public offering in 2012, he wrote that one of the sayings he and his employees live by is ‘The riskiest thing is to take no risks.’ He also wrote "We encourage everyone to make bold decisions, even if that means being wrong some of the time."
- They focus on impact
"People who thrive here at Facebook are always creating new things and figuring out ways to improve," said Global Head of Recruiting, Miranda Kalinowski. "They have this deep curiosity." Facebook employees are self-driven and committed to furthering , which is to make the world more open and connected.
- They move fast
‘Move fast and break things,’ was one of Zuckerberg's founding mantras. As the company matured, it retained this value, moving as quickly as possible to stay innovative and fuel growth. ‘We're less afraid of making mistakes than we are of losing opportunities by moving too slowly,’ Facebook's values read. ‘We are a culture of builders--the power is in your hands.’
- They’re open
From its open floor plans to its culture of constant feedback, Facebook values workers who embrace transparency and collaboration. "Openness and transparency, building community, collaborating; it’s all part of the way we work together," Goler said.
- They build social value
Goler explained that Facebook is a ‘strengths-based organization.’ The term, borrowed from management consultant and author Marcus Buckingham, refers to a company that builds upon individuals' talents rather than trying to strengthen their weaknesses. This allows employees to produce meaningful work. At Facebook, this approach reinforces Zuckerberg's mission to provide people across the world the opportunity to express themselves online. "Most people who work at Facebook would tell you that what is most important to them is being in a role that has real impact, and being part of something that is bigger in the world," Goler said.
Facebook’s Careers Page: Facebook.com
Are you preparing for interviews at other top tech companies? If yes, check out our Interview Guides for Netflix, Microsoft and Google.
Qualifications Needed for Each Role
- Own, design, develop, test, and maintain software stack for leading-edge hardware devices and systems to enable Facebook Infrastructure's fast growth.
- Design and develop the code base of software framework for scalability and extensibility, which will enable faster development.
- Actively collaborate with industry partners to build and evolve open source ecosystems to support long term growth of our software stack.
- Take full ownership of driving our vendor partners on active engineering engagement to ensure high quality of software releases.
- Build strong partnership with cross-function infrastructure teams and ensure smooth deployment and operation in our data center environment.
- Bachelor’s degree in Computer Science, Computer Engineering or equivalent combination of education.
- Experience coding in C/C++, and Python for system software development.
- Experience in developing multi-threaded applications on Embedded Linux environments.
- Communication, troubleshooting, and analytical experience.
- Familiar with Linux kernel, IPC, and device driver model.
- Familiar with various hardware elements of latest data center environments.
- Familiar with embedded systems software stack.
Developer Support Engineer
- Provide world-class support to the Facebook Platform developer community
- Become an expert in our products, our developers and their needs by providing effective technical consultation
- Manage technical and product issues and escalations, delivering the highest level of developer satisfaction
- Help scale developer support with Sales and Partnership growth
- Work directly with developers to resolve technical issues
- Engage with the operations and engineering teams to build, drive and improve our tools and processes
- Write production code that will improve our internal tooling and our external support channels
- Build product insights from developer experience/sentiments and work with cross-functional partners to take appropriate action
- Deliver impactful results through data based investigations
- Focus on specializing and gaining a deep understanding of our Marketing, Mobile and Messaging Developer Platforms
- Bachelor’s degree in Computer Science or related field (or equivalent degree and experience)
- 3+ years of experience in software development
- Programming experience in one or more of the following languages: Java, PHP, Objective-C, Python and Ruby
- Communication skills in English
- Demonstrated creative problem-solving approach and great investigation skills
- Experience developing for mobile
*If you are looking for more qualifications for roles at Facebook, please use this link: Facebook.com
Facebook Interview Questions
It is important to note that Facebook, like all top tech companies, have a set of interview questions that they rotate between. Problems are also frequently removed from the rotation, and replaced with new ones on a regular basis.
The most effective and efficient way to prepare for Facebook’s technical and behavioral interviews is to understand the conceptual themes and patterns of questions asked instead of identifying commonly asked questions.
If you want to ace interviews at Facebook, place emphasis on pattern recognition and strengthen your problem-solving skills. This is the only way to solve problems that you have never seen before and the only way to explain your solutions.
This is a key focus area of our technical interview prep Masterclass at Interview Kickstart. Sign-up for a free webinar, hosted by our co-founder to learn details of the program and how it can help you ace tech interviews
Below are some commonly asked questions in Facebook interviews
- Longest Increasing Subsequence
- “Find the longest increasing subsequence of a given array of integers, A.”
- Unique Paths in a Grid
- “Given a grid of size m * n, let's assume you are starting at (1,1) and your goal is to reach (m,n). At any instance, if you are on (x,y), you can either go to (x, y + 1) or (x + 1, y).”
- Ways to Decode
- “A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' -> 1,'B' -> 2,...'Z' -> 26. Given an encoded message containing digits, determine the total number of ways to decode it.”
- Best time to buy and sell stocks
- Given an array ‘A’ for which the ith element is the price of a given stock on day i. Design an algorithm to find the maximum profit.
- Regular expression match
- Implement a wildcard pattern matching with support for ‘?’ and ‘*’ for strings A and B.
- Add two numbers as lists
- You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
- Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
- Output: 7 -> 0 -> 8”
- Reverse link list
- Reverse a linked list from position m to n. Do it in-place and in one-pass.
- Tell me about your best collaboration experience
This is important for interviewers to gauge if you will be a good fit for the prospective role and company culture.
- What do you do to stay motivated?
If you are self-motivated and your goals are aligned with the company’s culture and values e.g.providing excellent service to customers, you will be considered a good fit.
- How do you build relationships with coworkers?Questions like this can give interviewers valuable insight into your ability to cultivate and maintain working relationships.
- What would you do if an interviewer didn’t show up for the interview?
Your answer to this can provide insight into how you handle problems on the job.
- What is the one project you're proud of?
This question gives a window into both how you work and promote your work.How do you promote yourself? Do you give more credit to yourself or others?
- Why do you want to work for Facebook?
Your answer to this will show the depth of research you’ve done on the company. Also, they will be able to see your vision for personal growth within the company. You must show why it’s important to you to work at Facebook.
- What is the biggest compliment you have received in your current role?
It is likely that what you were appreciated for in your current role will similarly be an asset in your new role.
- What will be your biggest challenge in your prospective role?
Identify problems outside of yourself rather than within yourself.
- Tell me about a time that you had a disagreement with your manager.
Just as there are different managerial styles, there are different ways of responding to each managerial style.
- What are Facebook’s challenges in the coming years?
It shows that you’ve done your research, have knowledge about Facebook’s business, and can spot market trends.
- What would an ex-coworker say about you?
It allows you to speak about yourself from the shoes of the coworker rather than feel the pressure of having to brag or boast in a self-assessment
Facebook Interview Tips
To help you successfully pass the interview at Facebook, we’ve prepared some of the best interview tips from Facebook itself.
Coding Interview Tips
- Practice thinking out loud
Facebook pays a lot of attention to the way you solve problems, which can be as important as having the right answer. Thinking out loud gives the interviewer insight into your thinking process as you develop your solution. Moreover, it allows them to give you hints needed to solve the problem
- Choose a good interview spot
For an online interview, choose a quiet place and ensure you have good Internet connection and strong phone reception. Use headphones to keep both hands free for coding.
- Speak clearly
Ensure you speak clearly. If you can't hear the interviewer clearly, let them know. You don't want to waste the whole interview trying to understand each other.
- Use the programming language you are best at
It's important to write your solution correctly and use the language you are most familiar with.
- Manage your time effectively
Spend some time figuring out the ideal solution to the question. Don't jump too quickly into brute-forcing the first solution that comes in mind. If you can't find a better solution in a reasonable time, start writing a working solution, then iterate and improve it as you go. Some interviews end without any coding because the interviewee couldn't find the ideal solution. It's better to have non-optimal but working code than just an idea. Once you have a working solution, you can then try to improve its efficiency.
- Share your reasoning
Make sure you can talk about your solution since you will probably be asked to explain them. Engineering is all about tradeoffs, so be prepared to discuss them.
- Find and fix bugs
Don't wait for the interviewer to find them for you.
- Use hints
Usually, interviewers provide hints to help you if you get stuck.
Design Interview Tips
- Outline your approach
Outline your approach then think about how it can be broken down into subparts.
- Identify your focus area
There usually isn't enough time to discuss every detail of the design. Find interesting areas to focus the discussion on.
- Explain goals and details
Move effortlessly from the goals to the high-level approach to the precise details and back again. A good solution covers both high-level ideas as well as low-level specifics. Talk about what components you’ll use and how they fit together.Also, describe implementation details.
- Explore tradeoffs
In any engineering problem, you will need to make intelligent decisions about tradeoffs. A good solution compares different approaches. It explores the tradeoffs present in any complex engineering problem and makes intelligent decisions about those tradeoffs.
- Drive the discussion
Interviewers try to ascertain if you have the required experience to build large systems. Highlight your ability to anticipate and work around typical problems.
- Be conversational
Ask clarifying questions.
Behavioral Interview Tips
- Familiarize yourself with Facebook’s 5 core values viz. move fast, be bold, focus on impact, be open, and build social value. This is how Facebook works together to make the world more open and connected. We look for people who believe in these values and practice them daily.
- Be yourself. Be open and honest about your successes and failures.
- Be humble and focus on teamwork, leadership and mentorship qualities.
Facebook Interview Experiences
To get an understanding of what interviewing at Facebook is like, we referred to Facebook’s hiring manager, Ish Baid’s article to see what he says about candidates and the interview process. Some excerpts from his article are given below.
Facebook’s coding interviews are typically 45-minute long conversations meant to test your knowledge of data structures and algorithms.
What should I do if I don’t know how to approach the problem right off the bat?
“Well, you won’t know what to do if it’s a good interview question. If you did, what would be the point? The goal of a coding interview is to get a grasp of your coding abilities. At Facebook, we referred to this as a signal.
Our goal as the interviewer is always to extract as much signal as possible. This means if we detect that you’ve heard the problem before, it’s our job to switch questions. We want to know how you handle adversity.
If you happen to recite a solution that you memorized from “Cracking the Coding interview,” we’ve learned nothing about your problem-solving skills.” - Ish Baid
- Ask clarifying questions
“Before you can start to tackle the problem, you need to understand the problem. Asking a few clarifying questions can go a long way in setting you up for success. Here are some great clarifying questions to ask:
- Should this be done in place? (No additional memory)
- Can we make any assumptions about the input?
- Do we care more about performance or saving memory?
This will allow you to focus on what’s important and ignore the rest. Knowing what to ignore is equally as important as knowing what to focus on.” - Ish Baid
2) Don’t make assumptions
“Too often, candidates make assumptions about the problem (i.e., all integers are positive, arrays are not empty, all input is safe) … big red flag.Never assume that the conditions of the problem are aligned as is convenient for you to solve the problem. Instead, just ask.
Are the integers passed into this problem all positive?
It’s that simple. If yes, then great. You don’t have to check for that. If not, then a simple if-statement is all you need to make your code safe. Often, asking these questions can provide you great hints as to which direction to move in.”
3) Plan your solution with pseudocode
“Usually, during these interviews, you’ll be working off a whiteboard. This means you can’t easily insert statements wherever you want. You have to know what you’re going to do before writing code.
Take a deep breath and plan out your code. It could be pseudocode, or it could be a simple drawing, but make sure you know what data structures you’ll be using and what variables you’ll need to keep track of.” - Ish Baid
“Talk out loud. It’s hard to help steer you in the right direction if I can’t tell what you’re thinking.
If you’re going in the wrong direction, I can interject. If you’re in the right direction, I’ll most likely let you keep going.
Small note: This is where interviewer style can be a factor. Some interviewers are more proactive than others when it comes to interjecting.” - Ish Baid
“For some reason, this is the most overlooked step. I’d say 98% of the candidates that I interviewed could have benefited from better testing.
At the start of an interview, candidates are often given their interview problem alongside a sample test case.
When candidates finish writing their solution, they will run through the given test case. The only problem? We give you the simplest possible test case. Likely a test case with no edge cases nor with the capability to properly test your code.
Just because your algorithm can provide the correct output for this test case does not mean it can provide the correct output for every case.
The easiest way to stand out in a coding interview is to … write more tests. Write harder tests. Write comprehensive tests.
More often than not, this will help you catch the bugs without needing me to interject. And that looks very good for you.” - Ish Baid
What to Do When You Don’t Know What to Do
“So what should you do when you’re asked a question that you don’t know right off the bat?
Take it one step at a time.
Think back and see if this question reminds you of another one you’ve heard before. Many of the coding interview questions I asked were basic algorithm questions that are taught in most data structures and algorithms classes with a twist.
If nothing comes to mind, don’t panic. This is perfectly normal.
Don’t overwhelm yourself trying to come up with the most efficient solution right off the bat. Start with the simplest solution.
From there, think about what’s the bottleneck? What aspect of the algorithm is the most inefficient? What can you do to minimize those inefficiencies?” - Ish Baid
Resume Building Tips
Here are some resume building tips to help you significantly improve your chances of being shortlisted for a Facebook interview:
- Keep the length of your resume to one-page. Recruiters are swamped already with dozens, if not thousands, of applicants for each job listing.
- Write no more than five bullet points of work experience for each position you’ve held.
- Demonstrate your deep understanding of a given language and skill by referencing it multiple times throughout your resume.
- Since you’re interviewing for a specific position, focus on conveying your core skills relevant for the position.
- Research the company and optimize your resume accordingly to the needs of the position you are applying for.
- Look over the job descriptions for the roles that you are applying to. Identify the keywords and areas of experience then customize your resume to suit the job role.
- Have someone else review your resume.They may find areas of improvement.
- Your resume does not need to have attention-grabbing colors or creative fonts. Keep it simple. Remember it’s all about readability.
- Consider reaching out to an expert. Every now and then, Interview Kickstart holds ‘Resume Review Workshops’. Be the first to check it out by following our social media pages.
- List programming languages you are well-versed in at the top of your resume.
- If you’re a student or a recent graduate, it is recommended that you list your education first, followed by work experience, if any. If you are an experienced industry professional, you should list your work experience above your educational qualifications.
- When describing your work experience, be sure to use action-oriented words like ‘designed’, ‘developed’, ‘created’, etc. Your recruiter will easily understand your skills and experience.
- It’s important you list the results and impact of your work.
- Use subheadings in your resume to improve readability. . Subheadings can include names of your projects and schools/bootcamps you attended.
Preparing for Facebook Interviews
Interview Kickstart specializes in interview preparation. Our staff comprises FAANG tech leads and hiring managers who will teach you how to identify patterns behind coding problems. We also have mock interviews for coding and behavioral interviews with ex-FAANG hiring managers. Here are some preparation tips for coding and behavioral interviews.
Coding Interview Preparation
- Invest time in preparing
It's important for any engineer, even senior ones, to brush up their interview skills especially their coding skills. An interview typically tests your knowledge in areas different from your day-to-day job. The first technical interview in the process will have a strong impact on the following ones.
- Practice answering many different coding questions
Practice answering a coding question with the most efficient bug-free solution without using a compiler. Interview Kickstart offers many different questions that you can use to prepare for your interview.
- Write code in a simple text editor
In the interview, you will write your code in a similar environment (like CoderPad) without syntax highlighting or auto-completion.
- Practice coding by hand
Coding interviews will be done on a whiteboard. Practice some of the questions with a whiteboard or pen and paper.
- Practice under time pressure
You will have limited time to answer the coding question. It is important to solve it in a timely manner. If possible, have a mock interview with a friend to simulate the interview experience.
- Practice data structures, algorithms, and complexity
You should be able to discuss the big-O complexity of your approaches. Don't forget to brush up on data structures like lists, arrays, hash tables, hash maps, stacks, queues, graphs, trees, heaps,sorts, searches, and traversals (BFS, DFS). Also, review recursion and iterative approaches.
Behavioral Interview Preparation
- Know yourself
Review your resume since the interviewer will certainly ask about key events in your work history.
- Motivation and collaboration
Different interviewers will ask different questionsseeking two signals in particular:
- What is the candidate's motivation? Why do they want to work at Facebook? Why are they working as a software engineer?
- How do they collaborate with their peers? How do they resolve conflicts?
Support each question with examples.
Salaries for Tech Roles
Software Engineer Salary
Here is the average salary for a software engineer at Facebook in Menlo Park, CA from LinkedIn. As you can see, the base salary for a software engineer is $149,000/year with a range of $110,000/year to $193,000/year. The total compensation is $245,000/year with a range of $153,000/year to $414,000/year.
Here is the additional compensation for software engineers at Facebook. As you can see, the annual bonus has a median annual amount of $15,000/year with a range of $25,000/year to $30,000/year. The sign-on bonus median amount is $75,000/year with a range of $25,000/year to $100,000/year. The RSUs median annual amount is $85,000/year with a range of $38,000/year to $225,000/year.
Engineering Manager Salary
To get a deeper understanding of Facebook’s work environment, we looked to Glassdoor for reviews from actual employees at the company.
Facebook received a 4.5-star rating on Glassdoor. 94% of Glassdoor reviewers said they would recommend working at Facebook to a friend. 97% of reviewers approve of the CEO. Mark Zuckerberg, is rated one of the top CEOs of 2019 on Glassdoor.
This review is from a software engineer currently working at Facebook at its headquarters in Menlo Park, CA. He says that working at Facebook is enjoyable especially during the coronavirus pandemic.
This review is from a software engineer in Facebook’s New Yorklocation. He believes that Facebook has incredible benefits and care for their employees.
Facebook is a company that prides itself on an amazing work environment and culture. This is why many people love working at Facebook . Facebook’s mission statement with regards to their work culture is, “to live life to the fullest and bring their best selves to work, each and every day.”
Here are Facebook’s five core values as stated on Facebook’s Careers page.
- Be bold
‘The riskiest thing is to take no risks.' In a world that's changing quickly, you're guaranteed to fail if you don't take any risks.’
- Focus on impact
‘To make the most impact, we need to solve the most important problems. We expect Facebook employees to avoid wasting time on minor issues and focus on truly big challenges.’
- Move fast
‘We believe that it’s better to move fast and make mistakes than to move slowly and miss opportunities. Doing so enables us to build more things and learn faster.’
- Be open
“Informed people make better decisions and make a greater impact — so we work hard to ensure that everyone at Facebook can access as much information about the company as possible.”
- Build social value
“At Facebook, we’re trying to bring the world closer together — not just grow our business. Our people focus on creating real value for the world — every day and in everything they do.”
We hope you found this guide useful and valuable. Learn more on how to crack the toughest technical interviews by signing up for our free webinar!