My Facebook Android Interview Experience | Preparation Strategy

My Facebook Android Interview Experience | Preparation Strategy

Featured on Hashnode

As part of an effort to give back to the community, here is a long read-up for the people who want to have an idea about the whole interview process along with some of my preparation strategies for Facebook Interview. You will not find the exact same questions that have been asked in the interview.

1_KzcrsQta-fJTnQfudAJfTA.jpeg

Reach out by Recruiter

After working for several years in various startups I felt that it’s about time I start exploring opportunities in big tech companies. Yes! big tech companies which require solid DS Algo skillset and I knew I will have to improve my DS Algo skills so I started preparing gradually for it and also updated my Linkedin profile. In early Jan 2020, I got a reach out by a Facebook recruiter on Linkedin about the open positions for Android Developers at their London office. Since the timing couldn’t be any perfect, I immediately shared my contact details.

I got on the call with the recruiter, she explained the interview process. She confirmed if I want to get interviewed for Android position and when I said yes, she asked me a few multiple-choice questions about android. I would say if you have a few years of hands-on experience with android, you would be able to answer them easily. After this, she told me that there will be a phone screening interview round and asked me when can she schedule it. Since I needed some time to prepare for the interview along with an ongoing job, I asked her for 40 days time and agreed on a date in the first week of March.


Phone Screen [45 mins]

This was the first technical interview. The interview started with me and the interviewer briefing about ourselves. Then the interviewer asked a few android questions. It was mainly around UI, Layouts and Configuration changes. He then asked me the first programming questions. It was of type easy as per Leetcode. I immediately explained to him the optimised solution with time complexity and he then asked me to code it.

The second question was of type medium. Here I made a mistake, as I was either too excited or nervous, I suggested one solution and the complexity and didn’t try with all test cases and started coding. Thankfully, because of all the practice, I did in the 40 days time, I coded the solution in 7–8 minutes and that’s why I had enough time left in the interview. The interviewer asked me to test the solution with the negative numbers and then I realized the approach I took will not work with negative numbers so I had to solve it another way. And since I had enough time, I was able to come up with a different approach and able to code that up as well.

Few Tips :

  1. Select the programming language you are most comfortable with. You don’t want to search for the syntax for declaring a map or a set.
  2. Ensure a good reliable internet connection.
  3. Practice as much as you can. Create your own pattern about solving questions of similar type. It helps you in coding the solution faster.

After 2 days, I got the email from a recruiter that the interview feedback was positive and they are moving forward with the application to the onsite round and I have to fly down to London for it. But, then the coronavirus happened, a lockdown was announced in the UK so I was asked if I can give the onsite in Hyderabad and then India also announced the lockdown. So finally my virtual onsite was scheduled in May.


Virtual On-site [4 rounds]

There were 4 back to back interviews of 45 mins each with 15 mins gap.

Round 1 — System Design Round (Android) [45 mins]

In this round, you will be asked to design a single screen of popular apps like Instagram, Uber etc. This is a little trickier as you have to think in terms of Android and not in terms of backend. Treat this round as an open discussion round and discuss what all android component you will use, what architecture you will follow, how will you design the layout and while discussing, it would be a good idea to tell why would you do something and why you wouldn’t. The interviewer can go deeper in your design and might ask you more questions around your design and may ask many “What happens when”, “How will you handle” questions.

Tips:

Practice with your friends or alone for this round and try to design different types of apps like Instagram, Messenger, Uber, Zomato on the whiteboard. Create your own strategy and progress path. When discussing areas like APIs, architecture, data storage and retrieval and UI, prepare a clear order in which you will discuss them.

Round 2, 4 — Coding Round [45 mins]

These rounds are similar like phone screening round. Usual drill understands the question, discuss the solution with the interviewer, try to reach the optimal solution, code it and test for the cases, especially the edge cases. I was asked 2 questions in each round and all the 4 questions were of type “medium” as per Leetcode. Both the questions of round 2 were different from each other but in round 4 the second question was actually a follow up of the first question.

Tips:

Don’t waste much time introducing yourself and over-explaining your solution. Also always remember, "It is better to implement a sub-optimal solution than thinking about the best solution till the end without any implementation."

Round 3 — Behavioural Round [45 mins]

In this round, the interviewer will ask you behavioural questions like “How did you handle a conflict at your workplace?” “How did you manage stress at work?” etc. Sometimes they may ask you a coding question also so be ready for that too. Some people don’t prepare for this round much but I would suggest going through the standard behavioural questions and having an answer backed with a real-life anecdote would be a good idea.

Tips:

Please don’t try to bullshit and it’s okay to show that you made mistake as long as you can describe what you learned from it.


My preparation Strategy:

Data Structure & Algorithm was never my forte. I used to struggle with ever the easiest questions when I started. In fact, I didn’t have proper knowledge of time complexities. I realized that I will have to start from the basics, so I started with the theory first. Understanding the theory on asymptotic notation, stack queue tree graph etc.

Once I finished reading the theory and understanding the concept, I started solving problems on LeetCode.

I started with the type “easy” questions in a topic-wise fashion which means if I am doing Arrays or Trees, I will do back to back questions from the same topic. It will not only get you in the rhythm but also develops a strong grip on that topic and also motivates you to keep grinding on Leetcode ;)

Once I solved enough easy questions from the major topics, I started solving top frequently asked questions in the Facebook interview which is available on Leetcode. I solved all the easy and medium questions from there.

I focused on hard problems only when it is a subsequent problem of the previous problem. For example, if I was solving a Buy and Sell stock problem of difficulty level easy, then I would solve Buy and Sell II Buy and Sell II of difficulty level medium and so on till I encountered the hard problem on the same topic. I did this because some interviewer asks one problem and increase the difficulty gradually instead of asking 2 different problems.

It is better to focus more on easy and medium problems than on hard problems because you are practising for cracking the interview and not to win the top-coder challenge. You will not be asked to invent a graph algorithm.

Also, keep an eye on the clock and target to solve two medium questions in 45 mins before the interview. If not that, try to code the optimal solution for the first one and code an acceptable solution for the second problem. An acceptable solution is not the best solution but better than the brute force approach. Time complexity is equally very important. Every problem you practice, try to understand the time complexity calculation as well.

Once you have solved the problem, try to figure out if that is the optimal solution. Go to discuss section on Leetcode for the same problem, you will get the optimal solution posted by someone and sometimes you will also get a chance to get know the thought process for approaching the solution.

Since I knew that I have virtual onsite and I will have to code in one of the online editors which were provided beforehand, I practised on that as well so as to get used to the environment. There will be no autocomplete to run and test your code. It is better to practice on it so as to develop skills of dry running your code with different test cases. If your interview is going to be in person and not virtually, practice on the whiteboard.

Preparation Material:

  1. Leetcode community prepared questions
  2. Cracking the coding interview
  3. 75 Interview Questions that you must do
  4. Grind on Leetcode as much as you can but remember doing lesser question and learning something new with every question is better than doing 500+ questions.

Preparation Tips for System Design Round:

First of all, make yourself thorough with android basic concepts and fundamentals. You are not required to know the internal implementation details of the components but . Go through App Fundamentals and Developer Guides.

Read about different architecture like MVVM, MVP. Practise on designing different screens of famous apps, think about how APIs will interact, how the data will be stored, what all things that you can do asynchronously. Once a basic app design is ready think about these 6 topics and improvise your design or your strategy to improve the app:

  1. Memory Consumption
  2. Battery Consumption
  3. Bandwidth Consumption
  4. Scalability
  5. Persistence
  6. Reliability

Watch Performance matters videos.

Behavioural Interview:

People take this round very lightly. But this round is equally important. Go through the behavioural questions from Leetcode community prepared questions , remember all the incidents from your work experience where you have made a decision, led a project, made a mistake, given negative feedback. Follow the STAR approach, Situation, Task in hand, Action was taken and Result achieved. Also, think about your future career path and why would you want to join Facebook.

Remember that there is no need to give a made-up answer, be honest and practice behavioural interview questions.


I must say Facebook has the best recruiters when it comes to helping the candidate and making them understand the whole process and keeping them updated about any schedule change. The recruiter will be your best friend throughout the whole process and feel free to reach out to them.

This is my interview experience and preparation strategy. Hope this will help someone. I feel if I can crack the interview with this strategy, so can anyone. Feel free to shoot any questions you have in comments. All the best!