Facebook | E5 MLE | USA | Apr 2020 [Offer]
Anonymous User
12178

All questions I was asked were small modifications of questions I found in the "Facebook" section of Leetcode's Explore. I highly recommend using LC Premium for that reason.

Experience: 3.5 YoE in developing computer vision and NLP models + PhD from a good school.
Position: Deep learning engineer at a FANGMULA company (not telling which for anonymity sorry).
Current TC: 205K/620K/100K (base/RSU over 4 yrs/sign-on)

Application
Contacted a recruiter on LinkedIn. Looked for a recruiter specializing in ML.

Preparation
Leetcode: I did 1 or 2 LCs per day for half a year (workdays only lol). Final count about 60/70/20. I first did about 50 Easy questions with highest frequency. Then went through all the Leetcode -> Explore -> Facebook questions. In the month before the interview I did very few new qs to avoid losing confidence. Instead, I focused on redoing Mediums/Hards, this time explaining what I'm doing aloud.

Design: Started 2 weeks before the interview (but had a fair amount of real experience at work). Read https://github.com/donnemartin/system-design-primer and all the recruiter suggested. Then, designed one large system per day on a whiteboard, speaking aloud, during the week before the interview.

Phone Screen
Two questions, both LC Medium level. One similar to Anagrams, one an easier version of Remove Parentheses.

Onsite
1 LC round: a highly modified version of Number of Islands.
1 Specialist Ninja round: [edit: this is also a coding round! but not LC coding :) for example, it could be "implement precision/recall calculation" for general ML or "normalize images" for computer vision folks] Can't say the exact q not to dox myself. This round is supposed to catch people who don't do on a daily basis what their CVs suggest they do. So don't worry unless your CV is fake.
2 Sys Design: One focused on NLP and one on a general ML system (similar to "design Fb newsfeed"). The NLP Specialist design round was really "tell me roughly how an NLP model fits within the larger system, and then focus on all the different models/tradeoffs, how to eval/monitor them etc". 70% talking about the model.
1 HM round: Tell me about a time you had a difficult coworker -- what did you do? Tell me about a time you shaped your team's direction. etc. This round is what will decide whether you're E4 or E5. IMHO it's very hard to fake it. My preparation was thinking very carefully about all the "politics" I encountered in my current job. In daily work, instead of avoiding difficult situations, jump right into them and try to help. It's very easy to gather great E5-type experiences in this way, even with as few YoE as I have.

Negotiation
I knew Fb bands from Blind. I just told the recuiter to ask for max band, and said I'll cancel other interviews if they get close enough (>200/600/100). She returned with 205/620/100 and I accepted. Didn't have any competing offers, but was in the final stages of another FANGMULA loop.

Additional Comments
In the phone screen, I came up with a suboptimal solution (NK instead of NlogK) to one of the problems. It didn't matter because I communicated well and wrote great code. During the onsite, I totally messed up the LC round and started solving the wrong problem at first. Halfway through, after many hints, I figured I'm doing the wrong thing. I made sure the interviewer knows that I realized I'm wrong, and why I got confused. Then went on to solve the right problem by modifying the original solution. All the time I was very careful to keep the interviewer involved. I'm not sure if she had another question to ask me or not; I only solved one because of this messup. Guess what, also didn't matter. Recruiter said all interviewers were very impressed.

Communication is very, very important. You can do 1000 LCs but will fail if you don't communicate well. Interviewers know everyone grinds LC, they're looking for soft skills on top of that. I've interviewed almost 100 candidates at FANGMULA, trust me on this. The same goes for sys design. You can't just memorize a bunch of charts. The best way to train these is to seek out opportunities to communicate with your peers during real-life work. Talk about your ideas and code, write docs, draw diagrams. In meetings, don't be the person sitting quietly in the corner.

Also, try to do a lot of interviewing yourself. It really helps.

Comments (25)