Google | L4 | Mountain View | Jul 2020 [Offer]
Anonymous User
28350

Google | Engineer L4 | Mountain View | Jul 2020 [Offer]

Experience:
6 years of experience in startups.

Virtual Onsite:

  • 3 Coding interviews:
    1. Find the K largest element in array. I gave many solutions each one better than previous. (Sort and select, partial bubble sort, using max heap and finally the min-heap solution). I coded in JS which doesn’t have built-in heaps, I declared a PriorityQueue class and assumed it worked.
    2. Something like the kitchen/orders problem, the focus was more in object oriented design.
    3. A mid-level string problem, don’t remember well, something using the 2 pointers technique. I gave a not optimal answer and tried to give a better approach that conceptually should have worked but couldn’t finish it, probably my weakest round.
  • 1 Behavioral. Tell me about a time when sort of questions… had faced a challenge, had a disagreement with a team member…, etc.
  • 1 System design: Had to design a scheduling system that involved machine learning at some point for optimal performance, had to talk about the features I would include. I wasn’t prepared for a ML question, but that was OK.

Preparation

I have been preparing for about a year, during this time I had failed Amazon onsite 3 times! I failed Facebook onsite once, at that point I had done about 100 Leetcodes.

Once accepted for Google onsite I committed to do one mock interview every day first thing in the morning, I did that for 30 days, with Leetcodes in the afternoon. Mostly middle level questions. When I started I couldn’t do more than 2 per day, after a couple of weeks I started to improve and find patterns, then doing 4-5 questions a day became easier, I could do faster and less exhausting (I think this is crucial, as in real on-sites your brain gets tired for the last round and sometimes you just want to finish and go home).

At the end of my process I had done about 200 leetcodes, maybe less. But it is not about the number is about what kind of problems you do, and making sure you understand the whole spectrum of a problem from all the angles and all the solutions. I sometimes checked my first implementations of old problems and I surprised how bad code that was.

My suggestions would be:

  • Subscribe for Leetcode, it worths.
  • Don’t stop practicing even if you fail multiple times. You will improve and eventually will get an offer, that’s a fact.
  • Don’t listen to people who has not been in this process, just keep preparing yourself.
  • Master a language very well, if you are able to write code for an easy problem and it passes test cases at first run, to me, it means you are ready with the language.
  • If you haven't choose a language yet, I would recommend Java or Python as they have all the data structures you will need buil-in.
  • Do easy problems to gain confidence, then switch to medium. Do hard problems only if you have time and have trained enough.
  • Alternate problems by difficulty and topic.
  • Study the concepts, I did from Stanford and MIT youtube courses.
  • This is very importat: Do Mock interviews (PRActice Makes Perfect), that’s a game changer, you will commit to a scheduled interview, you will be forced to finish on time, you will see where others fail and you will avoid that when they interview you. Also that will force you to socialize a bit, also an important part of the process.
  • It is not all about coding, it is also about how you communicate, questions you ask, how charming you can be, so prepare your soft skills too.
  • If you are not a native english speaker (I'm not either), practice english to sound natural and not boring. Friends I have, much better programmers than me, have been rejected in the first stage because they struggle with english.
  • Don't go to your dream company without preparation, you don't want to burn your chances (and wait for a year or to never be called again).

Best of luck in your preparation!

Comments (59)