Caution - Long post
Total Exp - 10 years
As the title states, I failed my Facebook and Google interviews, but landed an offer from Paypal.
So it all began with COVID-19 hitting India. Let's start -
Recruiter from Facebook reached out, and I decided to give it a shot.
I didn't have a great preparation under my belt, so I took a couple of weeks time to prepare for my Phone Screening.
Before Phone screening, I solved around 80 LC questions, mostly medium.
Phone Screening - Two LC medium questions. For the first question, I gave the most optimum solution but for the second one I gave a suboptimal solution. Interviewer was friendly.
Got the feedback very next day, that they are inviting me for virtual onsites since the feedback from phone screen was a borderline positive.
ProTip - Make sure you dry run your solution against your custom test cases for browny points in Facebook interviews.
So 3 weeks later and 230 LC questions under my belt I was looking at the Facebook onsite interviews.
Round 1, Behavioral Interview - I already prepared answers for a bunch of behavior questions with STAR strategy. The interviewer was slightly off. Questions were standard. I thought, I answered them pretty well. We had 15 minutes to spare, so decided to go over a programming question. It was a LC medium, and I bombed it, to say the least.
Gave a solution, but in haste, missed quite a few edge cases. So, interview got over, and I was feeling kind of okay, since I assumed how big a deal a DS question can make in a behavioral interview. Turns out, quite a lot :)
ProTip - Try to give as much details as possible in behavioral questions. And don't take this round lightly.
Round 2, Programming Round - 1 LC medium, and 1 LC hard. Nailed both of them. Missed a corner case in LC medium question, but quickly rectified it. This was easily my best interview.
ProTip - If you know the optimal solution, implement it. Facebook cares a lot for optimal solutions.
Round 3, Systems Design - Not a regular system designs question. But a very real world problem. I wouldn't classify this as a hard problem. Had a reasonably fair discussion throughout. Most of the times, I was driving the interaction. Interviewer seemed involved.
ProTip - Discuss trade-offs in details. Drive the interaction. And don't assume.
Round 4, Programming Round - 1 LC hard and 1 LC easy. Struggled a bit on the hard question, but was able to crack it soon. I would say that I had some trouble explaining my solution, but interviewer took the leap of faith and allowed me to code it. Fortunately, I was able to code it well and he seemed happy.
ProTip - Make sure you can explain your solution in plain english. If your explanation is complicated or unsatisfactory, chances are you will end up with incorrect implementation.
So the day ended, and I felt relieved. I didn't have high hopes but I was happy that in my first attempt at interviewing at a FAANG company, I made it to the onsite rounds and did okay-ish.
Next day, I received an email, that unfortunately, I didn't meet the bar and they will not be moving ahead with my candidature. Recruiter setup a call with me to provide detailed feedback about my rounds.
Gist of thee feedback -
Behavioral Round - Did not deep dive into scenarios. Answers were not satisfactory. Could not come up with a correct solution to the coding problem. No Hire
Programming Round - Strong problem solving and coding skills. Good communication skills. Strong Hire
System Design Round - Reasonably good solution design but does not meets expectation. Drove the interaction well. Weak Hire
Programming Round - Good coding skills. Needs improvement on communication skills. Hire
Overall, a great experience. Recruiter is a fabulous guy. He's still in touch.
Recruiter from Google reached out to check, if I am open to interviewing at Google. I decided to take up the challenge.
She scheduled my phone screening and kept tabs on my preparation.
She asked me to focus on the LC Medium and Hard problems, and make sure, I am able to crack them within 20 mins at max.
Phone Screening - With the inputs from recruiter, I was expecting a few data structure/algorithms problems. Turns out, Google screening can be slightly different from what you're expecting. Recruiter deep dived into OOPS principles, language structs and CS fundamentals. I managed to handle all of that well. We had another 15 mins to go, so he gave an open ended design question. I asked multiple clarification questions and came up with a decent solution.
ProTip - Don't go into the interview expecting certain type of questions. Be good with CS fundamentals and have command over the programming language of your choice.
A week later, I got the feedback, that they're happy to invite me for virtual onsite rounds.
My candidature was then transferred to a local recruiter (India). We discussed about the next rounds, and decided upon a date 3 weeks later.
Google unlike Facebook, does not conduct all the interviews on a single day. Also, I am not sure, if this a new normal or not, but Google conducts 3 programming rounds, and only if you do reasonably well in them, you will have systems design and googly-ness rounds.
So it was 3 programming rounds for me, on alternate nights. Btw, till now I had cracked down more than 300 LC questions.
Round 1, Programming - A question that I had not seen on LC. I would rate it as medium. I came up with a reasonable solution. Did not communicate properly which sort order I had chosen and that caused a bit of confusion. With some time left, interviewer tweaked the problem for scale. We discussed a few approaches, but I could not come up with a solution that could potentially be optimal. I did not ace this round, especially failing to address the scaling part.
ProTip - Don't relax if you are able to solve the first problem optimally. In general first problem just sets the base for the subsequent question. Try to come up with a reasonable approach for the more difficult one.
Next morning, I received the call from my recruiter to discuss the feedback of my first round, so that I can do better in remaining rounds.
I was rated an average of 2.7/5, since I could not come up with a solution for the second problem.
Round 2, Programming - Again a question that I had not seen on LC. Medium level. Gave an optimal solution. Communicated my solution well. This time, I was looking forward to the follow-up discussion. It was more around concurrency. I think I handled that nicely. Did fairly well in this round.
ProTip - Again, have solid command over CS fundamentals. Google wants smart engineers.
Feedback - Received 5/5. Did extremely well in this round. Reasoning was rated exceptional.
Round 3, Programming - By this round, I had fair understanding of what to expect.
I would rate this problem as a Hard. Again, never seen this problem on LC. So I narrowed down the problem for a subset, and came up with a solution and the interviewer seemed satisfied. However, when more constraints were put in, it started going downhill for me. For a brief moment, pressure got to me, and I was frozen. Recovered from it and started working on the problem again. Unfortunately we ran out of time, and I could not come up with a solution.
ProTip - Handling pressure plays a key role in interviews. If possible make your preparation time bound. It will definitely help.
So, with bombing this round, I wasn't hopeful of moving ahead to the next rounds.
A week later, recruiter called and told me that my round 3 performance wasn't great and unfortunately they will not be moving forward.
Great learning experience. I will come back stronger next time!
Alright, so lastly Paypal recruiter got in touch. And I was asked to go through an online screening test.
3 data structures problems on HackerRank. Could be classified from Easy to Medium level. 90 minutes to solve them. Leetcoding helped big time here. I was able to crack all of them pretty easily.
Fastforward 3 days, and I was invited for virtual onsites.
Process is pretty straightforward - 2 Programming Rounds, 1 Systems Design Round, and 1 Hiring Manager Round.
Round 1, Programming - LC medium problem. Explained the approach and came up with an optimal solution pretty quickly. Interviewer was happy with the solution. We then discussed about the projects I worked on. Decent discussion.
Round 2, Systems Design - Not seen before systems design problem. Focus was more on Low Level design. Did pretty well in this round. A follow-up was to put this systems design solution to an already existing rudimentary solution. Basically, what all features can be stripped from this new solution to work well in an old setup. Had a good discussion. Went pretty well.
Round 3, Programming - This round was kind of a bar raiser round. It had a mix of multiple data structure problems and a design problem. Also the interview went on at a rapid pace. So two of the data structure problems were of Medium level LC problems. Haven't seen them. But was able to crack them both with some minor inputs. Design problem was fairly straightforward. I have reasonable experience in designing micro-services, so came up with a decent solution. We ran out of time. Overall, slightly draining experience due to the pace of the interview, but satisfactory.
Round 4, Systems Design - This was the easiest of the lot. Just a cultual fit kind of interview. Talked about my current projects and aspirations etc.
After the rounds, I was feeling pretty confident. And was hopeful of landing an offer.
Feedback - Here comes the interesting part. Recruiter ghosted me for good 3 weeks or so. And I gave up after a point.
2 more weeks go by, and another recruiter from Paypal contacts me. He explained that my feedback was great, but the position I interviewed for, was filled. But they have another opening, and would like to proceed with my candidacy.
However, I have to undergo two more Programming rounds with the new team.
Round 5, Programming - LC Hard problem. I struggled in the beginning. Interviewer helped me by narrowing the problem statement and then I came up with an optimal solution. Then there was a follow-up, which I was able to tackle easily. Overall, a good interview experience.
Round 6, Programming - LC Hard problem. Came up with a naive solution. Enhanced it with DFS but still time complexity didn't improve. Worked more on the solution and finally came up with an optimal solution. We ran out of time, but interviewer was kind to stay back for good 10 more minutes so that I can finish up coding optimal solution.
Feedback - Recruiter reverted with the positive feedback. T25 is the level. They're now working on the numbers.
This has been my journey.
Thank you to the LC community. I can see a definite change in my problem solving skills.
I have a question for the LC community. I am slightly confused if I should take the Paypal offer, or keep preparing for another year and stay back at my current organization? My current organization is great, but lately I have not been liking the work that I am doing over here.
I look forward to your responses.