Google L3 | Microsoft L61 | Goldman Sachs | Sept 2020 | offers

Giving back to the LeetCode community because I absolutely sucked at interviews 3 months ago and LeetCode helped me so much. Sorry to cram everything into one post.

Current Status: SDE2@Amazon
2 YOE
Seattle, WA

I had 3 virtual onsite loops. In chronological sequence:
NOTE: I try to only give info that does not violate any NDAs and policies. If you see anything that might be oversharing please kindly let me know so I can redact those info, thanks!
[Update 10/8/2020]: added more interview info per requests in comment
[Update 10/8/2020 evening]: added interview details for MSFT and added recruiting experience section. Will come back and add my other non-onsite loops in my next update
[Update 10/10/2020]: Added more info on GS loop and section for ppl without CS edu

1. Goldman Sachs | 2020.8.29

3rd party head hunter reached out to me thru LinkedIn for this role.
1st Technical phone screen (1 hour): 1 coding question
2nd technical phone screen (1 hour): 1 sys design question
Onsite:
4 technical back-to-back interviews, 1 hour each plus chat with hiring manager at the end. The coding Qs were easy/medium.
This virtual onsite happened first so I really do not remember much about it. It was an interview with a specific team so all the interviewers were from the same team. Each round had two interviewers. Coding happens on a code editor(CoderPad I think?) In each round each interviewer asks a coding Q of medium difficulty, leaning on the easy side, on arrays, queues, trees, etc. There was no break time in between interviews so I was pretty exhausted at the end. I think your interview questions will be highly dependent on the team and the technology they use. I was heavily quizzed on JVM and garbage collection because this was a java-heavy team. I think during your onsite there is also supposed to be a interviewer from another team who acts as a "bar-raiser". For my onsite day he wasn't able to make it so this interview was added after they gave me a verbal offer.
Result: Offer--I think it is associate level? Although that might have been negotiable
Recruiting experience: Most of my interactions were with the head hunter company. They were nice and followed up often--although they got pretty upset when I told them I signed with G. I think working with headhunters has its benefits but I probably would apply directly to companies going forward.
The interviewers and hiring manager at GS are all super nice, definitely different from what I read on glassdoor. The hiring manager is one of the most polite managers I've talked to. I honestly loved talking with the people on the team.

2. Google | 2020.9.25

[Update 10/8/2020]: Added more details in this thread since I figured a lot of your are interested in big G ;)
Before onsite: Recruiter reached out via email and LinkedIn last year and got buried in my inbox. I was casually scrolling one day and saw the email and followed up. They scheduled a call--recruiter asked some Qs like what you do currently day-to-day, what language, what are you looking for, etc. And transferred me to another recruiter to schedule my onsite(I think they skipped phone interviews).

Onsite: 1 behavioral/Googlyness interview + 4 technical back-to-back interviews, 45 min each with 15 min rest in between. Coding Qs were medium.
So before my onsite, my recruiter told me that "a good indicator of success in Google's interview is to finish a LeetCode hard in under 30 minutes", which was bad news because I cannot even finish LC hards in an hour.(and still can't) But it was good because I pushed my onsite 2 months out to prepare.

  • Interview 1: Googlyness
  • Interview 2: Coding Q #1--hash map. Difficulty is easy with 2 followups. I finished all coding just in time. I think she gave a hint during the final followup which asked for optimizations.
  • Interview 3: Coding Q #2--string parsing/file parsing. I would say this felt like a LC hard. Not complex in algo but a lot of coding+edge cases. I didn't complete all edge cases in time but had time to go through and check that my code works for all cases but an edge case. This was the only interview which I did not finish.
  • Interview 4: Coding Q #3--trees. Difficulty is medium for both Q and followup. I tripped in the first question here and my brain froze for some reason--probably because this was the first interview after lunch and I had a food coma? Took me a while to get the first Q--interviewer gave a hint and I came up with a solution although the code was not very clean. The followup was supposed to be harder but I got lucky and the first solution I brainstormed he said "that sounds great let's code it" [This is why you should always think out loud] so I got that one down in under 10 minutes. Lastly he followed up with test cases and sounded happy with my answers.
  • Interview 5: Coding Q #4--recursion/DP. Difficulty is medium. This interviewer was super nice--he started with a super easy question and guided me through each follow up. For example he had me come up with a recursive solution first and then optimize it into a DP solution. 10/10 for the interviewer. In coming up with the DP solution I did not come up with the most optimal DP solution but interviewer gave a hint.

As I mentioned, I thinked out loud throughout the whole loop[Prepare a waterbottle you're gonna be talking a lot!!] And I think because of that most of my interviewers seem engaged and know what I was doing/thinking, and were able to guide me if I was offtrack. Thinking out loud helps me organize my thoughts as well, and now I find I solve problems better when I talk it out(this is a practiced skill developed during my interviews--was not the case 3 months ago).

Difficulty wise, there is only one that I can perceive to be a LC hard(the 2nd). I definitely don't think you need to do a LC hard under 30 mins to ace Google but I'm grateful my recruiter said that so I prepared more than I would otherwise. I think Google Qs are mostly not too hard but they do have a really high bar on your performance on those questions, thats why I recommend practicing medium Qs for Google!

Result: Offer L3. This is actually not the ideal outcome because I was going for L4 which is the equivalent of SDE2. Google is know to downlevel a lot if you are not from FB so I feel less bad about it :P So feel free to take my experience as either "success story" or "failure story" depending on what your goals are.

If it helps, I asked my recruiter for interview feedback and she said my strengths were "Googlyness, algorithms, communication" etc and my improvement areas were "coding style/cleanliness and coding speed". The last two I think is because i didn't LC enough--help this info helps.

After onsite: From onsite to offer took about 1 month exactly.
After Google onsite, step one is hiring committee who gives suggestion on whether to hire you and at what level. This usually takes 1-2 weeks, depending on how fast your interviewers submit feedback and how fast your recruiter schedules your HC hearing.
Step two is team matching--this can take anywhere from a week to a few months depending on open headcounts. I think I got lucky and this only took 2 weeks for me but I've seen folks stuck in this stage for 6 months-1 year during hiring freeze.
Step three is OFFER! Don't forget to negotiate :)

Recruiting experience: Hands down Google's recruiting is the best I've seen and I'm not surprised they can get top talent. I have interviewed with Google in the past and every single time the recruiter and interviewers were friendly, professional, and just a delight to work with. My recruiter this time especially was very on top of everything, updated me prompty and helped me get a great package. I think recruiters are very underappreciated so if you encounter a great recruiter please do not forget to thank them!

My takeaways:
There is two things in this loop I did that helped me a lot:

  1. Pushing interview date out until I felt confident. Don't rush yourself--better to thoroughly prepare than to fail and retry after freeze period.
  2. Scheduling another onsite a week before it. Note I said "onsite" not "interview"--this is because onsite is like a interview marathon and if not well adjusted your brain will stop functioning by the 3rd interview. Hone your "onsite" muscle before your "favorite" company, whichever that is!

3. Microsoft | 2020.9.22

This was the OneEng hiring event with min 2 years industry experience--I think it's MSFT wide and whichever team need people will just sign up.
Onsite: 4 back to back interviews. Each is about 55 minutes. Each interviewer asks a core value behavioral question as well is 1-2 coding questions. Coding Qs were medium/hard. I didn't really prepare this one because I had Google onsites the week before and was anxiously waiting for results, and the day before I got news I passed Google hiring committee.

  • Interview 1: This was with manager of a team. He asked a normal LC medium ish question(cannot remember the topic) and then second question is a harder, sys design question. I had trouble understanding what he wants me to code and also tripped in the thread-safe considerations(put a lock in the wrong place).
  • Interview 2: This was with a team member in the same team as interviewer #1. She asked an array rotation question. I came up with a solution very quickly but I was trying too hard to get the "optimal" solution--I'm not even sure if it's possible but I just kept trying and there goes the entire 45 minutes. I am sure she had a second question but we never got there. This one I absolutely BOMBED.
  • Interview 3: This interviewer was more chatty and woke me up a bit more. It was a medium time interval question and then a hard followup involving a stream of intervals(I remember? Memory is a bit blurry). I solved the first question pretty fast, had an idea for the followup. This one felt a bit more like a conversation and was the most pleasant of all 4.
  • Interview 4: This was a big system design question--he asked me to pseudo code a system provided requirements A,B,C. I provided two design choices and we blabbered about tradeoffs and databases, cloud, PubSub and Kafka, etc. He liked the database solution more so we went on talking about that. Even though I took a database class I do not remember anything--but I was able to define some basic table schemas. I thought this convo went pretty well--even though we didn't code out anything concrete.

I really do have mixed feelings about the Microsoft loop. I feel like the interviewers were not very engaged and sounded as bored as I was, compared to processes of other companies I felt that I lacked a connection to the interviewers. After Google onsite I was more energetic than I started but after my Microsoft loop I was absolutely drained both mentally and physically. I think the interviewers in the hiring events also have back-to-back interviews so they are probably as tired as I was. Definitely this cannot represent the company but I remember walking away thinking "None of them sound happy I do not want to work here".

Result: Offer L61.
After onsite: Got an email the second day of the onsite from a recruiter I have never talked to saying I got a offer from Azure--I had to reach out to my primary recruiter to verify offer legitimacy. Scheduled a call with the hiring manager briefing me on what the team does. I tried to get a hold of the Azure recruiter but it was very hard to get ahold of him because apparently he had hundreds of candidates to sort through. When I finally got on the phone with him he gave me kind of an non-negotiatble exploding offer(and he admitted it was an exploding offer)--when I made clear I would not consider exploding offers he extended the deadline to be 1 week. He also kept saying that the offer should be something that once I hear it I should be able to decide on the spot yes or no[my friends, do not fall for this BS. Ask for the time you need to consider and don't let the recruiter pressure you] Of course I asked for more time to consider.
Recruiting experience: Not a great experience--probably the worst out of all my loops. Professionalism of recruiters, attitudes/engagement of interviewers, clarity of process/timeline were all a big contrast from the Google recruiting experience. I wish your MSFT recruiting experience to be better than mine!

Preparation:
I have been working for 2 years so I was pretty out of touch with coding interviews. I prepared for 1-2 months, mostly by doing the following two things:

  1. Solving the daily challenges and posting my solution in the discussion area. I find having to write an explanation for my solution really helps me "think out loud" and sound logical. I didn't go through too much questions (114 total, mostly medium) but for each one I did I at least had a passing solution before checking out other people's posts.
  2. Going on interviews. I intentionally scheduled interviews for my "more-desired" roles after the ones I want less. I find that the earlier interviews helped me remain calm under pressure, think out loud, and also learn from my failures. For example, I distinctly remember in my 2nd round TikTok interview which was the only interview I failed this season, the solution the interview gave was a binary search. And then I started keeping BS in mind more in my other interviews, and one of my Google interviews the follow-up I was able to quickly come up with a binary search solution--even though the questions were super different.

For people with industry experience:
I find coding interviews to use a completely different set of skills than what makes me successful in my day-to-day job. System design questions are a exception and I find them much easier without preparation because we do this more often in actual job. For coding interviews unfrotunately you do have to practice coding a smart algorithm in the given time. The good news is that if you have work experience you most likely already have the ability to succeed--but you just need to warm up your "interview muscle" for a month or two.

For people without formal CS education/trying to switch careers:
I see a lot of people that "grind" thousands of LeetCode to get a job--while I think the persistence is admirable but I wouldn't use LeetCode as the main way to "learn programming". Not saying you need a 4-year degree in software development but I believe you need some kind of holistic systematic education in computer science/software development. There is much, much more to any programmer jobs than simply coding out an algorithm in 30 minutes that interviews sadly do not cover; without those knowledge, even if you were to ace your coding questions and get the job, you may find you lack basics to computer systems and could not perform up to bar at your job. I think LC is a great way to brush up on core algorithms/data structures after you already learned them.

Good luck to all of you!

Comments (25)