A recruiter contacted me. After confirming that I would like to interview for the position, I was asked basic questions around networking, Linux system administration, and programming. A graduating Computer Science student should expect to pass this with little difficulty.
Next was a phone interview for programming. I was asked to take input text and identify the unique words in the text and how many times each word occurred. Edge cases were important as was the performance. Interviewer asked for an analysis of the run-time and memory usage. Any second-year CS student should have no problem completing this in far less than the allocated time.
Next was a phone interview for systems administration. I was given the bare minimum information possible about a system and told to describe how I discover running services and potential issues. As I progressed, the interviewer gave me information reasonable based on my descriptions and identified when I had correctly discovered a problem or possible problem. In investigating problems, it was important to be specific about why the problem was occurring and how to address the issue. When addressing problems, the performance, scalability, and maintainability of the solution was very important. Be prepared to identify how a file system is mounted or if it's local, and be prepared to encounter a single central share mounted by many servers with active read/write activity from them all. This will be difficult for anyone without good real-world Linux systems administration experience.
Next I was flown out to HQ for a series of on-site interviews. A manager spoke to me to gauge my understanding of Facebook and the Production Engineering position (rely on the job description and don't be afraid to ask your recruiter lots of questions!) and to get to know me.
There's another interview about coding and another one for systems administration. Both are along the same lines as the phone interview, but more in-depth and more difficult.
There's a systems design interview, where you'll be given a target and asked to design a scalable and performant system to accomplish the goal. You may be asked to analyze the storage requirements (core and/or persistent) and network requirements of your system.
The last interview type is a networking interview, which is very in-depth and requires extensive knowledge of TCP/IP, UDP/IP, DNS, etc. Essentially, start at a command prompt and think of what happens when you type "telnet www.facebook.com 80" - be prepared to talk about almost every single network-related thing that happens at all seven OSI layers. Know your packet layouts!
Throughout the entire process, my recruiter was always on top of keeping me informed and always answered questions very quickly (I rarely waited even most of a day for a reply). I rarely needed to ask anything about what to expect because she kept me so well informed. Don't worry too much about thinking at Facebook's scale, they understand that very few people have worked on anything even approaching their size and scale. Everyone you deal with will work hard to make things go as smoothly as it can.