Facebook E5 London Offer
Anonymous User
4308

Status: 12years Exp
Position: Lead Engineer at a consultancy
Location: London
Date: Feb-March 2021

Talk with the recruiter (30mins):
This was possibly one of the most important discussions regarding the interview preparation. The recruiter helped me a lot in terms of setting the expectations for the interviews.

Tip: Treat this as an interview and a chance to ask any questions you might have regarding preparation. The recruiter will help you even with suitable interview resources and tips.

Technical phone screen (45 mins): I was asked two questions in this round:

  1. Write a function that, given a binary tree of integers, returns the sums of all the root-to-leaf paths.
  2. Given a string representing an arithmetic expression with only addition and multiplication operators, return the result of the calculation.

Both of them were fairly easy to solve. The key here is to talk through the thought process. I tested the code as soon as I finished writing it without the interviewer prompting for it, this impressed him. Here is a nice video on how approach the problems and test:

Virtual Onsite (4 rounds):
Behavioral (45 mins): This round mainly focused on my personal experiences working in teams and technical problems in my previous jobs. The questions were fairly open ended and for each answer there were some followup questions. I wasn't asked any coding questions in this round, but it's not uncommon.

Tips: Being genuine and being self critical goes a long way in this interview. I found that just remembering significant projects from my CV and having a narrative from each of them was very helpful in terms of preparation for this round. And Yes, remember whatever you are bringing to the table, expect that more often than not there will be follow up questions spawning from the answers.

Note: My recruiter told me that if an interviewer doesn't get enough positive signals in the behavioral interview then even if the other interview responses are positive typically it ends up being a "no-hire" decision. Also it's quite rare to get a "2nd opinion" for this round as these interviews are typically taken by more senior engineers.

System/Product Design (45 mins): I was asked to design a file sharing system like Dropbox. During the requirement gathering I highlighted a potential security issue with auto-sync of the files when shared with other users. Though I didn't take this security feature for the design, I think the interviewer got impressed by it. Also he was impressed by my proposal of staggered scale up depending on data gathered from the usage trends of the service. I was able to drive the design discussion, with the interviewer asking occasional clarification questions. One of the questions were SQL vs NoSQL, I was able to give some high level key differences without getting lost in the details and wasting a lot of time. A good reference video here on this subject.

Tips and references: Keep the design high level, unless the interviewer wants to go deep into a subject and stay focused on the requirements. I can't stress more on how important it is to stay focused on the requirements and to design a working solution. There is a ton of materials and videos available in the internet for concepts and systems:

  1. G** S** D** (leetcode doesn't like the link)
  2. Michail Smarchchok's youtube channel for concepts like caching, queues etc.
  3. Gaurav Sen's youtube channel for concepts like consistent hashing, hyperloglog, quad trees (location based database), bloom filters etc.
  4. Facebook live commenting - really good talk that shows how to make trade-off decisions.
  5. Hired In tech website (leetcode doesn't like the link)

It's really important to understand the concept/technology in depth as it may give negative signals if one just name-drops a concept/technology but can't elaborate on them when probed deeper. At the same time it's beneficial to stay focused on the big picture during the interview. I found this video particularly helpful on how to keep the design simple and talk confidently without getting lost in details.

Coding 1 (45 mins): (Virtual) Onsite coding rounds are very similar to the phone screening one but with a higher bar. I was asked two questions in this round:

  1. https://leetcode.com/problems/find-largest-value-in-each-tree-row/. I solved it using a queue (Breadth First Traversal). Then, I was asked two follow up questions:
    a. how to parallelise the solution in a multiprocessor system?- I proposed maintaining a queue in each processor and assigning the levels to the processors using modulus arithmetic.
    b. what if a row (queue in my solution) doesn't fit in the memory? - I proposed splitting the queue per level and then aggregating the results (min/max) obtained from each split queue.
  2. https://leetcode.com/problems/valid-palindrome-ii/.  - I was able to solve this very quickly.

Coding 2 (45 mins): Two more coding questions again in this round:

  1. Given two integers X and Y (X<Y) and a list of intervals [(i,j)....] (where i is the start and j is the end of the interval), find if the intervals completely cover the given integer range X,Y. The intervals are sorted according to their start value. Example1: X=1, Y=6], List: [1, 3] [3, 5], output: true; Example2: X=3, Y=5], List: [1, 4], [4, 7], output: false. -  The question seemed fairly easy, but I missed a boundary case when I wrote the code. However, I managed to catch the bug while testing (without the interviewer prompting for it) and this went positively with the interviewer.
  2. Given an undirected graph (represented by pairs of nodes) list all connected sub-graphs - I used Depth first traversal. However I ran out time while finishing up the code, and the interviewer asked me to quickly outline what would happen in the remainder of the code. As I managed to modularise the code from the beginning the only thing remaining at this stage was the implementation of one of the functions, and I could easily describe what would happen in that function.

Feedback: I received feedback from the recruiter the next day that all 4 rounds were positive and they were ready to put me through the review-board. I received the offer the following day.

Comments (5)