Navigating Meta's Tough Software Engineer Interview: From Rate Limiter to System Design Challenges

Meta | Software Engineer | Interview Experience

Interview Date: Not specified
Result: Not specified
Difficulty: Not specified

Interview Process

The interview process included a coding round followed by a video interview (VO). In the coding round, I was given a problem related to topological sorting of dependencies. I wrote the code smoothly but spent a lot of time debugging, ultimately failing to pass the test cases. The interviewer, who was from India, provided the problem and then left for about five minutes. I later realized that I only needed to implement a function and didn’t need to write the main function, which wasted a lot of time. After reflecting on the interview, I discovered that I had incorrectly calculated the indegrees of the dependencies, which was quite embarrassing. Surprisingly, a couple of days later, I received an invitation for the video interview.

In the VO, the first coding question was about rate limiting, which I solved quickly. The second question involved adding a user and experience, which I approached using two separate queues. However, there was a hidden test case that I couldn’t pass after debugging for a long time. I even identified an issue with the provided solution. The system design question asked me to design a system that could display, in near real-time, how many friends have played a certain game and the total number of players for that game, scalable to 10 million users and 100,000 games. I had not prepared for this and felt unprepared for the challenge.

Technical Questions

  1. Rate Limiter (Queue, Deque, Sliding Window)
  2. Entity Rate Limiter (Dictionary, Deque, Sliding Window)

Tips & Insights

  • Be mindful of the time spent debugging and ensure you understand the problem requirements fully before diving into coding.
  • Prepare for system design questions even if they seem daunting; having a structured approach can help.