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 performance. The 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 would discover running services and potential issues. As I progressed, the interviewer provided information 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 were very important. Be prepared to identify how a file system is mounted, or if it's local. 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 they can.
The entire networking interview was very difficult. I was not expecting the amount of in-depth knowledge expected for that interview.
The following metrics were computed from 155 interview experiences for the Meta Production Engineer role in United States.
Meta's interview process for their Production Engineer roles in the United States is very selective, failing most engineers who go through it.
Candidates reported having very good feelings for Meta's Production Engineer interview process in United States.