Facebook engineer Carlos Bueno posted a note to the official Facebook Engineering page detailing exactly how one should prep for an interview there.He admits that an interview for a technical job is difficult for both the interviewer and candidate.
Skills on your resume are fair game. If you say you’re an “expert in X,” Facebook will try to schedule you with a proven expert in that subject, so be prepared. If you are not, leave it off your resume.
The interviewers would rather have a short list of the things a candidate is awesome at than pages of everything you’ve ever done.
Keep reading for an inside look at what Facebook technical interviewers are looking for.
The first step is typically a 45-minute talk with a candidate.
The idea is to slot candidates with someone in their general area of expertise. Interviewers will ask the candidate about interesting things from their resume, skills, motivation, interests, etc.
But the bulk of the time is spent on coding exercises. The interviewer will send the candidate a link where he or she is asked to solve some programming problems.
Tip: 'For phone screens, make sure you are in a quiet place with a good internet connection. Headphones are handy. I forgot this during my first interview with Facebook, and had to type code while keeping the phone jammed between shoulder and ear, like a nerdy T-Rex.'
A Facebook 'loop' is several interviews back to back on the same day, usually with a lunch break. Instead of coding in a text editor, the candidate will likely be asked to write code on a whiteboard.
During this step there will be time to ask the interviewer anything you want.
Before laying out a series of desirable traits in potential hires, Bueno offers this caveat: 'These traits are not all we look for, nor all we care about. But are some of the things that interviewers base their decisions on.'
Facebook is also looking for a candidate's ability to understand and explain complex ideas.
As with most employers, Facebook is looking for a healthy level of enthusiasm, curiosity and motivation.
Bueno notes, 'Facebook has a ridiculous ratio of users to engineers and ship code five days a week.'
Facebook wants people who know how to make a large impact, individuals who can move quickly, make bold choices, and be transparent about what they are doing.
Facebook needs many kinds of specialists, but it is also looking for people who can fill other roles in a pinch.
Bueno says, 'This means understanding the 'stack' above and below a candidates area of expertise.'
Candidates get bonus points for having multiple areas of expertise. It's not unusual for someone at Facebook to work on machine learning, then move on to Web performance, build and maintain a new backend tool, then spend a year on a product feature like Photos.
Tip: 'A good skill to cultivate is the ability to change your point of view at will. Sometimes you'll encounter a problem that seems like it should have an elegant solution, but in fact must be brute-forced or approximated. If you're stuck on a problem, try to think of any way to solve it, no matter how clumsy or inefficient. Then improve on it. Getting something that works is better than nothing.'
Bueno asks, 'Can you arrive at an answer in the face of unusual constraints?'
Facebook wants to see how well candidates can visualise the entire problem and solution space.
It also wants to see how much you've thought about Facebook in particular and some of the unique problems the company faces.
How would you architect a world-wide video distribution system? Or Facebook chat?
Tip: 'Hard training makes for an easy battle. Brush up on techniques that you may not use every day, but are very useful when you need them: recursion, graph theory, tree traversal, combinatorial problems, etc.'
Facebook says it doesn't ask puzzle-type questions, where you need to know a trick.
The coding questions you get asked may sound contrived. This is because they are contrived, in the sense of being designed for a special purpose. They have to be simple enough to explain in a few minutes and solvable in 10 to 30 minutes. But they must also require knowledge, skill, and concentration to solve.
Good coding problems are fractal in nature. They can be extended arbitrarily to gauge the depth of your knowledge. For example, you might be asked to solve a problem any way you want. Then you'll be asked to solve it again in constant space or sub-linear time.
Incidentally, the ability to give total focus to a problem, no matter how basic it sounds at first, is something Facebook pays close attention to. How you attack a problem is at least as important as the answer.
Facebook will ask you to do a *lot* of coding during the interview process, because programming ability tends to correlate strongly with how well people perform as employees.
Facebook even has a large set of take-home questions. They say It can't hurt to check them out and maybe solve a couple before you even submit your resume.
Tip: 'Another kind of coding question might be parsing some data format or mini-language. Aside from CS nerd-points, these problems exercise your ability to reason about edge cases and handle lots of state in your head,' says Bueno.
Facebookers aren't the only ones with good ideas about how to interview. They incorporate ideas from rivals like Google.
Take your time preparing. Do code katas and practice interviewing with friends. Try solving the interview questions on our site. See our tech talks to get a feel for how we do things and the scale of problems we're trying to solve.
Practice writing code in a simple text editor without syntax highlighting or completion macros. Don't let little surprises throw you off your stride during the interview.
Impress Facebook with your mastery of whatever language you're best at. Don't use a language you know less well because it's trendy or you think it will please the interviewer.This is a very common pitfall.
Bueno says, 'Ask questions! Take advantage of the time to ask your interviewer about working life, bootcamp, the interview process itself, how the company is organised, or really anything at all. I recently spent a few minutes at the end of an interview chatting about power efficiency in our datacenters. The candidate was genuinely curious and I did my best to answer. Always remember that you are interviewing us as much as the other way around.'
Above all, relax! And if you are on the fence about applying to Facebook, do it.
Bueno says he's worked at companies of all kinds, from two-person startups to billion-dollar government projects. Facebook has the resources and leverage of a large company, but as an engineer you have freedom and responsibility far beyond the typical.
Also, give feedback. Facebook regularly survey candidates about the interview process and it takes feedback seriously.