How You Can Master the Facebook Coding Interview
Put your best foot forward to land the job
As lockdown continued, I realized that it was time to make a change in my career. Although I have been out of the job market for a few years, I decided to explore my love of coding and apply for jobs as a software engineer at Amazon and Facebook. Through this process, I was able to learn that landing the job is not about experience but practice. Once you have your foot through the door and are called for the interview, the power is in your hands and you can stack the deck in your favor by preparing for the encounter.
One of my friends is currently a software engineer at the Facebook office. Once I applied for the job, I reached out to him for advice on how I could prepare. Between his advice and my experience going through the interview process, I have learned there are a few key necessities to impress.
The interview process is structured differently than the standard question-and-answer format. The interviewers are careful not to waste your time with generic questions but instead use the intensive interview to truly determine your grasp of software engineering.
Once you apply for the position, you will have two phone interviews to review your credentials and determine whether you are a proper candidate. You will be matched with a recruiter who is your best point of contact. The recruiter helps ensure you are prepared for the interview and will walk you through the process. The recruiter will supply you with a packet of information to review and ask when you would like to set up your full-day on-site whiteboard interview. Give yourself at least two weeks to prepare for the whiteboard interview. This is when the process begins.
If you have made it to the whiteboard interview, this is where your preparation will come in. The on-site interview consists of six sessions: two coding problems using the whiteboard, three system design problems, and a behavioral management session. The interview is grueling, but it is the last step standing between you and the software engineer position. If you can prepare correctly, you can succeed and land the job.
I’ve boiled down my experience into five key components.
1. Rely on Your Recruiter
As you progress through the interview process, you will have a recruiter assigned to you who will be an incredible resource. They want to ensure you succeed and will provide you with a packet of information about what you will encounter on the interview day. Read the packet thoroughly — not just once or twice but as often as you can until you know the information from memory.
When they ask for an interview day, try to give yourself extra time to prepare for the interview and ask to schedule it at least two weeks away. Be sure to ask the recruiter any questions you may have about preparation and the interview.
2. Prepare for the Coding Problems
The coding interview will occur at the on-site interview and consist of two sessions. Each session will consist of an employee asking you to solve 1–2 problems on a whiteboard as accurately as you can. They are not looking for complete accuracy and for the code to run, but you want to ensure that your coding skills are at a level where the code looks like it would be able to run.
To properly prepare, you will need to understand as many coding problems as possible. You will want to spend at least three hours each day practicing coding problems to work on your speed. To prepare for the coding problems, LeetCode is a great free online resource. Practice the medium and hard problems and complete as many as you can before the interview day.
The questions you receive on the interview day can vary and the interviewers will be looking to ensure you know the basics. After they pose the problem, you want to be able to talk through your process and different approaches to coding problems. Be sure to review sorting problems, matrix problems, and understand the assumptions that you make as you code. The interviewer may follow up on the original question with new criteria that will make the problem more complex.
The best way to prepare is to practice as many difficult coding problems as you possibly can since the 45-minute session will seem like no time.
3. Prepare for the System Design Questions
Due to the overarching reach of Facebook in the programming sector, the program design questions can range in applicability between the different services they provide. They may ask questions related to Facebook, WhatsApp, Instagram, or Spotify and provide context about the problem they are trying to solve within one of the sectors.
On the on-site interview day, you will be given three 45-minute program design sessions. To prepare for these questions, you will want to be familiar with the services that fall under the Facebook parent company. To approach these questions, you will want to understand the building blocks of the problem and how to scale a system. YouTube is a great resource to find examples of system design interview questions. Understand the approach to creating a system, scaling the system up, and the resources necessary to accomplish the task.
4. Prepare for the Psychosocial Interview
The on-site interview will include a one-hour session with upper management that encompasses the psychosocial interview. In the session, management will inquire about why you want the job and what you are looking for. They will also ask more generic questions. Questions to prepare for are:
- Tell me about yourself.
- What is an accomplishment you are most proud of?
- Tell me about a time when something did not go as planned. What was your role? How did you navigate the situation?
- What are your strengths?
- What are your weaknesses?
Have a few experiences in mind for the questions they may pose. Ensure that your experiences answer the question but show that you can resolve problems and navigate difficult situations well. You want to word each difficulty in a way that shows personal growth from the situation. Be honest about the challenges you have dealt with, but show that you learned as well.
In my experience, the interviewer asked many follow-up questions, so be sure to know the background behind your answer very well. Practice interview questions ahead of time with a family member or friend to get feedback on how you sound. You want to go into the interview confident and able to put your best foot forward.
5. Failure Is Not Defeat
In the end, I made it through the interview but was not offered the position. This interview was not the end of the game and there are always more opportunities available. The Facebook interview is extremely difficult but rewarding. Ultimately, I know that I still have a lot to learn if I want to be able to get the Facebook job, but the preparation process has made me a better coder.
Life is a series of failures interspersed with moments of success.
I hope you can use my experience to learn. I find that I tend to learn more from my failures than in the times when things go as planned. If you find yourself in a similar situation, understand that it is OK to fail. Our calluses are built from rough terrain. One interview does not define your ability as a coder. Take a day, feel the sadness, but then it’s time to try again.
To learn more about what I learned through my interview at Amazon, check out the article below:
Good luck. Keep coding.