Three 45-minute phone interviews. A positive review from each qualified me for the next.
First interview was a basic-technical one with their recruiter: port numbers, subnet math, Linux commands.
Second was a Collabedit programming interview. An engineer had me build a performance monitoring script, adding more features and improving efficiency as we went.
Third was a systems interview. Heavy operating systems theory was involved. This engineer's confessed style was improvisational, probing areas of knowledge my previous answers had laid claim to. It helped to know enough systems stuff, and to be interested enough in it, to make the conversation span the whole interview time.
I passed the third phone interview, so Facebook flew me to their campus for a day of on-site interviews. I had to sign an NDA covering my experiences on that day. What I can say is that I thought it went at least as well as my phone interviews, yet I got a rejection email a week later.