I applied online. The process took 4 months. I interviewed at Meta (Menlo Park, CA) in Jun 2016
Interview
It was a typical Facebook interview with 2 phone screen rounds and then the onsite interviews. The phone interviews were both algorithm problems. The onsite rounds consisted of 2 coding, 1 system design and 2 behavioral+coding rounds. Lunch was included with an engineer and also a round with an engineering manager where I got the chance to ask as many questions about Facebook as I wanted without being evaluated.
Questions in the coding round were not difficult (if you prepare well) and I was able to come up with the most efficient algorithm very quickly (later verified on the web) but - and here's the most important point - do not mess up the coding. You are expected to write perfect code, clean and bug-free. If you don't then you get axed. I didn't, so...
What was disappointing is the fact that even though they say reaching the optimal solution is the most important thing and what they are evaluating is your thought process, they don't mean it. They want coders not engineers. Perfection is needed even if they tell you that it's not expected.
Overall though I had a positive experience. All the people involved were very nice and smart. They did not make me feel unwelcome. I guess that's why people love working there.
Recruiter call was pretty standard, first round was 2 Meta tagged LC mediums in 45 minutes. On-site was 2 coding sessions of 2 LC mediums, a system design interview and a behavioral interview with an engineering manager.
Interview questions [1]
Question 1
How do you answer if someone asks how long a deliverable or project will take?
The entire process usually takes 3–8 weeks, depending on scheduling and the specific role. Coding interviews heavily emphasize common DSA topics such as arrays, strings, trees, graphs, BFS/DFS, heaps, hash maps, and dynamic programming. System design becomes increasingly important for E4+ positions.
Interview questions [1]
Question 1
Given an array of integers and a target value, return the indices of two numbers that add up to the target