I applied through a recruiter. The process took 4 weeks. I interviewed at Meta (Seattle, WA) in Jul 2015
Interview
If you're a solid developer with years of experience working on high visibility products used by millions of people (and references to back it up) don't expect the interview process at Facebook to just work. It really comes down to how much you prepare yourself mentally to code within the context of an interview, and how much you study Career Cups as well as the other resources given to you by the recruiter. Sadly, you don't have to be a great developer at all.
What's interesting is that none of these skills have been necessary during my 17 years of real world experience. I never had to write code on a whiteboard (except for other interviews) and I don't see how "writing code fast" should be considered a measurement of someone's productivity and code quality. That sort of thinking seems naive and haphazard to me.
What frightens me is that I think Facebook truly believes they're "raising the bar" with this system. But they're not always hiring good people, and they're probably turning down a lot of great folks.
The coding tests were super easy. Two were questions I've actually asked myself while conducting interviews for another company which was aimed towards entry level developers. I really wish they would have asked more challenging questions. I was able to finish them before the end of each panel, and with optimal solution.
The design question they gave me actually aligned with something I developed and designed for a product used by millions. I felt good with how everything went at the end of the day, but somehow I failed at *both* coding and design. Interesting... whatever.
Two of my friends--whom of which I mentored at my last company--were able to get offers at Facebook (same office, same interview process) but they were *not* the best coders nor the top performers, so if you get turned down at Facebook, don't take it seriously. They say there is some "randomness" in the interview, but it just seems strange that common sense didn't kick anywhere to question the obvious, or just the fact I was interviewed by a few people with only 5 years experience. Smart, but inexperienced (and somewhat arrogant) wanting to judge you with entry level coding questions.
Half of the people that interviewed me didn't go through the interview process themselves. They were brought in by acquisitions. Specifically for a product that isn't doing very well right now.
I was excited about the idea of working there initially, but after the interview, I wasn't so sure anyway. They do try to put a lot of emphasis on finding great developers, but many of the folks who interviewed me mentioned the codebase was a mess (probably from writing code so quickly and not thinking through it) And their open office (no cubes, no walls, just wires and computers everywhere) is a bit distracting. Not something genuinely appreciated by the people working there who used to have their own office. When you need to focus and get quality work done, there are only so many dedicated rooms to use and they're usually taken.
Coupled with the fact that they're Seattle office is located in one of the worst traffic areas, I wasn't so sure I would have accepted anyway.
Interview questions [1]
Question 1
Signed an NDA but just check the resources given to you by the recruiter
I applied through a recruiter. The process took 1 week. I interviewed at Meta (Palo Alto, CA) in Aug 2013
Interview
Process was extremely straight forward and everyone I dealt with was very friendly. I did a phone screen and then was flown to HQ to meet with engineers to have my skills tested.
I applied through an employee referral. The process took 2 months. I interviewed at Meta (Kirkland, WA) in Aug 2015
Interview
Asked a friend to refer me. Was contacted by a recruiter within two days. Quickly scheduled a tech-screen (essentially mini-ninja interview). After that came the on-site loop.
2 ninja, 2 pirate and 1 jedi interviews. Can't share specific questions, but plenty of other people did already. Unlike Google (interviewed with them also), Facebook seems to have a smaller question pool as one of the system design questions I got I've also seen on Glassdoor before.
I recommend going through the information recruiters provide for interview preparation. Since Google and Facebook use very similar processes, "Stevey's Blog Rants: Get that job at Google" post is also quite relevant and useful. Know your data-structures, algorithms, practice solving problems for a few weeks and you should be in good shape.
For system design questions, you will be asked to design Facebook-scale systems. Think data way beyond the scope of one machine, billions of items, thousands of requests per second. Hands on experience with such systems is of course "the king". In the absence of that - study distributed NoSQL systems, MapReduce and similar things and you should be in good shape.
Overall I was very happy with the on-site interviews and the level of support Facebook recruiters and engineers provided me. This was probably the best interview experience that I've had.
Having a competing offer handy will surely help you negotiate better compensation. Facebook seems to have an awesome culture. Deciding to reject their very generous offer for another one wasn't an easy call. One really can't go wrong by joining Facebook.
Facebook is the only company that I know that provides interview feedback. Regardless whether you pass or not I recommend asking for it as it will help you get better.
Interview questions [1]
Question 1
Data-structures, sorting, Big-O notation, large system design.