Meta E4 | Interview experience | Reject
- Result
- Rejected
- Posted
- 3 Feb 2024
Summary
I interviewed for an E4 position at Meta and was ultimately rejected. While I performed well in the coding and behavioral rounds, my lack of preparation for mobile system design questions led to a struggle in that crucial round.
How it went
I wanted to share my interview experience with the LeetCode community.
Phone Screen Interview:
The first question was LRU Cache. I was familiar with this problem and managed to solve it with the optimal solution using a doubly linked list and a hashmap. The interviewer mentioned that since it's a long question, one problem would suffice. However, they then asked me another question, very similar to Daily Temperatures. For this, I only had to explain the solution, not code it. After explaining, I proceeded to the onsite rounds.
Onsite Interview:
Coding Round 1:
The first question was quite simple: given a window size, get the moving average within that window and output it. For example, with an input like [1,2,3,4,5,6,7] and k = 3, the output should be [2, 3, 4, 5, 6]. I found this to be a straightforward solution. The second question was a graph problem, Word Ladder. I knew this problem and coded the solution smoothly.
Coding Round 2:
The first question was similar to Valid Word Abbreviation. Again, it was very simple; I coded it and walked through the solution in about 5 minutes. The second question was similar to Binary Tree Right Side View, also straightforward. I quickly coded and walked through this solution too.
Behavioral Round:
This round was one of my best. The interviewer was very kind and friendly. We discussed some of my complex projects and how I approached solving the problems within them.
System Design Round:
This is where I struggled significantly. I had prepared system design primarily from Alex Xu's volumes 1 and 2, Grokking the System Design, and some random videos, with a strong focus on backend system design. The question I received was more akin to mobile system design than a typical backend one: "Design a library that, given a URL, downloads files from an external source." The interviewer provided a function definition func($url, ?= parameters) and indicated optional parameters. As I asked more clarifying questions, he directed me to focus on the client-side aspects, and it seemed he was evaluating my JavaScript abilities, particularly concepts like promises and threads in JavaScript. Despite this, I tried to answer based on what I believed would be a good design for such a library, discussing aspects like the number of threads. Later, upon researching, I found the problem to be similar to a mobile system design exercise for a file downloader library. I was quite disappointed, as I had put in a lot of effort preparing for backend system design, only to be rejected due to a mobile-focused question I hadn't prepared for.
Questions asked (7)
- 01
LRU Cache
Data Structures & Algorithms · Medium
Open the problemI was asked to design and implement an LRU Cache. The optimal solution requires using a doubly linked list and a hashmap to achieve O(1) time complexity for both get and put operations.
- 02
Daily Temperatures (Similar)
Data Structures & Algorithms · Medium
Open the problemI was presented with a problem very similar to LeetCode's Daily Temperatures. The goal is to return an array
answersuch thatanswer[i]is the number of days you have to wait after thei-th day to get a warmer temperature. If there is no future day for which this is possible, keepanswer[i] == 0instead. - 03
Moving Average in a Window
Data Structures & Algorithms · Easy
Given an array of integers and a window size
k, calculate the moving average for each window. For example, if the input is[1,2,3,4,5,6,7]andk = 3, the output should be[2, 3, 4, 5, 6]. - 04
Word Ladder
Data Structures & Algorithms · Hard
Open the problemI was given the Word Ladder problem. The task is to find the length of the shortest transformation sequence from a
beginWordto anendWord, such that only one letter can be changed at each step, and each transformed word must exist in the givenwordList. - 05
Valid Word Abbreviation (Similar)
Data Structures & Algorithms · Medium
Open the problemI encountered a problem similar to LeetCode's Valid Word Abbreviation. The question involves determining if a string can be abbreviated to a given abbreviation, where numbers in the abbreviation represent consecutive characters to be skipped.
- 06
Binary Tree Right Side View (Similar)
Data Structures & Algorithms · Medium
I was asked a question similar to the Binary Tree Right Side View problem. The goal is to imagine standing on the right side of a binary tree and return the values of the nodes you can see ordered from top to bottom.
- 07
Mobile File Downloader Library Design
System Design · Hard
Open the problemI was tasked with designing a client-side library capable of downloading files from a given URL. The interviewer guided me to focus on client-side aspects, particularly JavaScript concepts like promises and threading models. The problem was later identified as being similar to a mobile system design exercise for a file downloader library.
How they prepared
For coding, I consistently used LeetCode to practice a wide range of problems across various data structures and algorithms.
For system design, I prepared diligently using Alex Xu's volumes 1 and 2, and I also went through the entire Grokking the System Design book. Additionally, I watched several random videos on system design topics. My preparation, however, was heavily focused on backend system design principles and patterns, which left me underprepared for the mobile-specific system design question I encountered.