Okay. Time for the onsite.
After the phone interviews went well, the recruiter scheduled a call with me to discuss dates and preparation strategies. The call was insanely helpful and it actually felt like that he wanted me to succeed. I decided to schedule the onsite a month from my phone interviews hoping this would give me enough time to prepare (while not lazing at work).
The first thing I started doing after the call was scouring Quora, Medium, personal blogs and articles about interviews at Facebook. I found Interviewing with Facebook — Onsite Part 1 – Ted Bendixson – Medium and I just got a developer job at Facebook. Here’s how I prepped for my interviews. to be beneficial guides. I also started creating a list of potential questions that have been asked (with great help from Glassdoor and Leetcode). I knew Data Structures and Algorithms will occupy majority of my prep time but talking to the recruiter made me realize that System Design knowledge was crucial as well.
- Leetcode Premium
- Mock Interviews on Pramp and other sites
- Elements of Programming Interviews in Python
- Cracking the Coding Interview
- Mike Ash’s blog to brush up on Obj-C and Foundation internals
- Introduction to Algorithms (referred it a couple of times for BT and Graphs)
- Youtube Videos for System Design (recommend this one)
Everyday as soon I as got back from work, I started doing 3 things:
- Revising questions I did the previous night
- Implementing a data-structure or a CS-101 algorithm from scratch on my own
- Solving 2-3 questions from EPI or Leetcode
I tried to follow this routine religiously up until the week of my interview. I also tried to do 2-3 mock interviews every week (which helped me immensely to get into the interview groove). Since I was going to interview for an iOS role, I also spent significant time during the week to focus on basic and advanced iOS, Objective-C and Swift topics.
Data Structures and Algorithms I covered:
- String Manipulation and Linked Lists
- Arrays, Sets and Maps
- Stack, Queues, Deque and Priority Queues
- Binary Tree, Binary Search Tree and Heaps
- Graphs and Tries
- Sorting Algorithms
- Graph and Tree Traversal Algorithms
- Dynamic Programming
The approach of simultaneously working on Leetcode and DS/Algorithm really helped solidify my understanding of the trade-offs.
The Day Before
I made sure to print all questions I solved on Leetcode so that I have enough reading material for my flights. After reaching my hotel, I ordered light snacks, did some more prep and decided to sleep-in early at about 9 PM (thinking I would be up at 3 AM and do one final study sprint before the interview).
I did do the final hard-sprint (~6 1/2 hours woooof), had my breakfast and called for an Uber at around 9:45 AM. You always end up at a hotel close to the campus so traffic isn’t that much of a worry.
Leaving the hotel, my nerves were on the edge because they could literally ask me anything. You're going to have FB engineers watch you write gibberish code on a whiteboard. Not nerve-wracking at all /s.
In total, I had 5 arounds with each being around 45 mins. All of these rounds focused on a combination of data structures, algorithms and my iOS know-how. My lunch was at Biryani where I remember having a Biryani (doh!) with some Lassi. I, unfortunately, can’t go into much details about questions. Safe to say they were grueling and by the end, my mind was sapped of all my brain juice. The last interviewer dropped me off to the lobby and I handed over my visitor badge to Security.
Let me tell you that calling an Uber after a mind-numbing month of prep and ~5 hours of interviews has got to be one of the best feelings ever.
Once I started introspecting my performance, I was 15% hopeful that I was going to receive an offer. I did well in all interviews but I still felt I could have done 10x better. Looking back, the interview questions and the interviewers were perfectly reasonable. This was a great interviewing experience (in my biased opinion of-course)
I was told I’ll hear feedback within a week. I gave my interview on a Friday and actually heard back from the recruiter on the next Tuesday. Great turnaround time! What boggled me was the amazingly detailed feedback. The recruiter walked me through all my rounds listing the things I did well and things that I could have done better. This level of feedback was unprecedented for me. The recruiter said this feedback was going to be presented to the hiring committee who’ll make the final hiring decision. I was told to wait 24 hours. At this point, I was 30% hopeful of getting an offer.
Flash forward to Wednesday. The time was 2:45 PM and I was at work. I see a missed call from a California number on my cell made at around 1 PM. Almost immediately, I give it a dial back but nobody picks up. I check my personal email and I see a message from my recruiter asking for a good time to call on Thursday to discuss the final hiring decision. We decide on a time and the recruiter ends the email with this cryptic message:
What did he mean by “What life would be living in California working at Facebook?”. I was 90% hopeful by this time (my imposter syndrome wouldn’t let me be 100% confident). The next day rolled around and I wasn’t half-surprised when I was told that I’ll be getting an offer. This was a stressful last couple of months with a happy ending.
Ending this one with some tips:
- Inform the interviewer of the brute force solution immediately (this way they’ll at least know that you’re not stupid). After this, try and optimize the run-time or space-time. This’ll let the interviewer know about your thought-process and critical thinking abilities.
- Don’t worry if you’re completely stumped by a question. Be calm, clarify the question and try and see if you can come up with a brute-force solution at-least
- Use helper methods stubs and tell the interviewer that you’ll come back to these later-on.
- Don’t be afraid to show that you’re human and you have shortcomings. BS-ing doesn’t come across as a good trait. You don’t need to excel in all the rounds to get an offer!
- Don’t over-eat at lunch, otherwise you’ll drowsy (in which case ask for a toilet break and splash some water on your face)
- You will fail. You will mess-up. Your phone interviews won’t go well. You’ll bomb at white-boarding. Don’t be afraid. Failure leads to success.