Google (L4) Bangalore | Facebook (E5) London | Offer | Reject
Anonymous User
7979

YOE: 9
Location: India

Note: I will not be sharing the exact questions.

Facebook:
Recruiter reached out via LinkedIn, told me about opportunities in the London office. I instantly agreed, as it was lock-down and I had time to prepare. Scheduled a telephonic round in 2-3 weeks time.

Telephonic:

Two questions: first easy, second medium.
I quickly explained my approach to the solution and the interviewer agreed to go ahead with implementation. I was very verbose in explaining the code as well as testing as well as the time-complexity. He gave few followup-questions on how special cases would affect the complexity etc.
Second: It was medium, trie based. Just 15-20 mins were left. Interviewer skipped the setup part and directly went on the main function. I quickly explained and side by side started writing the solution. After a few self-fixes, I arrived at the correct solution and we quickly tested it and it went pretty well overall.

Received feedback after a day or two which was a solid score and moved on to onsite.

Took 4-5 weeks of time to prepare for onsite. All interviews were back to back on the same day.

Coding: Two mediums according to LC. Second was a little hard. One was based on random numbers and the other on composite data structure. First one was a breeze [See tip]. We had multiple discussions on the second question around the best approach to solve that question. Finally I went with what I had in mind and implemented it just in time. The interviewer did not agree initially but he said let’s make it work anyways. It was not about time-complexity. It was about trade-off on which state to put the complexity. Overall it went well.

Coding: Two mediums again. First on the linked list. So here is the problem with virtual interviews. Without board/pen/paper it is hard to visualize the approach and work towards the solution which includes structures like linked list/tree/graphs etc. So I struggled with it because I was just imagining how the pointers would break and make according to the code. Lost a lot of time without full-proof testing. Second was around DP. Did it but left a few bugs. Answered a few follow ups based on Trie, again no-board/paper no-assertive answers. Overall it went OK. All answers were optimized in terms of complexity but not bug-free.

System Design: It was one of the questions from the list of Facebook’s System Design Questions . I solved the core of the problem very quickly and we were discussing the pros and cons of the approaches I explained earlier. It was a nice discussion. There was some feedback, however, on the data model being used in REST api. I did not really give it a thought at the time of the interview. I feel I could have corrected it if I could know it is being scrutinized. Positive feedback was that I drove the discussion throughout the interview.

Behavioural: Now comes the most pathetic round. The moment I started, I felt I could not connect with the interviewer. I did not feel welcomed, like in other rounds. There was no smile-back from the other side, which ideally should not affect my ability to answer, however it did. Communication was hurt. I explained a few situational questions which were recent and genuine, however, they lacked signals that the Interviewer was looking for.
I know this is the round which is taken for granted most of the time, but it became the most problematic round.
Feedback was not enough signals on this round. Scheduled a follow up, everything went well this time, at least according to me, however, my answers did not have very complex projects or complex situations that I influenced etc. I was like, on one hand: Answers should be recent like one-two years, and secondly: the situations should be complex. So all in all, being genuine is not the only thing needed for these kinds of interviews[See Tip]

Rejected. Overall positive, technically good however behavioral rounds gave signals for E4 and not E5.

Tips for Facebook:

  • Facebook has a limited set of coding questions which are highly influenced by LC or sometimes direct copy of LC.
  • Do go through “Random” number based problems on LC for facebook. These questions are not solvable in the first go, in my opinion, if you have not seen any such problem earlier.
  • Solving two questions, is something they expect in every coding round. Keep that in mind while structuring your approach to present your solution.
  • Behavioural rounds are very important. Think about complex situations and complex projects that you have been part of. Improvise a bit if need be. It is not possible for everyone to be genuine as well as emit out such specific signals all the time.

Google:

It was my second attempt at Google. Last time reached till hiring manager. So, the initial telephonic round was skipped and a virtual onsite was set up directly. It was on different days and the first three were coding followed by system design and behavioural.

Coding 1: Easy/Medium LC. Mostly focussed on demonstrating the most appropriate data structures used and little optimization in terms of structuring the code. The big O was not optimized but otherwise as well there were few opportunities to improvise. It was the easiest of all the coding rounds but being the first round made it medium level.
Tip: There is always something to improve even if the algorithm’s big O can be optimized. There is some word for it, in the LC community which I don’t remember right now. Something on the lines of prudent optimization.

Coding 2: Medium/Hard LC. Dynamic Programming based question. Explained my approach which I thought was suboptimal. However, the interviewer hinted towards implementing at and optimizing later. I coded it in like 10-15 mins and there was 5 mins left. I tried to discuss how we can optimize but I, myself, was not very convinced. Interviewer hinted that it is the most optimized version anyways. It was a big relief at the end.
It was not a trick question but a very customized question which almost had a brute-force solution.
Tip: Try to gather feedback on your approach from the interviewer. Keep talking about what you think and why you think.

Coding 3: Hard LC. Based on Tree/graphs. Something on the lines of the shortest path. It was something similar to what I have seen on LC. It had a DFS/BFS solution keeping track of the max length of the path (weighted). It did not appear too hard as I had practiced a lot of graph/tree based questions. There was a follow up on this which I could just explain and not implement. Anyways, it was not easy to implement as the whole algo would change from search to Dijkstra.
Tip: Use a white board to explain your solution/approach, really helps in connecting with the interviewer and concretizing your thoughts.

System Design: It was more of a DS question with a bit of design involved. I wrote most of the code. Interviewer did not expect me to start with design so the whole discussion moved to implementing the algorithmic part of the solution. However the solution was suboptimal and we discussed improving the time complexity. However, there was a system design aspect of the solution which I just touched upon and not went deeper with. I could have given it a lot more thought if the interviewer nudged me towards it. However, the algo part was also an interesting part where we had good discussion. Overall, this was my weakest interview but the feedback was OK (not bad).

Behavioural: I was concerned about it a lot after my experience with FB around it. However, the whole interview was based on a hypothetical situation about handling cross-team individual issues. The interviewer went too ahead about a cross-team peer big time A-hole. I had to come up with various steps I could take to handle him.
Feedback was good with no red flags.
Tip: Never get irritated. Your answers should be constructive and understanding and not blaming or escalating.

Recruiter was very swift in providing the feedback. Had a team match call within 10 days after my last interview which also went well. Got HC approved for L4 within next week and received the offer letter in 2 days after that. I know I should have fought for L5 but my system design did not go that great plus I was really fatigued after so many interviews and thought it to be too greedy to show any tantrums at this stage.

Positive experience overall.
Google Specific Tips:

  • Do not expect ‘already seen’ questions in the interviews.
  • Timing is not a big challenge, so focus on the process and explaining the solution.
  • Prepare wholistically on why certain algos fit where.
  • Practice a lot of dynamic programming questions. It is something which, I believe, really improves with practice.
  • Do not look out for tricks to solve any question. Most of the questions are just about applying straightforward logic. If at all there is, the interviewer might hint towards it.

Edit:
I know that choosing L4 at 9 YOE sounds like a compromise, which it actually is to some extent. However there are various factors at play:

  1. Currently in FAANG or not: I was not.
  2. Ever had FAANG experience: No
  3. Currently, are you doing great in terms of kind of work you are getting or things you are learning or scale you are handling: I was not
  4. What college background you have: I am from tier 3
  5. Do you really feel comfortable taking on big responsibility straightaway ?: I did not feel like it because I was actually getting rusted in my current company.
  6. How much do you care about the boost to your brand value after associating with FAANG ?: I did care about it to be honest.
  7. Last but not the least: How much confidence do you have that you would crack L5 next time if you let it go away this time: I really feel it is probable enough for one question/interviewer to fuck your whole attempt, no matter how good you are prepared.

Also, it was my second attempt at Google and I did not want to wait for one more year.

Hope these are valid considerations for choosing L4 at Google with 9 YOE.

Comments (24)