Software Engineers design, test, and develop software solutions to meet the needs of the customer. They need to have extensive knowledge of databases, frameworks, and other technologies to convert ideas into viable products. They work with businesses, programmers, frontend developers to implement software functionalities.
Requirements for a Software Engineer at Facebook -
- Proficient in coding languages such as Java and C++ and have experience with object-oriented programming.
- Has a good understanding of computer fundamentals, knowledge of data structures, and dynamic programming.
- Familiar with concepts of design and architecture, as well as being able to implement them by collaborating with front-end developers.
- Able to test and debug software and also maintain it so that it is usable in the longer term and can be improved and fixed whenever necessary.
The Facebook Software Engineer interview consists of 3 rounds.
- The first round is the Recruiter Phone Screen in which you will have an informal discussion with the Recruiter.
- The second round is the Technical Phone Screen, where two software engineers will test your coding skills and understanding of data structures (and similar concepts).
- The final round is the Onsite Round.
We've got the Facebook Software Engineer interview guide also available to watch as a short video.
This is the first round of the interview process and will be an informal call with the recruiter. During the call, the interviewer will inquire about your background, why you want the role and why Facebook. They will also ask you to share your project experiences.
- Tell me about yourself.
- What made you apply for Facebook?
- What do you think about Facebook?
- Where do you see yourself in the next 5 years?
- Tell me about the most challenging project you worked on, and why you think it was the most challenging.
- What value would you add to Facebook?
This is the second round of interviews in the Facebook Software Engineer Interview, which is a 45-minute video call. You will have a short discussion about your resume and general coding questions with 2 interviewers. After this, you will be given 2 coding questions and you will have around 20 minutes to solve each and will have to walk the interviewers through the solution.
You will be tested on the following -
- Dynamic Programming
- Data Structures
- Graphs, Trees
- When you get the coding problem, explain your approach first and then start coding. Also, discuss all doubts regarding the problem with the interviewer before attempting the question.
- You will have to code on a text editor and hence will not have access to features like syntax auto-complete. Additionally, you won’t be able to compile/run the code, so get enough practice beforehand so that you’re comfortable during the interview.
- The level of difficulty of the interview questions is observed to be similar to that of the medium-level LeetCode questions, so it’s a good platform to practice questions on the above-mentioned topics.
Some Facebook coding interview questions are -
- Given an integer array, return an array such that the value in the array is the product of all values of the original array except the number in that position in the original array.
- In which cases is the Quicksort algorithm used?
- Write a code that generates the shortest path from a to b in the given matrix.
- Reverse the given linked list.
- Write a code that determines if a given graph is bipartite.
- Write functions for traversing, reversing, sorting, and searching in a list.
- Given the root of a binary tree, determine the number of root-to-leaf paths such that the sum of the values of the nodes is N.
- Search for a given element in the linked list.
- Write a code to find all nodes in a binary tree at a distance of N from the leaf nodes.
- Write a code to check whether a given string is a palindrome or not.
- Find a specific node in the binary tree.
- Convert the given queue into a stack.
- Given the binary tree, sort it.
- Print a binary tree in a zigzag order.
- Write a function to add and remove elements in a binary tree.
- Find the middle element in a singly linked list.
Note - You can code in the language of your choice. You can also write a pseudo code but it is recommended that you check in with the interviewer first. Questions based on wildcard pattern matching algorithms have also been asked.
You may have another technical interview if you’re a borderline candidate.
Want a real-life mock for the Technical Phone Screen?→ Schedule a mock interview
The onsite round usually consists of 4-6 interviews, 2 of which are technical interviews, one is a systems design round and one is a behavioral round with a hiring manager. Technical interviews will be conducted by software engineers and will be live coding challenges.
1. Technical Interviews
For the technical interviews, you will be tested on -
- Basic Coding skills - manipulating strings, arrays, recursion.
- Data Structures.
Note - Questions related to previous experiences and related technical questions are also asked.
2. Design Round -
This round will assess your System and Product Design skills. Depending on your experience as well as the role you are applying for (Junior/Senior), the level and importance of this round will vary.
For a junior position, you will not be expected to be adept at System Design, however, you must know about Product Designing. As for the senior position, you will be required to have extensive knowledge of both.
Some tips for the Design Round -
- Learn by practicing and observing the models of companies like Facebook, Google, and Amazon, and understand how they were designed.
- Think about how you would go about designing a model. Start with some general questions and then move onto more specific details as per the problem.
- Read about various design failures, understand why they failed and how they could have been prevented. It will help provide a direction as to what can be done and what shouldn’t be done.
3. Behavioural Round -
Through this round in the Facebook Software Engineer interview, the interviewers will try to determine whether you’re a good fit for the company and role. They also want to see how you interact with your peers and deal with the situations at hand.
Some tips for the Behavioural Round -
- It is recommended that you answer questions using the STARR Framework - Situation, Task, Action, Result, Reflection.
- Facebook’s 5 core values form an important component of answers to Facebook's SDE interview questions, so try to incorporate them into your scenarios.
Facebook Interview Questions for the role of Software Engineer for the Onsite Round:
Sample Systems Design Interview Questions -
- Design a social media interface like Twitter.
- Design a booking service to book tickets for the cinema, such as BookMyShow.
- Organize an alert system for notifications.
- How would you design Facebook?
- Design a specific feature of the Facebook App.
- Design a search system.
Sample Behavioural Questions -
- What is the most challenging problem you have solved?
- What are some projects you’ve worked on that you are proud of?
- Are there any projects that you regret working on? Why?
- Have you ever had a conflict with a team member? How did you resolve it?
Facebook Coding Interview Questions -
- In the given string, check if the parentheses are balanced.
- Follow up - How can we improve the performance of the code?
- Split the string into substrings based on some given rules. Example - The length of each sub-string should be less than a given M.
- From a given array, select triplets whose sum will be equal to N.
- Remove the duplicates from the given sorted array.
- From a matrix of 1’s and 0’s, find the biggest square, where a square consists of 0’s only.
- Find the lowest common ancestor in a given binary tree.
- Given a different order of characters of the alphabet, check if the words in a given list are arranged in lexicographic order.
- Which algorithm would you use in a given situation and why?
- Design a class to return the median of an array.
- Given an array of strings, write a function to return all strings that are anagrams.
- For a given array, rotate the numbers clockwise.
- Given two binary numbers in the form of strings, calculate their sum.
- Search for a word in the given list, with the least possible complexity.
- Implement division without using the division operator.
Note - You can program in the language of your choice.