-
-
Save oldflame/ec559998e46d2415c76579ee72a93daa to your computer and use it in GitHub Desktop.
• This 45-minute systems interview will focus on responding to real world problems with an unhealthy service, such as a web server or database. The interview will start off at a high level troubleshooting a likely scenario, dig deeper to find the cause and some possible solutions for it. The goal is to probe your knowledge of systems at scale and under load, so keep in mind the challenges of the Facebook environment.
• Depending on how your conversation goes, your interviewer may ask to use CoderPad.
• Some of the questions may be around scalability, so think of solutions that would apply and be effective in our environment.
• Focus on things that might show up in your average Operating Systems class such as tooling, memory management and unix process lifecycle.
• Spend time on a linux system — maybe even install one from scratch. Run Linux as your primary desktop environment for a while to force yourself to learn how it works, even though servers != desktops.
• Brendan Gregg's blog & his book "Systems Performance" may help refresh basic OS material
• What's it like to be a PE at Facebook?
More specifically, linux troubleshooting and debugging. Understanding things like memory, io, cpu, shell, memory etc. would be pretty helpful. Knowing how to actually write a unix shell would also be a good idea. What tools might you use to debug something? On another note, this interview will likely push your boundaries of what you know (and how to implement it).
This interview is all about taking an ambiguous question of how you might build a system and letting you guide the way. Your interviewer will add in constraints when necessary and the idea is to get a simple, workable solution on the board. Things like load and monitoring are things you might consider. What you consider is just as important as to what you don’t. So ask clarifying questions and gather requirements when appropriate.