I am sharing my experience interviewing for Meta's 2025 new graduate role last year.
Interview experience
The interviews did not feel easy. Other people's Meta loops seemed to get two medium tagged problems and generous grading, but every one of my rounds felt difficult. The first round tested a disconnected graph. In the second round, I had 35 minutes to explain and write one hard and two medium problems, plus verification. I waited very anxiously afterward, but I ultimately passed.
Timeline
- September 26: recruiter reached out.
- September 27: received the online assessment.
- September 30: completed the online assessment.
- October 2: scheduled the virtual onsite.
- October 14: three coding rounds and one behavioral round.
- October 31: received an automatic offer email from the portal.
The recruiter was on vacation during the week right after my interviews, then was on vacation again during the final week. The recruiter returned on Thursday and sent the offer directly. There was no verbal-offer or call stage.
Coding 1
Question 1, medium tagged: insert an element into a circular linked list.
Question 2, hard and not from LeetCode: a Course Schedule variation. Given a series of courses, each with prerequisites and a number of hours needed to complete it, find the minimum number of hours required to finish a target list of courses.
It is easy to reach for ordinary topological sorting. The difficult parts were:
- The problem needs level-by-level BFS. Courses at the same level as a target course should not be included, because they are not required before taking that target course.
- You must handle a disconnected graph. The target list may contain courses in different subgraphs, so the graph has to be divided into components and each component topologically sorted separately. It was very complicated.
Coding 2
Question 1, medium tagged: determine whether a string can become a palindrome by deleting one character.
Hard follow-up, which had to be coded: determine whether a string can become a palindrome by deleting k characters.
Question 2, a medium tagged variation: given a string and a word set, return whether the string can be constructed from the word set. Each word in the set may be used multiple times.
Coding 3
Question 1, medium tagged: given a range and a BST, find the sum of all BST values within that range.
Follow-up 1, which had to be coded: compute the average instead of the sum.
Follow-up 2, verbal only: how would you optimize this for a real application that calls the function repeatedly, assuming the BST stays the same but the range changes?
Answer: precompute values and use prefix sums.
Question 2, medium tagged: sparse-vector dot product.
Follow-up 1, verbal: what if one vector is very sparse and the other is not?
Answer: iterate over the sparse vector.
Follow-up 2, verbal: what if you cannot use a hash map and may only use tuples?
Answer:
- Create a sorted list of (index, value) tuples.
- Use the outer loop to iterate over the sparser vector.
- In the inner loop, use binary search to jump directly to the corresponding index, then calculate the dot product.
Behavioral questions
- Competing opinions held by different stakeholders or customers.
- Receiving constructive feedback.
- Discovering halfway through that your solution did not work.
- Dealing with conflicts.
- A bad relationship with a teammate.
- Persuading your manager to adopt your solution.
- Dealing with a tight schedule.
- Handling work beyond your scope.
- A project timeline changed and you were told to deliver much earlier.
- A time when you learned something from senior engineers.
Waiting timeline
Based on the outcomes around me, Meta rejection notices arrive quickly. If an interview fails, the rejection usually arrives within four business days. Many people were interviewing with Meta at the time. If your recruiter does not actively move the process forward, an offer can take two weekends. If the recruiter helps expedite it, the result should come after one weekend. I tried to push with another offer deadline, but my recruiter only gave a perfunctory "Thanks for letting me know."
FAQ
There is no self-introduction in coding rounds. After the interviewer introduces themselves, you go directly into the problems. Verification is required: write test cases and verbally dry-run them.
The behavioral round does not ask about your resume.
First round
The interviewer was friendly. The interviewer arrived three minutes late and said the session could run three minutes longer at the end.
On the first problem, I forgot to check whether traversal had returned to the starting point. The interviewer gave me a test case. I only realized the mistake after running that test and then corrected it.
After the second problem, the interviewer asked whether I had ignored disconnected graphs. I said I could use DFS to split the graph into connected subgraphs. As I was about to write the code, the interviewer said, "No need to code it out. I definitely believe you can solve it. Your solution works!"
I originally thought I had failed this round because the interviewer caught the bug in the first problem directly and the second problem was not fully correct. Looking back, there were details suggesting I had passed. The interviewer was calm and friendly throughout. After arriving late, the interviewer first said, "In this interview we will solve TWO questions," then immediately corrected it to, "Sorry, we will solve SOME questions." After I finished the first question, the interviewer said, "Oh, since we have time, let's do the second one." At the end of the second question, the interviewer encouraged me with, "I definitely believe you can solve it." Finally, the interviewer asked which round this was. I said it was my first and that I still had three rounds left. The interviewer said, "Take it easy. I believe in you."
Second round
The interviewer was friendly. While I was writing the first problem's follow-up, the interviewer told me to modify my original code. I roughly understood that the expected approach was DFS, because Meta says it does not test dynamic programming, but I could not derive it, so we moved directly to the second problem.
In the second problem's backtracking code, I wrote i instead of i + 1, and the interviewer pointed it out immediately. I also analyzed the time complexity incorrectly. It should have been n * 2^n, and I omitted the factor of n.
There was still time after I finished the second problem. I asked whether we could return to the follow-up for Question 1. The interviewer agreed. I asked whether I could use dynamic programming, and that was also fine. I ultimately completed the problem with DP.
I also thought this round had gone badly because I gave the wrong time complexity and did not solve the follow-up immediately. At first, I thought making me do two medium problems and one hard problem in 35 minutes, after cutting off the beginning and end, was a deliberate attempt to fail me. In retrospect, I do not think that was true. Before I had even written the first problem, the interviewer told me the follow-up would change one deletion to k deletions. That gave me advance warning that I would need to write three solutions. If the interviewer had wanted me to fail, the hard follow-up could have been introduced only after I finished the two other problems, when there would have been no time left.
Third round
The interviewer was friendly. This was a shadow interview: the primary interviewer was experienced, and the observer was new. I had read that shadow interviews count toward the result while reverse-shadow interviews do not. I asked the recruiter afterward, and the recruiter confirmed that this one counted.
This round went very well. Afterward, the interviewer told me, "I think you are performing very well in this interview."
Fourth round
The behavioral interviewer was friendly. There were not many follow-ups. It felt like the interviewer was simply going through a prepared list of behavioral questions.
My lesson from narrowly passing is to assume good intentions from interviewers so I can keep my mindset steady. For example, the first interviewer often interrupted while I was writing code. I assumed the interviewer wanted to collect a positive communication signal, so I followed the direction and patiently explained my reasoning. The second interviewer interrupted as soon as I wrote small mistakes such as i versus i + 1, even though I probably would have noticed them quickly myself.
When an interviewer points something out, it does not necessarily mean they are trying to fail you. Sometimes it is simply their habit and does not mean they are collecting negative signals. Keeping your mindset steady matters most.
Discussion
Loading comments…