Meta | E4 | London | July 2024 [Offer]

meta logo
meta
E4London3.5 yearsOffer
July 10, 20242 reads

Summary

I applied to Meta in January 2024 for an E4 Software Engineer role in London and successfully received an offer after completing multiple technical and behavioral rounds, including a follow-up system design interview.

Full Experience

I applied on Meta's career portal in January 2024 and received a response from HR in the last week of January. I then went through several interview rounds.

Recruiter Screening

This was a ~40-minute telephonic conversation where we discussed my past work experience, tech stack, current projects, deliveries, and impact. I made sure to be well-prepared with everything I had mentioned on my resume.

After this, I qualified for the Technical Screening round.

Technical Screening

I took 1 month to prepare and scheduled this 45-minute round for the last week of February. It started with a 5-minute introduction, followed by 35 minutes of coding, and concluded with 5 minutes for Q&A.

  1. The first question was Nested List Weight Sum.
  2. The second was Basic Calculator II.

I successfully provided the optimized solution, dry ran it, covered test cases, and analyzed both time and space complexity for both questions within the allotted time.

I received an email a week later, confirming my qualification for the onsite rounds. I scheduled all of them for the last week of March.

Coding 1

This 45-minute round followed the same structure: 5 minutes introduction, 35 minutes coding, and 5 minutes Q&A.

  1. The first question was Lowest Common Ancestor of a Binary Tree III.
  2. The second was LRU Cache.

I got slightly stuck while explaining the mathematical proof of the traversal technique for the first question, but aside from that, everything else proceeded smoothly.

Verdict: Hire

Coding 2

Another 45-minute round with the standard format.

  1. The first question was: Given an array of integers, return the index of one of the largest elements, chosen uniformly at random.
  2. The second question was about planning a round trip between two cities with minimum flight cost. I was given two arrays, D[] for departure fees and R[] for return fees, both of equal length with indices corresponding to dates. For example, D: [10, 8, 9, 11, 7] and R: [8, 8, 10, 7, 9], the minimum cost would be D[1] + R[3] = 15.

I was able to present brute force, optimized solutions, dry runs, test cases, and complexity analysis for both questions within the given time.

Verdict: Strong Hire

System Design

This round was 45 minutes, split into 5 minutes introduction, 35 minutes design, and 5 minutes Q&A. The task was to design a component in the Facebook app to show the top k trending hashtags of the last 12 hours, with data refreshing every hour, and different weightages for hashtags from posts, likes, and comments.

I covered functional and non-functional requirements, estimates, APIs, the data model, and a high-level design diagram, along with follow-up questions. However, I wasn't able to delve into the low-level details of components, data aggregation logic, or component interactions.

Verdict: Mixed Signal

Behavioral

This 45-minute round involved standard behavioral questions, which I answered using the STAR format.

Verdict: Strong Hire

Follow-up System Design Round

In mid-April, I received an email stating that an additional system design round was required due to the mixed signal from the previous one. I scheduled this follow-up for mid-May.

The challenge was to design a multiplayer game like chess that could scale up to 1 billion concurrent players. The constraints included no public matching, only matching with friends, and the need for a matching algorithm for friends, as well as immediate ranking board updates after a win/loss.

I thoroughly covered functional and non-functional requirements, estimates, APIs, the data model, a high-level design diagram, trade-offs between NoSQL and SQL, real-time vs. non-real-time ranking boards, and deep-dived into Apache stream processing, MapReduce jobs, and scalability aspects.

Verdict: Strong Hire

I received an offer for the E4 role in the first week of June. After two weeks for team matching and another two for negotiation, I received the final offer letter in the first week of July.

Interview Questions (8)

Q1
Nested List Weight Sum
Data Structures & Algorithms

Given a nested list of integers, return the sum of all integers in the list weighted by their depth. Each element is either an integer or a list (whose elements may also be integers or other lists).

Q2
Basic Calculator II
Data Structures & Algorithms

Implement a basic calculator to evaluate a simple expression string. The expression string contains only non-negative integers, +, -, *, / operators. The integer division should truncate toward zero.

Q3
Lowest Common Ancestor of a Binary Tree III
Data Structures & Algorithms

Given two nodes in a binary tree, find their lowest common ancestor (LCA). Each node has a parent pointer.

Q4
LRU Cache
Data Structures & Algorithms

Design and implement a data structure for a Least Recently Used (LRU) cache. It should support the get and put operations.

Q5
Random Index of Largest Element
Data Structures & Algorithms

Given an array of integers, return the index of one of the largest elements, chosen uniformly at random.

Q6
Minimum Cost Round Trip Flights
Data Structures & Algorithms

Plan a round trip between two cities with minimum flight cost. From the departure city to the destination city, the fees are stored in array D[]. From the destination city to the departure city, the fees are stored in array R[]. Both arrays should have equal length, and the index corresponds to dates. For example, given D: [10, 8, 9, 11, 7] and R: [8, 8, 10, 7, 9], the minimum cost will be D[1] + R[3] = 15.

Q7
Design Top K Trending Hashtags
System Design

Design a component in the Facebook app to show the top k trending hashtags of the last 12 hours. This data will be refreshed every hour. Hashtags from posts, likes, and comments will have different weightage.

Q8
Design Scalable Multiplayer Chess Game
System Design

Design a multiplayer game like chess that can scale up to 1 billion concurrent players. Public matching is not allowed, only matching with friends. There should be a matching algorithm for matching two friends. Also, update the ranking board immediately after a win/loss in a match.

Preparation Tips

I took a dedicated month to prepare for the Technical Screening round. My preparation primarily focused on practicing coding problems similar to those found on LeetCode. For the System Design rounds, I reviewed common design patterns and scalable architecture principles. For behavioral questions, I used the STAR format to structure my answers based on my past experiences.

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!