Just received an offer from Facebook. So excited as I've been preparing for almost half a year and finally! During this half year, Leetcoding has become my daily routine and it is now my time to give back to the community. Due to NDA, I cannot share the exact questions, but the experience itself may be helpful.
Background: PhD in a non-CS major from a top 10 School.
YOE: a number in (1, 5).
Current Job: DS at a non-FLAG company.
Position at FB: SWE - ML track.
I kickoffed the process after the pandemic started. I was so panicked at that time that lots of my dream companies started hiring freeze. By that time, FB was the only comany that was hiring aggressively. Initially I was targeting for E4/E5.
Phone Interview:
Two coding questions, one about array (Easy) with a follow-up (Medium), another about a very frequently asked data structure (Medium to Hard).
After nailing the phone interview, my recruiter congratulated me, but with a bad news: There's no more E4 headcount. Either I nail the onsite with a E5, or no offer. And he/ she said that my background was on the borderline and thus I didn't expect too much for the outcome. After careful consideration of whether or not to proceed, I decided to give it a try. Who knows when E4 headcount will come out again? It might be as short as several months, or as long as a year. It doesn't hurt to try.
VO:
Coding Rounds:
3 Leetcode Medium Problems + A Leetcode Hard Problem. The hard Problem is among the top frequent questions in FB. The medium problem is on the easy side. A tip is that instead of trying to do as many questions as possible, try to understand the problem deeper and think of the variations. The coding questions I encounterd are not too hard. But the communications between you and your interviewers are very important.
Behavior Round: All the questions I encountered are among the ones that were mentioned in a previous post, like what's your proudest project? Is there a time you get stuck? Talk about a conflict resolution. etc. For a E5 hire, you need to talk about a very complex project. This is very important and candidates tend to neglect this Jedi round.
System Design Round: The main concern I had during preparation was that there will be a round of system design. However, as a DS, I have little to none experience in it aside from a database course during my PhD. Hence, I bought the Grok***** Sys*** Des*** Interview course and read 1 topic every day and tried to understand and grasp the concepts. Indeed, most interview system design questions come from the course. During my interview, I waskn't asked any of these questions. However, I was able to link my problem with the concepts learnt from the course. (Very helpful! Strongly Recomend).
ML Design Rounds: I had two rounds of ML design, just as another PhD candidate with less than 5 YOE on this forum. I think if you have less industry experience, they want more signals and that's why there are two rounds. I followed the template as such: Problem statement-> Data -> Model -> Evaluation. For these rounds, I recommend Chip's blog: https://github.com/chiphuyen/machine-learning-systems-design which indeed helped me a lot.
An additional point I want to make is that: you really need to pay attention to the ML design rounds and behavioral rounds to cross the line for E5. I guess the same holds true for other tracks. It is OK to not be perfect in the general system design if you are targeting a machine learning track. I think coding is more of a foundamental requirement where they expect you to give a workable and effective approach in a short time. But being perfect in coding would not lead you to a E5 hire. It is the ML design and behavioral (complext project, cross-functional collaboration) that make the difference.