My Facebook Interview Journey
At the beginning of November 2016, I received this fishy email:
Hello! — from Facebook
My first thoughts were “oh come on, how come the Gmail spam system has not detected this…” (impostor syndrom, I guess?). Then, after double checking the sender’s email, the email content and links, I felt weird, I’ve just received an email from a Facebook HR for a Data Engineer position in London: sweeeeet!
After a couple of emails, we had our first call. My experience with first phone call interviews is that they cannot go wrong, they exist to validate the previous emails exchanged to make sure the position matches the interviewee’s profile.
So, I presented myself and why I chose to specialize in data engineering: to tell stories from raw data and to build scalable systems. Then, she presented the position in London in their “small” data engineering team with 6 people (Nov. 2016), how she found my profile, on LinkedIn, why she contacted me, because of my technical skills and my experience as a technical support engineer, and what will the interview process be.
Shortly after, I received an email to prepare for an SQL and an algorithm (Scala) 45-minute whiteboard interviews via https://coderpad.io/ which will be 3 weeks later.
The email contained a dozen of programming websites from basic to advanced questions about sorting algorithm, complexity, Big O notation, etc. The most helpful was https://www.interviewcake.com/, a paying website that refunds you if you don’t get the job wanted: nice. I invite you to try their first sample interview question on their homepage.
TIGHTFISTED PRO-TIP: if you don’t want to spend hundreds of dollar on this website, you can google the questions and you will find some answers, maybe not the best ones, but enough to put you on tracks to find the answer yourself.
So I started to study almost every nights for 3 weeks after my day job. It was a lot of work, but I’ve enjoyed doing it and I became a better engineer, even if I don’t get the job it was worth it doing it.
The most pleasant thing I learned is how to use a hashtable to see if a 2 elements sum from a list in the most efficient way. I guess I must be a nerd to like this, mustn’t I? haha
I started to feel confident in general algorithm questions and it feels great. I have to admit that I’ve prepared more for the algorithm interview than the SQL interview. I use SQL on a daily basis and always felt at ease using aggregation functions, and JOIN for example.
My interview was on a weekday at 7:30 CET, so I worked that day, and on my way back from work, I met a guy whose car had broken down, he asked for help, I told to him that I was in a hurry and I couldn’t help him. He didn’t believed me and gave me the worst look he could, haha
I started with the SQL interview, and it was with the lead engineering of Instagram, I felt a bit impressed, but after a couple of minutes my heart-rate went back to normal and I was able to read the first SQL question and the 5 tables (sales, user, shop…) with their attributes. The first question was to give an aggregation of the size of the shops by state. I have to admit I felt a bit confused with the SQL tables, but I managed to answer it.
The others questions were about using percentage and the SQL Case statement, I could not remember how to perform such queries, so the interviewer gave me gracefully their syntax. As, I’ve just discovered a new syntax, I gave, with the biggest difficulties, the answers, but I knew I was done. On the other hand, trust me, now I can use a SQL Case Statement with a percentage, so I will be ready for the next one I guess.
One hour after, I had my other algorithm interview, in Scala. The interviewer was friendly, I’ve enjoyed discussing with him. Then, we started the interview on Coderpad. I had prepared a lot for it, and I knew 4 out of the 5 exercises proposed (find the smallest absolute difference between two numbers in a list, find the median in an array…). I gave efficient answers to most of them, and quickly. I used the brute-force approach for the last question, but it was OK. Of course, you start finding better answers after you’ve finished your interview, I had the feeling that my brain stopped working for a while. I was proud of what I had done, though.
A few days later, I received an email from the HR, and they didn’t want to continue the hiring process for the Data engineering position… But, they offered me to continue it for a software engineering one. Cool. I am going to be a Software engineer at Facebook 8)
After a couple of days, I received an email for another HR that told me that they were looking for more senior engineer profiles.
As a 26 year old engineer, with at least 6 years of programming for personal projects, and 3 professional years of experience I know that age and experiences matter, no doubt, but what matters the most is the person you are, and how good you can be with your colleagues, by good I mean: if you are willing to write tests, write readable documentation, design schemas, share, you can bring more of some senior engineers and that’s also will make you pass the bus test.
I should be recontacted next year, so we’ll see !
Thanks for reading! I am currently looking for a new challenge in data, contact me, we’ll chat !
From Amazon interview process :
The most important advice at this point — do NOT start solving problems until you fully understand them.
We want to evaluate whether the candidate will bring an uplifting energy to the team and we are specifically on the lookout for red flags in culture fit.