Did a phone screen, then a full-day interview loop, then was asked to do *another* phone screen. I had a great on-site (probably one of the best of my career; I got the correct answer to *every question* with time to spare), but it didn't matter: second phone screen was a disaster. The call was delayed due to a technical problem, the guy barely spoke english, and he was annoyed from the start. I got the DYHQFM early-end-of-interview signal despite writing a correct solution, and was rejected shortly thereafter.
Overall, Facebook's interview process is marginally more humane than the other big players, but just as idiotic and random. Solving the problems and correctly writing them on a whiteboard whilst singing and dancing is insufficient -- if you make *any* mistakes, you will fail. If an interviewer is having a bad day, you will fail. If an interviewer doesn't feel like doing interviews today, you will fail. If someone feels like failing you because you're too old or not wearing a hoodie or they don't like your voice, you will fail.
The recruiters will tell you all sorts of nonsense about how people are looking for "how you think" and that they understand that candidates are nervous and blah, blah blah...these are lies. It's random, and it's biased strongly toward failure. You're probably going to fail, regardless of performance. Basically, if you're demonstrably a really good engineer, flip a coin seven times. If you get all heads, you get a job. Otherwise, you fail.
I'm tired of hearing Facebook complain about not being able to find qualified people. They probably reject more great engineers for random reasons in a single day than most companies see in a year.