Meta E4 | Onsite | Reject

meta logo
meta
E4Rejected
February 3, 20242 reads

Summary

I interviewed for an E4 position at Meta and was ultimately rejected. The interview process included a phone screen, two coding rounds, a behavioral round, and a system design round, where I struggled with a mobile-focused design problem.

Full Experience

I decided to give back to the LeetCode community by sharing my interview experience at Meta. The process started with a phone screen, followed by an onsite interview which included two coding rounds, a behavioral round, and a system design round.

Phone Screen Interview:

For the phone screen, the first question I encountered was LRU Cache. I was familiar with this problem and was able to implement the optimal solution using a doubly linked list and a hashmap efficiently. The interviewer noted that since this was a relatively long question, one question would suffice. However, he then asked me another question, which was very similar to Daily Temperatures. For this, I was only asked to explain the solution concept rather than coding it out. I explained my approach, and after this round, I advanced to the onsite interviews.

Onsite Interviews:

Coding Round 1:

Q1: This was a fairly simple question. I was asked to implement a function that, given an array and a window size k, would return the moving average within that window. For example, given [1,2,3,4,5,6,7] and k = 3, the output should be [2, 3, 4, 5, 6]. I found a straightforward solution for this problem.
Q2: The second question was a graph problem, Word Ladder. I knew this problem well and was able to code the solution smoothly.

Coding Round 2:

Q1: This question was similar to Valid Word Abbreviation. It was again very simple, and I completed the code and walked through the solution in about 5 minutes.
Q2: The second problem was similar to Binary Tree Right Side View. This also felt simple to me, and I finished the code and walkthrough very quickly.

Behavioral Round:

This was one of my strongest rounds. The interviewer was very kind and friendly. We discussed some of my complex projects and how I approached and solved the challenges within them.

System Design Round:

This is where I struggled. Despite having prepared extensively for backend system design, I faced a mobile system design question. The interviewer asked me to design a library that, given a URL, downloads files from external sources. He even wrote a definition for one function: func($url, ?= parameters), highlighting the parameters with a question mark. As I asked more clarifying questions, he steered me to focus on the client side, seemingly evaluating my JavaScript abilities, specifically concerning concepts like promises and threads in JavaScript. I continued to answer based on what I believed would be a good design for such a library, and he inquired about the number of threads I would use and what a safe number would be. After the interview, upon further research, I found that the problem was similar to a file downloader library discussed on a proandroiddev blog.

I genuinely didn't know if everyone was expected to handle mobile system design. It was disheartening to be rejected primarily due to a mobile system design problem, especially after putting in significant effort preparing for backend system design. My advice to others is to ensure you prepare for both mobile and backend system design. Once I reviewed the blog post, I realized the question wasn't inherently difficult, but a lack of familiarity with mobile system design can certainly lead to a struggle. Also, it might be beneficial to revise JavaScript concepts; it might help you now or in the future.

I wish everyone the best of luck with their interviews.

Interview Questions (7)

Q1
LRU Cache
Data Structures & AlgorithmsMedium

Implement the LRU Cache data structure. It should support the following operations: get and put. get(key) will retrieve the value of the key if it exists, otherwise return -1. put(key, value) will update the value of the key if the key exists. Otherwise, add the key-value pair to the cache. If the number of keys exceeds the capacity from this operation, evict the least recently used key.

Q2
Daily Temperatures (Explanation)
Data Structures & AlgorithmsMedium

Given an array of integers temperatures representing the daily temperatures, return an array answer such that answer[i] is the number of days you have to wait after the i-th day to get a warmer temperature. If there is no future day for which this is possible, keep answer[i] == 0 instead.

Q3
Moving Average in a Window
Data Structures & AlgorithmsEasy

Given an array of numbers and a window size k, calculate and return an array of moving averages for each window. For example, given the array [1,2,3,4,5,6,7] and k = 3, the output should be [2, 3, 4, 5, 6].

Q4
Word Ladder
Data Structures & AlgorithmsHard

Given two words, beginWord and endWord, and a dictionary wordList, return the length of the shortest transformation sequence from beginWord to endWord, such that: Only one letter can be changed at a time. Each transformed word must exist in the wordList. Return 0 if there is no such transformation sequence.

Q5
Valid Word Abbreviation (Coding)
Data Structures & AlgorithmsEasy

Given a string word and an abbreviation abbr, return whether the string matches the abbreviation. An abbreviation is a string where some of the non-adjacent, non-empty substrings of the original string are replaced by their lengths.

Q6
Binary Tree Right Side View (Coding)
Data Structures & AlgorithmsMedium

Given the root of a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.

Q7
Design a Mobile File Downloader Library
System Design

Design a library that, given a URL, downloads files from external sources. The interviewer provided a function signature: func($url, ?= parameters). I was asked to focus on the client-side, including JavaScript concepts like promises and threads, and considerations like the optimal number of threads for downloading files. This problem was similar to a file downloader library discussed on proandroiddev blogs.

Preparation Tips

For system design, I studied Alex Xu's System Design Interview Volume 1 and Volume 2, and completed 'Grokking the System Design Interview'. I also watched some random videos. For coding, my preparation involved extensive practice on LeetCode. Based on my experience, I would advise others to also prepare for mobile system design and to revise JavaScript concepts thoroughly.

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!