Jun 27 2016

Preparing for Your Software Engineering Interview at Facebook

By Facebook Careers
Share icon
Facebook share icon
Facebook share dark icon
Whatsapp share icon
Whatsapp share icon
Twitter share icon
Twitter share dark icon
Close icon
This blog was updated for 2021 to include the latest guidance.
Whether you're actively interviewing at Facebook or just curious about the process, it’s important to know what to expect so you have a well-informed, positive interview experience. We’ve broken down Facebook’s software engineering interview process along with tips and insights to help you prepare and do your best.

Step 1: INITIAL TECHNICAL SCREEN

This initial interview serves as a screening step to determine whether to continue with a full interview cycle.
The initial technical screen determines whether you'll continue with the full interview cycle. This screen will be with a Facebook engineer and is primarily a coding interview. Your recruiter will let you know whether your initial tech screen will be conducted over video chat or in person. The interview will include three sections, explained below:
Introductions - 5 minutes
We want to know more about you and how your experiences and interests align with Facebook’s mission. Prepare a concise, interesting description of who you are, where you've trained and worked, and what your areas of expertise are.
Coding - 35 minutes
You'll solve two coding problems focused on computer science fundamentals like algorithms, data structures, recursions, and binary trees. If your technical screen is not in person, the engineer will send you a collaborative editing tool. If it is in person, you'll use a whiteboard.
Answering Your Questions - 5 minutes
Come prepared with questions to learn about working at Facebook as an engineer. Take this brief opportunity to learn more about working at Facebook from an engineer's point of view. Think about what you find interesting and challenging about the work you'd be doing here or what challenges you're most interested in solving.
Here’s what you can expect during the initial technical interview, how to prepare, and some tips for a successful interview.
  • Introductions: The interviewer will first introduce themselves and explain what they do.
  • Career Aspirations: For the next five to ten minutes, the interviewer will ask questions about your experience and your career aspirations.
  • Coding: The next half hour will be spent on coding.
    • This takes place in an online collaborative editor shared between you and the interviewer, or on a whiteboard if you do the initial interview in person.
    • You’ll be given one or more coding questions to complete in this editor. We ask questions that are short enough to explain in a few minutes and to solve in 10-30 minutes.
    • In this section, we try to understand your approach to problem solving.
    • We typically don't ask estimation or trick questions - nothing about how many ping pong balls can fit into a swimming pool.
    • You could be asked to solve a problem in any way you choose, and then the interviewer could add further constraints or requirements.
  • The last five minutes of this interview are for your questions. This is a great opportunity to get an insider's perspective directly from a Facebook engineer.

How to Prepare for Facebook’s Technical Screen

Invest time in preparing. It's important for any engineer, even senior ones, to brush up on their interviewing skills, coding skills, and algorithms. You can practice by answering different kinds of coding questions. For example, practice answering a coding question with the most efficient bug-free solution without using a compiler.
  • Write code in a simple text editor. During the interview, you’ll write your code in a similar environment without syntax highlighting or auto-completion.
  • Practice coding by hand. If your interview is conducted in person, be prepared to work on a whiteboard. Practice some of the questions with a whiteboard or pen and paper to help prepare.
  • Practice under time pressure. You’ll have a limited time for the coding question, so it will be important to finish it in time. If possible, have a mock interview with a friend to simulate the interview experience.
  • Go over data structures, algorithms and complexity. Be able to discuss the big-O complexity of your approaches. Don't forget to brush up on your 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.
  • Think about your two-to-five year career aspirations. You’ll also be asked to talk about your interests and strengths as an engineer.
"A woman works on her laptop in a hallway at Facebook."
The full onsite Facebook interview consists of three parts. Preparation is one of the keys to success.

Step 2: Full Interview

Interviewing with any company can be stressful, so we want to provide some insight as to how our process works. The full interview consists of the following:
  • The coding interview: where you’ll solve general coding questions.
  • The design interview: where you’ll be asked to show off your design skills. The design question will be focused on either systems or product, depending on your background.
  • The behavioral interview: where you’ll talk through your previous work experience, motivations, and a number of other behavioral questions.
Unless you've scheduled your interview for very early or very late in the day, someone from engineering or recruiting will take you to lunch. This will give you a chance to ask lots of questions of someone who isn't interviewing you.

Full Interview: Coding - What to Expect:

The coding interview is typically harder than the initial interview: we ask more difficult questions and have a more exacting evaluation. This interview is 45 minutes long. Not all interviewers follow the exact same time breakdown, but the following is typical:
  • Introductions: The first five minutes will be an introduction and possibly brief questions about your background.
  • Coding: The next 30 minutes will be one or more coding problems.
  • Ask Us Anything: We try to reserve the final five minutes for your questions for the interviewer. This part gives you a chance to learn more about Facebook from someone in engineering and gives your interviewer a chance to learn more about your interests.

How to Prepare for Facebook’s Coding Interview:

  • Think out loud. We pay 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 and can also help them follow along with your solution.
  • Locate a good interview spot. Choose a quiet place and ensure that you have a good internet connection and strong phone reception. Headphones will leave both hands free for coding.
  • Speak clearly. Ensure you are speaking clearly and likewise, if you can't hear the interviewer clearly, let them know so they can accommodate.
  • Use the programming language you're best at. It's important to write your solution correctly and in time, so 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 to 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, code design, or any other aspect of it.
  • Share your reasoning: Make sure you can talk about your solution; you will probably be asked to explain it.
  • Find and fix the bugs by yourself. Don't wait for the interviewer to find them for you.
  • Use the hints you are given. Usually, the interviewer knows the question well enough to know which hints will help you next if you get stuck.
"A woman works on her laptop in a hallway at Facebook."
The Facebook software engineer interview experience also consists of a design interview, focusing on either systems or product.

Full Interview: Design - What to Expect:

The design interview is 45 minutes long. These almost never involve coding. Instead, you'll spend the interview talking and drawing on the whiteboard. As with all interviews, the interviewer will typically save the last five minutes for your questions.
The purpose of the interview is to assess the candidate's ability to solve a non-trivial engineering design problem. To that end, your interviewer will ask you a very broad design problem and evaluate your solution.
There are two types of design interviews: systems design and product design. We know that candidates come from all sorts of backgrounds: some build complex user interfaces, others build network libraries, others build platform APIs for third parties. We expect every candidate to be familiar with basic design principles, but we'll try to match you with an interviewer of a similar background (systems or product) so that the conversation is as engaging as possible.
We aim to have the conversation be based in an area slightly familiar to you, allowing you to demonstrate your design abilities on an unfamiliar problem, but in a space that is not completely foreign to you.

Full Interview: Systems Design - How to Prepare:

  • Improving upon a design. Think about and review the complex systems you’ve already designed. What would you change about your approach if you did it all over again? What worked well?
  • Designing from the ground up. Think about how you’d design a system that Facebook (or Instagram, Oculus, Twitter, Uber, etc.) already has. It’s a good exercise to think through the complicated, high-scale systems that you already use every day. How would you design it from the ground up?
  • Read up. Read engineering blogs about approaches that work and the false starts that big companies have had along the way.
  • Start with requirements. Your interviewer might ask, “How would you architect the backend for a messaging system?” At the onset, this question sounds vague. Where do you even start? You could start with some requirements:
    • How many users are we talking about?
    • How many messages sent?
    • What are the latency requirements for sender->receiver message delivery?
    • How are you going to store messages?
    • What operations does this data store need to support?
    • What operations is it optimized for?
    • How do you push new messages to clients? Do you push at all, or rely on a pull based model?
  • Ask Us Anything: The last five minutes are for questions. This is a great opportunity to get an insider's perspective directly from a Facebook engineer.

Full Interview: Product Design - How to Prepare:

  • Reflect on your projects. Think about the projects you’ve built. What was easy, and what was difficult?
  • Your interviewer might ask, “Tell me how you'd design an email server.” Some questions you might want to think about:
    • How do you store mail, especially as the system grows larger?
    • How do you handle mailing lists with large numbers of recipients?
    • How do you handle people abusing the system for spam?
    • How do you guarantee the reliability of the system in the face of potential system failures?
  • A different interviewer might ask, “Tell me how you'd design a client-server API to build a rich document editor.” Some questions you might want to think about:
    • How does the client request data on the document from the server, especially as the document gets large enough that we wouldn’t want to download it in a single request?
    • How do we represent the rich document aspects like bold and italics in our API response?
    • How do we design the system so that new features can be added on the server without breaking older clients?
  • Start with requirements: Your interviewer might ask, “How would you architect the backend for a messaging system?” This question is quite broad, so how would you begin to answer it? You could start with some requirements:
    • How many users are we talking about here?
    • How many messages sent?
    • How many messages read?
    • What are the latency requirements for sender->receiver message delivery?
    • How are you going to store messages?
    • What operations does this data store need to support?
    • What operations is it optimized for?
    • How do you push new messages to clients? Do you push at all, or rely on a pull based model?

More Tips for the Systems Design and Product Design Interviews:

  • Outline your high-level approach: When you take your approach, outline it then think about how it can be broken down into subparts.
  • Identify your focus: There's not enough time to discuss every detail of the design, find the interesting and hard problems to focus the discussion on.
  • Navigate the holistic and the 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 - “Responsibilities will be divided as so between Service A and Service B...” Also describe the implementation details - “A pub-sub queue makes sense here because…"
  • Explore the inherent tradeoffs: In any engineering problem, you will need to make intelligent decisions about tradeoffs. A good solution compares and contrasts different approaches. It explores the tradeoffs present in any complex engineering problem and it makes intelligent, reasoned decisions about those tradeoffs.
  • Drive the discussion: Part of the signal the interviewer hopes to gather is whether you've learned how to build large systems through hard experience. Your ability to anticipate and work around typical problems is part of that signal.
  • Make it a conversation: Be sure to ask clarifying questions. But make sure you drive towards a good solution.
"A meeting room at Facebook with chairs and a long white table."
The behavioral portion of the software engineer interview allows the Facebook team to better understand how you work and what motivates you professionally.

Full Interview: Behavioral - What to Expect:

Facebook’s behavioral interview is part behavioral interview and part coding interview. The behavioral part is about you and your history, your resumé, and your motivation. The purpose of the behavioral interview is to assess whether you would thrive in Facebook's peer-to-peer, minimal-process, somewhat unstructured engineering organization.
The coding portion is a shorter version of the coding interviews above. We include a coding question in this interview to supplement the two coding interviews and get additional coding signal.

Full Interview: Behavioral - How to Prepare:

  • Know yourself. Take the time to review your own resume as your interviewer will almost certainly ask about key events in your work history.
  • Motivation and collaboration. Different interviewers will ask different questions. For example:
    • What is your motivation? Why do you want to work at Facebook? Why are you working as a software engineer?
    • How do you collaborate with your peers? How do you resolve conflicts?
  • Have concrete examples. Support each question with anecdotes. Some typical behavioral interview questions are:
    • What are some of the best things you've built?
    • What are you most proud of?
    • What could you have done better?
    • What were some excellent collaborations you've had?
    • Tell me about a time when you advocated for and pushed your own ideas forward despite opposition.
    • How do you deal with conflict?
    • How do you like to give and receive feedback?
    • What kinds of technologies are you most excited about?

Some final tips for your software engineering interview at Facebook:

  • Be yourself. This means being open and honest about your successes and failures.
  • Be humble and focus on teamwork, leadership, and mentorship qualities.
  • Familiarize yourself with our five core values. These values influence how we work together to fulfill our mission of bringing the world closer together.
    • Move fast
    • Be bold
    • Focus on impact
    • Be open
    • Build social value
Remember, we look for people who believe in these values and practice them daily. Good luck with your Facebook interview.

Stay Connected!

Join our growing team! We're hiring.
Meta is proud to be an Equal Employment Opportunity and Affirmative Action employer. We do not discriminate based upon race, religion, color, national origin, sex (including pregnancy, childbirth, reproductive health decisions, or related medical conditions), sexual orientation, gender identity, gender expression, age, status as a protected veteran, status as an individual with a disability, genetic information, political views or activity, or other applicable legally protected characteristics. You may view our Equal Employment Opportunity notice here. We also consider qualified applicants with criminal histories, consistent with applicable federal, state and local law. We may use your information to maintain the safety and security of Meta, its employees, and others as required or permitted by law. You may view Meta's Pay Transparency Policy, Equal Employment Opportunity is the Law notice, and Notice to Applicants for Employment and Employees by clicking on their corresponding links. Additionally, Meta participates in the E-Verify program in certain locations, as required by law.

Meta is committed to providing reasonable accommodations for qualified individuals with disabilities and disabled veterans in our job application procedures. If you need assistance or an accommodation due to a disability, you may contact us at accommodations-ext@fb.com.
Let us know you're interested
Share your resume or LinkedIn profile with our recruiting team and create personalized job alerts.