A recruiter contacted me in November, but I was busy and got back to her during mid-February with an updated resume. The recruiter then notified me they would like to move forward. The process is simple: at first there will be a technical interview for 45 minutes. If you ace that, then there will be another technical interview for 45 minutes. At this moment, if they think they are not sure, they sometimes take another technical interview.
For me, it was two interviews (both phone). They were very technical, where you have to write code in coderpad. In both of the interviews, I was asked two questions each (can't disucss the questions here as I've signed an NDA). Both of my interviewers were very friendly, I felt like chatting with my friends and discussing some tricky problems. It was a very nice experience. I also think in addition to your solution, they also care about: (1) your communication skill (interacting with the interviewer); (2) your approach and thought process, i.e., how you arrived at the solution; (3) cleanliness and quality of your written code.
Finally, as I am a PhD student, they had to match me with a specific team. So I had an additional team/host matching interview. It was less of an interview, and more of a chat about possible projects in the team that might suit my expertise/skill/interests. The host was very nice and friendly. The recruiter was very fast and professional as I expect from a company like Facebook. Although it was March (late for hiring summer interns), the whole process completed within a month!