Engineers are attracted to the company because it gives developers a chance to start making an impact on day one.
The company has 13,000 employees across 64 offices, and continues to scale in size and ambition. If you'd like to join Facebook's engineering team, you should start preparing now.
Job applicants will first have a phone interview with a recruiter to assess experience and interest and then have a second phone interview with an engineer that focuses on more technical questions. If those go well, the candidate will be invited to the office they're applying to, where they'll have a tour and then a coding interview.
An engineer will present the applicant with a question and then watch them work it out with a dry erase marker on a white board.
Sound intimidating? Don't worry. Software engineer Dwayne Reeves, who has worked at Facebook for four years and has helped develop its internal Hack language as well as enhance its privacy system, has shared his top tips to ace this final-stage interview in a video.
Here's what you'll need to keep in mind when you go in for your coding interview.
1. Ask questions to clarify the problem.
You will be presented with a scenario, such as that you're working on an auto-correct feature and want to take care of common mistypings of the word "hello." You'll then need to write a function that, given a string, returns all of the nonsense words someone may type.
It's important to realize that the exercise takes place on a white board in front of the interviewer, rather than in front of a computer screen by yourself, because it's meant to be interactive.
"A common mistake people make during technical interviews is thinking that asking questions is bad," Reeves said. "In fact, this couldn't be further from the truth." Scenarios will often be ambiguous, and you're encouraged to clarify as much as possible before you begin.
2. Explain your approach before writing anything.
"Remember to think out loud," Reeves said. "How you arrive at an answer is as important as the final result."
Before you start writing your answer to the problem, explain your approach so your interviewer knows what you're trying to accomplish.
3. Use the programming language you know best.
You'll generally be able to use any language you feel most comfortable in, Reeves said. The interviewer will be focusing on your reasoning abilities and attention to detail.
4. Check your answer with an example before clearing it for approval.
Plug a sample entry into your code and follow it through your commands."As long as you find your bug before your interviewer does, you're in good shape," Reeves said.
5. Be ready to explain how your code would function in reality.
If there are no bugs, your interviewer will ask, "How would you go about testing this?"
Reeves said he expects all candidates to undergo edge case analysis, in which they pick extreme cases and see if the code would still work given those circumstances.
6. Propose alternate solutions.
Your interviewer will ask you to analyze your code's time and space complexity, and then ask you to explain its pros and cons, as compared to alternate solutions that exist.
They want to see that you can envision multiple ways to tackle a problem and then decide which you consider best.
7. Ask questions about the company.
Even if you aced the problem, your interviewer will consider it a red flag if you've got nothing else to say. Prepare questions about Facebook's culture, work flow, and mission.
Reeves said that when he's talking to a candidate after they wrap up the coding exercise, he's "looking to see what motivates them and why they are interested in joining Facebook," because the company's hiring philosophy is that talent is a requirement to be considered, but genuine passion for the company is what gets you a job.
Here's Reeves' full video, where he breaks down the example problem in further detail:
How to Crush Your Coding InterviewPosted by Facebook Engineering on Thursday, October 30, 2014