Tech IndustryJun 1, 2020
Amazonwarp42

Interview Experience| FB E5 | G L5 | MS AS2 (62) | Seattle | May 2020 [Offers]

## Interview Experience (Facebook, Google, Microsoft) #### Profile: *YOE:* 4+, all at Amazon (Applied Scientist) *Education:* PhD in Machine Learning (ML) from a Top 20 CS school *Location:* Seattle *Current TC:* $270K *Interview dates:* Last two weeks of April *Facebook offer (MLE):* 205K/700K/100K *Google offer (SWE, ML team):* 192K/900K/50K (Accepted) *Microsoft offer (AS, ML team):* 150K/150K/50K #### Context: Things at Amazon weren’t good anymore - unclear goals, poor management, lack of communication with remote team, etc. Decided to look elsewhere mid-March 2020, following up with the recruiters who had reached out to me in previous years. Settled on proceeding with MS, FB, Google, Oracle, and Indeed. Shortly afterwards the latter two came back with the information that they were in a hiring freeze. The other three wanted to proceed, with Google even waiving the phone screen and moving directly to onsite (all the “onsite” interviews were virtual). I’ll be leaving some details out to maintain a modicum of anonymity. #### Preparation: For coding, I did the usual LC grind: ~40, +20, +20 before MS, Google and FB respectively with about an even split of easy and medium and a few hard thrown in. I also went through the coursera’s [algorithm specialization](https://www.coursera.org/specializations/algorithms#courses) (4 courses) to brush up on the fundamentals. The interviews all happened in the last two weeks of April, giving me about 4-6 weeks to prep. I was often alternating between a day of my Amazon work, and a day of preparation. For ML fundamentals and theory, I revisited the lecture notes from all my classes during grad school, as well as the 5 classes in the [Deep Learning specialization](https://www.coursera.org/specializations/algorithms#courses) on coursera. I also revisited my thesis, previous published papers, summer internship projects, etc. — basically ensuring I could talk in fair detail about anything on my resume going back to undergrad. For ML design, I used the booklet from the github repo [machine-learning-system-design](https://github.com/chiphuyen/machine-learning-systems-design) thinking through several of the practice design questions there. I also skimmed a few systems papers including one I was an author on. Lastly, I used the system-design-primer to get a different view since it's not directly focused on ML. For behavioral questions, I used resources like [this list of questions](https://www.themuse.com/advice/30-behavioral-interview-questions-you-should-be-ready-to-answer). For these 30 questions, and a few more I could find via google searches, I wrote down answers reflecting on personal experience and adhering to the [STAR method](https://www.themuse.com/advice/star-interview-method). #### Interviews: **Facebook:** The phone screen was two medium LC questions — a simplified version of making parentheses valid, and one of finding an index of an anagram. Got positive feedback the next day, moving to onsite. Onsite consisted of 5 interviews. #1 was coding with a Breadth First Search problem (max element on each level), and an expression evaluation problem (e.g. “2+3x4” = ?). Got through both fairly fast, with time for the usual follow-ups (complexity, potential optimizations, etc.). #2 was ML research, and I was unsure what to expect there. The interviewer was winging it a little (he switched problem statements 30 seconds into the explanation), and it ended up being more or less ML design (Instagram photo feed). I was thrown off a little since there was no doc to structure thoughts on, and the interviewer seemed to be looking for very specific answers as opposed to a potential answer. Thought it went alright. #3 was coding again with first being an iterative implementation of Depth First Search, and second being the same anagram problem as my phone screen. I told him that I did this problem previously coming up with a O(nk) solution, and instead of writing it out again, we just talked about how we could do better (O(n+k)). #4 was half behavioral (usual affair), and half coding centered on uniformly sampling a node from a large tree. I had some difficulty understanding the objective of the problem since the interviewer didn’t want me to flatten the tree or count the sizes of subtrees. Eventually I figured out the direction he wanted me to go, thanks to a couple good exchanges between us, and I was able to write up that solution. #5 was ML design, and this time armed with a shared doc, I was able to come up with a good design for detecting offensive content in FB ads. I touched upon the unique aspect of adversarial design and the interviewer seemed to like that line of thought. **Google:** Got moved directly to onsite so no phone screen. Onsite consisted of five interviews. #1 was coding up a calendar scheduler and not something I came across on LC. Made through it fine with one nudge (finding counter-example for my initial proposal). Then we chatted about how such a piece of software might fit into a large ecosystem of a calendar app, and I believe I was being assessed on broader vision. #2 was behavioral and having thought through 30-40 common scenarios, there were no surprises. #3, #4, and #5 were all ML system design focusing on problems like youtube content moderation, landing page optimization, and video recommendations. They all shared a Google doc which was a decent substitute for whiteboard. I didn’t wanna muck around with diagrams on the shared doc, so I mostly went with bullet points, mentioning spots where we can dive deeper as needed. This approach gave me the chance to talk about issues I am well-versed on, as well as gave the interviewers talking points (e.g. “why did you propose using epsilon-greedy policy?”). **Microsoft:** The phone screen was a very gnarly and open-ended ML problem which I didn’t think had a clear answer or solution (later confirmed by the interviewer), followed by a coding question which was essentially writing a method to sample from a given categorical distribution. I got positive feedback the next day moving to onsite. Onsite was four interviews, with the last one described as “as-needed” which I was told is only conducted based on positive feedback from the previous 3 (a little strange to me), and was mostly a sales pitch. Interview #1 was a combination of ML system design and a tree traversal coding problem, #2 was mostly on ML fundamentals and theory (good thing I brushed up on things like derivation of Principal Component Analysis), and #3 was a combination of system design and some rote memorization (like what are ResNets?). Both system design questions were some variant of a ranking problem, and after sketching the whole system, I mostly got nudged on elaborating the model. #### Outcomes: Even though the order of interviews were Microsoft, Google (a week later), and FB (another two weeks later), Google was the first to get back with a hiring decision (two weeks after the onsite), then Microsoft (3.5 weeks after the onsite), and lastly Facebook (less than a week after the onsite). The feedback was positive leading up to verbal offers from all three (levels 62, L5 and E5 respectively), and all in the first week of May. #### Decision-making phase: Relevant priorities for me are team/project, work life balance, career growth and compensation, more or less in that order. I knew the team I was interviewing for at MS. My Google recruiter set up 4 calls with different HMs. Even though FB has the bootcamp process, given my emphasis on team/project, my FB recruiter set up 5 sell calls with different EMs. Both also put me in touch with people who had previous experience at the other company (X-Googler at FB, and X-FB at Google). The chats were very informative, and didn’t necessarily make the decision easier. MS communication had been very unreliable - no response to my email following up on the outcome of the interview, no response to my email asking to schedule a call to go over the offer, and so far no response to my query about any changes to the offer (TC being less than half of the others). I gave up on them, and the choice came down to Google or FB. Both Google and FB have excellent work for my skills/interests, especially since my top team choice at Google got back with an affirmative. Generally speaking, I got the impression that Google offers better work life balance, and FB better career growth (moving from L5 to L6), making Google a little better for my set of priorities (I enjoy several hobbies and want to date more). Last bit was negotiations which started tricky. Google asked me for numbers, and I said I needed time to research before offering anything concrete. MS asked me for numbers but didn’t respond to my follow-up emails. FB was more forthcoming, and gave me what I was told was their high-tier offer (205/600/100) hinting that they’ll be open to further negotiations. There was an uncertain phase where Google said they can match if I get a written offer from FB, and FB said the offer will be only verbal till I am ready to move forward. Since I didn’t want to lie to FB, I couldn’t figure out how to proceed. After a week of getting a little frustrated with the back-and-forth, I decided to educate myself on negotiation tactics a little more, and came across [this article](https://candor.co/guides/salary-negotiation/). Followed those steps, and let both companies know that I was willing to walk away if they couldn’t come up to my desired TC. FB quickly got back with what I was told is their max offer (205/700/100), and with that leverage I was able to get Google to come up to 192/900/50 by last week of May. MS was 150/150/50 followed by radio silence. #### Final Result: Accepted and signed the Google offer. Had a very amicable offer decline chat with my FB recruiter the same day, and I was told that the offer is on the table for a year in case I don’t like my work at Google. Emailed MS thanking them for their time and not expecting a response. Cross-post: https://leetcode.com/discuss/interview-experience/665619/Facebook-E5-or-Google-L5-or-Microsoft-AS-2-(62)-or-Seattle-or-May-2020-Offers #facebook #google #microsoft #offer #seattle #machinelearning

Facebook 🦇 soup Jun 1, 2020

Congrats! Maybe next time don’t go revealing questions.

Amazon warp42 OP Jun 1, 2020

Thanks! Most of them were from the explore *company* section of leetcode so it didn't seem like I was revealing a secret.

Facebook 🦇 soup Jun 1, 2020

Well, that hurts Leetcode then since that’s a premium feature :p

Amazon hNFY30 Jun 1, 2020

You sound like a beast. Well done and good luck at the new job!

Amazon warp42 OP Jun 1, 2020

Appreciate it! Got lucky with the loop composition. The leetcode prep paid off as well for the pesky coding problems. Highly recommended premium.

Intuit Edgedancer Jun 1, 2020

Nice writeup!

Amazon warp42 OP Jun 1, 2020

Brandon Sanderson for the win!

Intuit Edgedancer Jun 2, 2020

Ooo another Radiant! 😀

Amazon YvjX68 Jun 1, 2020

What’s google’s vesting schedule ?

Amazon warp42 OP Jun 1, 2020

Monthly

Twitter Orzn31 Jun 1, 2020

Congratz OP! That MS numbers are really insulting, and good to know here

Amazon warp42 OP Jun 1, 2020

Thanks! Yeah, it's a little frustrating. I liked the MS team but that's just too low. Plus the communication was painful. I talked to Google and Facebook recruiters maybe a half dozen times on the phone. We also texted and emailed very often. Microsoft, once after a few reminders.

Twitter Orzn31 Jun 1, 2020

Yep, numbers aside, the low efficiency communication is probably also a bad sign of career move to that MS team. Anyway, OP you deserve what you put into effort, and really love the detailed write up for other people to follow :)

Microsoft Megahard Jun 1, 2020

MS is a joke

Amazon warp42 OP Jun 1, 2020

They leveled me much lower too. I'm not sure what's going on there.

Microsoft Megahard Jun 1, 2020

Probably didn’t want someone overly competent on the team. Makes others look bad ;)

Lyft blawndie Jun 1, 2020

Thanks for the detailed write up

Amazon warp42 OP Jun 1, 2020

You're welcome. Similar write-ups helped me get a better sense of what to expect in the process so wanted to give back.

Microsoft OqDv32 Jun 1, 2020

That was not even top L62 offer from MSFT. Regardless, they can't match Google or Facebook

Amazon warp42 OP Jun 1, 2020

Honestly, I wanted to at least consider them, but it seemed like work trying to schedule a call with the recruiter. Last we chatted, she said she'll talk to the team and get back to me. That was over 2 weeks back.

eBay trdflok Jun 1, 2020

Congrats and thanks for the insights!! Inspring and very helpful.

Amazon warp42 OP Jun 1, 2020

Thanks! And you're welcome. Best of luck!

Microsoft aeonm Jun 2, 2020

I think MS should have interviewed you for L64 or L63 at least. Nevertheless, congratulations on the offers!

Amazon warp42 OP Jun 2, 2020

Thanks! Yeah, there leveling was not right even though I asked in the beginning.