Google L5 | Twitter SSE | LinkedIn SSE | FB E5 | Uber SSE | MS SSE
Anonymous User
4451

Finally, it's my time to contribute something back to this community. I hope my interview experience helps and motivates others who are preparing or in the process of interviewing. Keeping it anonymous as I have not yet informed my current company.

Note : I will not share exact questions for any rounds obviously because of NDA, I will add high-level conceptual information only.

Timeline :

  • First application/connecting with a recruiter: July last week.
  • Offer accepted: October 10th.

Work ex
Total 7 years. 3 years in India, 4 in the US after doing MS in CS.

Interview location : Bay Area

Interview date : August 2021 - September 2021

Preparation time

  • Did Leetcode passively from March to May i.e. approx 5 questions per week, concentrated on understanding the concepts, coding the most optimal solution/reading the most optimal solution [Mostly easy and medium]
  • Did Leetcode actively from May end till I got an offer. Did 2-3 questions a day. [Mostly medium and few hard]
  • The design interview, you tube videos are my design prep resources. Reading company blogs help (uber, twitter eng blogs)
  • Did company-wise questions after I scheduled onsite for the companies.
  • Total LC questions approx 250. With the majority being medium and few hard questions [Used a session from my wife's premium account for working on locked questions, freq, and company-wise question list]

Facebook

Position: E5

Phone round

  • 2 questions from Leetcode. Both are tagged under the FB category. One easy palindrome-related question and one medium array question.
  • I thought I did really well. Explained the complexity for both along with code walk-through, finished both in 35 - 38 mins, we talked for few mins and ended the meeting 3-4 mins before the time since interviewer did not want to ask one more question.

Time taken to get the result : 2 days
Result : Reject :(
Post interview analysis : I think I might have had a bug in the first code and I did not catch it in the code walkthrough [Interviewer never pointed it out]. Apart from this, I could not think of any reason. Maybe I did not explain the code well (Not sure :( ). Was little disappointed to get rejected in the phone round. Anyway, I had many other interviews lined up, so did not give much thought into this one.


Uber

Position: SSE

Phone round

  • One single question related to the matrix and shortest path. Don't remember seeing the exact question in LC, but there are few similar ones. The solution required multiple BFS operations.
  • Had a very nice interaction with the interviewer. Coded the problem completely and we executed for sample test cases and all the cases worked.
  • Interviewer pointed out one or two small mistakes. [I would have caught it later when I execute it I guess]
  • I used multiple BFS calls and extra visited boolean matrix, the interviewer wanted me to optimize to remove addition space. Gave me some hints, before I could come up with an approach we ran out of time.

Recruiter was very friendly and responsive.

Time taken to get the result: 3 days
Result: Reject :(
Post interview analysis : Mostly because I could not come up with the optimal approach. Code was slightly bigger and took time to make it completely executable without bugs and hence ran out of time to quickly think of the optimal approach. Later realized that we could do it with a single BFS by adding multiple sources into the queue at the same time. A common approach used in many BFS questions.


Twitter

Position: SSE

Phone round

  • Spent 10 mins talking about the project, why changing the company etc.
  • 1 single question. It was hard and av variation of minimum substring question, but I felt it was harder than that.
  • Discussed with the interviewer to make it simple for the first iteration. Coded it and did a code walk-through. This step is very important I felt coding the whole question in 45 mins is impossible.
  • I think the interviewer wanted the code to be executable, but mine was not. Overall felt satisfactory.

result: Moved to onsite interviews
Time taken to get the result : 3 days

Round 1 onsite

  • This was a managerial round. There were 2 managers in the interview panel. One actively interviewing and one more passive. Lots of questions on resume, old jobs, positives, negatives, reviews from old managers etc. This round is very important to decide the level I guess.

Round 2 onsite

  • Coding round. Was very similar to one of the famous Twitter tagged question with slight variation.
  • In 45 mins I was able to code, discuss naive approach, optimization, space and time complexity and also code such that it could be executed. Tested for a few test cases. Very nice interviewers.

Round 3 onsite

  • This was an API design round. Importance is given to discussion, how we design interface, classes etc. The question was related to a wholesale shopping market. Not difficult, but needs real clean design, discussion about all cases, how consumers would use it, testability, and more.
  • Did well I guess. Did not see any obvious red flags.

Round 4 design

  • Design a twitter feature, with custom requirements.
  • Emphasis on requirement gathering, identifying all cases, explaining pros and cons of a certain decision, Database and the reason to choose one, etc. I felt I did well. The interviewers were nice and liked the atmosphere.

Enjoyed this interview. Felt good after onsite.

Result : Offer
Time taken to get the result : 3 days, since I had told recruiter I have other pending offer and she really helped me push it quickly.


Microsoft

Position: SSE

Phone round

  • Was taken by a Manager. Spent 20 mins for a work-related discussion.
  • Asked one question which was very vague. After some discussion implemented some basic version and he seemed happy. We executed the code for a few test cases. The question was related to the X and O game.

Result : The manager felt I am a good fit for a sister team based on my experience and the recruiter scheduled onsite directly with that team.
Time taken to get the result:  Recruiter told me in 3 days that interview went well, but we will go ahead for a different team. I had to apply again for that role. Very helpful recruiter.

Round 1 onsite

  • One single question related to BFS. Very similar to the question that was asked in my Uber phone round. Thankfully I had done analysis for my Uber round and I was able to code the most optimal solution in 45 mins. We were able to execute the code.

Round 2 onsite

  • Very senior principal engineer. The question was related to implementing a memory allocator and deallocator (with some custom requirements) library in Java. (Whaaaaaat :O). It took me by surprise. I was panicking, had to take some time to relax. Discussed a little bit on how Java handles it and how we could code etc. I could clearly see I was not doing well. Interviewer seemed really smart, he gave me lot of suggestions and hints. Overall I bombed this round.

Round 3 onsite

  • Spent 20 mins discussing my project and work. The interviewer was very interested in network security, HTTPS working, and other network security details. I tried my best to explain some of his questions. Interviewer was very friendly, but I got a strong feeling I did not do well with answering his questions.
  • One coding question. Very famous caching-related question. We did not code completely, but wrote pseudo-code and discussed few edge cases.

Round 4 onsite

  • One more senior engineer (almost 20 years experience). Asked me to debug a socket program in C. I think that was a code in which he has fixed multiple security issues. And obviously I started panicking again :( Did not do C programming in 6 years. He was very nice and explained the code to me when I told him I am not familiar with socket programming. Did my best, but clearly was not enough.
  • We did one quick program related to Binary search. Coded this quickly, he wanted to execute it but Hackerrank kept throwing some error. Did not have time to debug that, so did a code walk-through.

Result : Ghosted. [Obvious right?]. I did not bother emailing and asking them either.


Google

Position: L5

Phone round

  • Did not waste much time in intro and stuff. Quick 2 mins intro and we jumped into coding exercise.
  • Started with one very simple question which I coded in 5 mins. [Was wondering how come Google asked such a simple question]
  • Then came a follow-up using the first question as a helper. Related to arrays. Took some time, had a really nice discussion about multiple approaches such as using maps, sorting, etc. The interviewer gave some hints and we concluded on an approach and I quickly coded it in the last 6-8 mins without any errors. A similar question is already tagged under Google recently in the last 3 months. I had not done this beforehand.

They give very high importance to the thought process, coding correctness I think. [Atleast that's what I felt]

Result : Moved to onsite interviews
Time taken to get the result : 2 days

Round 1 onsite

  • Coding question with a very big problem statement related to logs and timestamp, multiple sources, etc. Have not seen this in Leetcode. Explained multiple approaches, interviewer asked me to implement a solution[ Not very optimal, but good enough].
  • Coded it in 20 mins with all edge cases. The interviewer pointed out one bug which I fixed.
  • Did code walk-through and discussed around how this would work in a distributed environment. Spent last 5 mins talking about work at Google. Overall satisfactory I guess.

Round 2 onsite

  • Interviewer already had a class predefined with some kind of call back function which we need to call when the scheduled time is reached. There was a problem statement around how user would call this and we can have millions of such scheduled jobs. [I know it's pretty vague, it's a little complex to explain]. This was a big question that took some time to get full clarity.
  • Discussed approaches about using multiple threads, how these schedules are picked up, what data structure we would use to save these and retrieve, wrote some pseudo-code. The interviewer gave me a few hints. Overall I did not ace it but was not bad either.

Round 3 onsite

  • One of the best interviewers I have ever met. Senior guy, but very friendly and joyful. He was from the AI team in Google and he wanted me to design and implement a board game/puzzle with lots of custom requirements.
  • Spent 20 mins discussing the approach, how we would handle corner cases, how we would make the game interesting. The approach needed a slightly modified DFS.
  • Wrote a clean code with separate classes, almost finished the code except for one functionality which I had added a TODO and made sure the code can handle it. We ran out of time, but I felt good after this round.

Round 4 managerial/Googlyness

  • Lots of hypothetical leadership questions about deadlines, conflict resolution, explain tech problems from past projects, review from the manager, etc. Went well I think.

Round 5 onsite

  • This was a design round. The question was very vague related to designing a logging system with multiple custom features. I think I did not do well here. I was jumping into components that the interviewer was not very interested in. He wanted to understand in-depth of every decision I made, why we need that and so on. He was very good technically. He gave me a lot of pointers to talk about, I believe I did justify it well, but I was supposed to drive the interview and it felt like he did. Overall was not very good okayish I guess.
  • We did not use google drawings/jam board, he felt its a waste of time. We rather just used docs to write points and discuss.

One of the best interviews I gave. Trying to memorize 100s of Leetcode questions will not work with Google. You really need to be able to understand and explain multiple approaches.

Result : Down leveled to L4, recruiter gave me ballpark numbers and he wanted to see if we can proceed with the hiring committee. He was fairly confident L4 will go though. Apparently all coding rounds said strong L4 and maybe for L5, but the design round was no for L5 and yes for L4
Time taken to get the result : 3 days since I had other offers, recruiter tried his best to get it as fast as possible.


LinkedIn

Position: SSE

In all coding rounds, they expect you to solve 2 questions.

Phone round

  • 2 questions. One of them related to multiple binary searches and one related to permutations and java generics. You have to be really fast in coding and code walkthrough in order to finish it.

Result : Moved to onsite interviews
Time taken to get the result : 3 days

Round 1 onsite

  • 1 easy 2D matrix question. Simple DFS/union-find would do the job. Did this quickly in 10 mins.
  • 1 medium question-related backtracking. Coded this question quickly and made sure there is ample time to explain and do a code walk-through. These types of questions need more time to explain to someone else.

Round 2 onsite

  • 1 medium DFS question. In the same line as the easy question in the previous round, but slightly more complex. Coding took some time. Took almost 25 mins. Shadow interviewer got confused and spent 5 extra mins explaining the approach to her.
  • 1 medium/hard question related to number combinations. Medium/easy if you want to do naive approach, hard if you want to do DP. The interviewer wanted me to think of an optimal solution, but I could not come up with the DP approach [Simple top-down approach with memoization would not work, I tried and discussed this]. In the end, I just coded the naive approach and explained the complexity. Did not feel very good about the second question.

Round 3 onsite

  • Managerial round. Nothing out of the box, but I got a feeling that the manager felt I am not a good fit for his team, rather teams in the same org because of my expectations from new work, etc.

Round 4 onsite

  • Technical communication. i.e. to explain one project to 2 engineers very clearly. Assume you are onboarding them to your team and we need to give them high-level KT. They seemed very responsive, asked lots of questions. Overall a very good discussion.

Round 5 onsite

  • Design round. Implement a new feature in LinkedIn. Overall I did okay [Did not ace it, but not bad for sure]. Some places interviewer wanted me to use a certain components/database type and I wanted something else. Did some discussion on the pros and cons. He was friendly and respectful of my choice.

Result : Good feedback to go ahead, but for a different team. Gave me ballpark numbers. I had to talk to the other team under the same org to proceed.
Time taken to get the result : 4 working days.


Final result

  • Accepted Twitter after one round of negotiation, I really enjoyed the process, and compensation was satisfactory. 
  • With a heavy heart, I kept my interview on hold with Google (Did not feel like accepting L4 and Twitter offered more). The recruiter told me that Google has stopped matching offers. [Always wanted to work for Google, but sadly did not work out this time. I am happy that I could crack their coding rounds. Next time I will come back stronger]. My interview scores are good for a year if I want to go back in the next one year.
  • Discontinued LinkedIn discussion.

My two cents

  • Interviewing is hard, it is physically and mentally draining to consistently prepare, give full-day interviews, accept rejections, hold tight after each round of interviews to hear back from the recruiter, and much more. But, given the right amount of determination and focus we can do it.
  • Spend some time on understanding complexities. Almost every interviewer expects space and runtime complexity.
  • Practice drawing on an online whiteboard before hand for design rounds, this will save 5-10 minutes of your precious time during the interview.
  • Analyze each and every round post-interview. Think about the most optimal solution you could have come up with, note it down. Think about how you could have improved your explanation, code walkthrough, and other things.
  • Standing in front of the mirror and talking about design concepts loudly to myself helped me a lot. It might work for you guys too, give it a try.
  • When you come up with a new concept, bookmark them and visit them more than once. Doing a code walk-through loudly helped me a lot.
  • I took mock interviews [2 rounds] from my friends and that helped me a lot to pace my design rounds and also to gain some confidence.
  • Some people prefer giving multiple small companies before targeting big ones. I did not do it since I felt I did not want to waste their time If I am not ready to consider their offer. Not sure if this is a dumb thing, but a general suggestion I got was to give a few interviews before starting big ones.
  • Consistency helps when it comes to leet coding rather than going all-nighters 10-15 days before the interview.
  • Premium is worth every penny. I used their debugger, company-wise questions, and frequency quite a lot.
  • While practicing Leetcode do not jump and see the solution right away nor spend all day on a single question. Time limiting every question helps. At least try to code naive approach, before learning optimal solution. If you have absolutely no clue, then learn the concept, mark the question and revisit after a few days.
  • I suck at DP questions, I have not practiced enough to come up with bottom up approach quickly. Thankfully I was lucky I did not get any DP questions asked. So I guess luck plays an important role in this whole process.

I probably will not talk about the offer details. Its a standard offer and you could check Levels.fyi to get an idea. Nothing out of the box. Thank you Leetcode community for all your help. I hope this write-up helps at least one person who is going through the same journey as I did.

Good luck folks.

Comments (4)