Facebook Interview - What engineers should know

Let's get tactical on what the Facebook interview looks like for engineers.

There are 5 steps to getting hired at Facebook as an engineer. Here's what the Facebook interview process includes for software engineers and what you should consider inyour interview preparation:

Recruiter chat

A recruiter will give you a call for a quick chat - this will mainly cover your resume, guve you a chance to learn more about Facebook and ask a few behavioral questions. Recruiters usually cover certain areas so if you're not a fit for the specific recruiter, you may be referred to one of their colleagues. This is the fastest and easiest part of the Facebook interview but don't underestimate it- recruiters are gatekeepers and you won't advance if you don't impress them. If you need help updating your profile so recruiters can find you, sign up for office hours.

Technical screen/ coding interview

The next step, similar to Google, is to do 1-2 technical phone screens lasting 45 minutes each. This interview will be the first with a Facebook software engineer and is primarily a coding interview. Each phone screen will consist of solving a problem centered on data structures and algorithms.

For first 5-10 minutes, the interviewer will ask questions about your experience and your plans for your career. The first question is usually around your backgroung or aspirations. The next 30-35 minutes will be spent on coding in an online collaborative editor. You'll be soving one or two questions - they're specifically chosen to be short enough to explain in a few minutes and to solve in 10-20 minutes.The goal is really to understand your approach to problem solving. You will be given freedom to solve the problem any way you choose and the interviewer may add some additional constraints as you go.

Facebook recommends the following for interview preparation:

  • 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 by coding by hand: Coding interviews will be done on a whiteboard. Practice some of the questions with a whiteboard or pen and paper to help prepare.
  • Practice under time pressure: You will 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. Also sorts, searches, and traversals (BFS, DFS). Also review recursion and iterative approaches.
  • 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.
  • Think outloud: Make sure you can talk about your solution; you will probably be asked to explain them. Engineering is all about tradeoffs, so be prepared to discuss them.

Onsite Loop

Most loops include 4–6 interviews on average and are done in Person in Menlo Park. Most of these will be technical and specific to the org or team you’re interviewing for. Nearly all onsite interviews will include some variation of code and system design plus a what Facebook calls the Jedi interview ( behavioral interview)

🧝‍♂️Jedi

This is the behavioral interview - you will be asked questions about conflict, projects you worked on, times you showed leadership, what motivates you, etc. Here are examples of questions you might encounter:

  • What were some of the best things you've built?
  • What are you 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?
  • Why Facebook?

🗡️Ninja

This is the coding component of the interview- it's central your success at getting hired.This will be much harder than your phone screen - brush up on your arrays, binary trees, stacks, queues, heaps, sets, tries, etc. There is no way out of this but doing a TON of leetcode.Both recursion and dynamic programming are very prominent topics that you will no doubt want to have mastered prior to your interviews.

🦜Pirate

This is basically the system design interview-it's 45 minutes and almost never involves coding. If your experience is more on the product side- this might be more geared towards product design for you instead. Facebook will usually match you with an interviewer with similar experience.

You will use a whiteboard to sketch out your solution and talk over it. This interview tests your ability to solve a non-trivial engineering design problems.The interviewer will intentionally ask you very broad questions to see how you arive at a solution and analyze your thought process.

System design

There's two flavors to this - imroving on a design or designing from the ground up. Make sure you practice for both and that you spend time reading engineering blogs about how complex systems were built. Here are some examples of what you might be asked:

Improving:

Pick a project you've worked on in the past - how would you change it if you had to do it all over again?

Starting from scratch: Make sure you practice on examples that are representative of complicated, high-scale systems similar to Facebook

How would you build Twitter?

Next- use a framework. These questions will be intentionally broad and more than your answer, the interviewer is looking to see HOW you think. One thing Facebook recommends is answering methodically, starting with requirements and working your way down to implementation.

Example from Facebook:

How would you architect the backend for a messaging system?

Requirements questions that might apply:

  • Define the number of users
  • Estimate the number of messages sent and read
  • What are the latency requirements for sender->receiver message delivery?
  • Talk about storage solutions for the messages
  • What operations does this data store need to support?
  • How do you push new messages to clients? Do you push at all, or rely on a pull based model?

Product Design

If you're paired with a more product- minded engineer based on your background, your experience will differ a little but overall it's quite similar to the system design interview. This interview will focus a bit more on product sense than the system desing version.

Here's a question Facebook shares an example for aspiring candidates: Tell me how you'd design a client-server API to build a rich document editor.

You might want to think through the following:

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?

Here, similarly, you want to follow a framework. Be realistic - there's not enough time to cover and iterate on every possible solution. Choose a solution path, outline your goal and break it into parts to help the interviewer easily follow you. A good solution covers both high level ideas as well as low level specifics and also discusses all the tradeoffs you might have to make.

After the interview, the Facebook recruiter will follow up with you on a decision. If you get a " yes" and you're offered a role as a software developer - you will need to respond to the job offer and then negotiate your salary.

Is your offer competitive?

Find out how much you’re worth and how to ask for more — the right way.

Loading...