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
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.
[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.
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:
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.
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:
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!