When I interviewed with Facebook in late 2016, I had to go through two phone coding interviews. I want to sketch how my preparation process looked in the end. I want to take this chance to thank my recruiter who was really helpful in providing me resources to prepare for the interviews. You really get the feeling that the company wants you to succeed.
Preparing for your Software Engineering Interview at Facebook and What to Expect During the Recruiting Process really give a good overview on what to expect at the interview. Of course, the advice you’ll find there is quite specific to Facebook, but there are some general tips given that are useful for any coding interview. I’d like to highlight “Think out loud” & “Share your reasoning” - it is really key that your interviewer understands how you think and why you did something the way you did it. Saying nothing for five minutes and then sketching the perfect solution won’t give you anything. In the job, you need to be able to communicate effectively with your peers to solve problems together.
It is really important that you practice by solving a lot of different coding questions. I mainly used the following resources:
- Cracking the Coding Interview. This is the book to go for! I worked through most of the questions, just leaving out parts like databases and threads. As you won’t be able to use an IDE but rather an online tool like CoderPad without auto-suggest features, I used repl.it to simulate my coding interview environment. Choose the language you’re going to use at your interview and practice!
- HackerRank also offers a lot of coding questions - directly with their own coding environment. As I mostly used Cracking the Coding Interview, I just tried out some of the problems here.
- Some people post the interview questions they were asked on Glassdoor, it won’t hurt doing some research there.
One thing that helped me during the interviews was having prepared a reference sheet ("cheat sheet") with some notes about the company, the most important facts about me, my interests and goals, important methods that could be useful for implementing the coding solution, big-O notation, and questions to the interviewer. Don’t be afraid of bringing this sheet to the interview & be open about using it: You don’t need to know everything by heart, it is much more important that you are able to form and communicate your own thoughts. In the end, you likely won’t need it as the time will fly, but it gives you more security.
After the coding part, you will have time to ask your questions to the interviewer. Use this time! This is your chance to ask about e.g. the projects the interviewer is currently working on/has worked on, his advice for projects to pursue in case you would get the job, the company culture, working hours, travelling, the upcoming interview process etc. It is a very bad sign if you haven’t gotten any questions ready!
Good look with your interview!
- Linux (Debian/Ubuntu): Finding out whether a package is installed
- Windows: Adding programs to autostart
- Hosts file: What is it, why is it useful & how to edit it?
- Vagrant & VirtualBox shared folders: Getting symlinks to work on a Windows host
- SSH: Finding out ECDSA key fingerprint (both server-side & client-side)
- PowerPoint: Inserting Source Code with Syntax Highlighting
- Recommendation: Deep dive guide on web server fundamentals
- Where are globally-installed Go tools located & how to execute them (when using Go similarly to 'npm install -g')
- Compilation of modern CLI Tools (Unix, Shell, Terminal)
- (Linux) file system basics