Status: 5 YOE at startups + freelance. Tier-2/3 university.
Position: Senior engineer at EU startup.
Location: US
Date: Summer of 2024
So I finally found the motivation to write this post about my recent interview experience with Meta, where I received my first MAANG offer. I won’t disclose specific questions for obvious reasons. This post is more of a motivator because many people say you need to clear all of the interviews perfectly to get an offer—that wasn't the case for me, yet I still passed. In each of my interviews, there were actually some challenges and areas for improvement
Screening interview (coding, 45 min):
I was asked two questions: one easy and one medium. I completed the first question flawlessly, but the second question was a variation of a popular question I had solved before, which I only realized during the implementation phase. The interviewer began asking follow-up questions about the problem itself and some general algorithm questions, like why I chose BFS over DFS, how each works, and the trade-offs between them. My dry run for the second question was quite slow since I selected a complex example. Midway through the dry run, I even told the interviewer something like, 'This is going to take a while to complete, but I think we’re okay here.' (not my best move), but the interviewer insisted that I continue debugging. Overall, I spent about 15 minutes on the first question and 25 minutes on the second. Both questions were solved optimally. The next day, I got a message that I had passed to the virtual onsite.
Virtual onsite (4 rounds):
Coding 1 (45 min):
I was given two questions again: one easy and one medium. I solved the easy one flawlessly in 10 minutes. For the medium question, I initially came up with an O(N³) time complexity solution, then optimized it to O(N²). After that, I was asked to optimize it further to O(N). It took me a while, but I eventually figured out how to achieve O(N) time complexity and explained it to the interviewer before coding it out. I felt good about the interview at first, but afterward, I realized my code didn’t handle some edge cases. There was also a more efficient solution with O(1) space complexity (mine used O(N)), and I had made a typos. At this point, I felt it would likely be a ‘lean hire’ at best.
Coding 2 (45 min):
I was given two questions: the first one was medium difficulty, and the second was easy but had many edge cases. I solved the medium question without issues, but I struggled with the second one. I made some bugs, didn’t clarify edge cases, and didn’t even consider them. However, both questions were generally solved optimally. Spent ~20 minutes for each question. Once again, I didn’t feel great about the round and thought it would likely result in a ‘lean hire'.
System Design (45 min):
This was the most challenging interview for me, as I hadn’t had a system design interview before (only mock ones), and I was given a fairly uncommon problem. I did well in clarifying the scope, designing the high-level design (HLD), and answering some follow-up questions from the interviewer. However, my design wasn’t scalable and wouldn’t work effectively at scale, which I realized after completing the HLD. I pointed this out to the interviewer, and he agreed. From my perspective, this was my weakest round. It’s not that I did very poorly, but I felt I was 'not good enough,' so I expected a 'lean hire' at best.
Behavioural (45 min):
This was a generally relaxed round, and I connected well with the interviewer. Some of the questions were well-suited to my experience, and I even had a few stories that could be considered for an E5 level. There were a lot of follow-ups on these stories, so make sure your examples are well-prepared and genuine. After the interview, though, I realized during self-reflection that I talked too much about failures and 'areas for improvement.' I even thought, 'Dude, why you were talking that much about how bad you are instead of talking how good you are :D?'. So it was hard for me to judge if I actually did well or not. Thought it might be something from "lean hire" to "strong hire" depending how they will score talking about weaknesses.
So all these rounds were not perfect, i was expecting to get "follow-up rounds" at best, but...
Two days after the final interview, I received a message saying I passed the debrief and was moving to HC.
The next day, I got another message that I had passed HC.
Preparation advices:
For algo:
For system design:
For behavioral interviews:
Create stories for popular questions on the internet in a STAR format according to the level for which you are aiming. Make sure they are real(you will be asked about details)
General advices:
Try to be proactive and lead the interview—don’t wait for the interviewer to guide you. But it does not mean you should ignore your interviewer, engage but only when it makes sense(for example asking about possible edge cases).
Do as many mock interviews as possible. Try to find a community of people who practice together. There are a lot of skills you can’t fully practice just by solving LeetCode problems or watching system design materials, including:
In fact, four years ago, I had an interview with Google. At that time, I was much more prepared in terms of pure algorithms knowledge, but I completely failed the onsite because I hadn’t done mock interviews so i felt very nervous during the actual interviews and realized that i can't think and talk at the same time, especially in English :D.
This is my first MAANG offer and second try with big tech companies overall so i super excited about opportunity. Overall the process was not that hard, but you need to prepare correctly and also don't be hard on yourself if you fail, remember that it is a game of numbers -> Interviews are very random
Wish everyone good luck.