Status: 3 YoE, non-CS bachelors (psychology), CS masters.
Phone screen
I was contacted by a recruiter back in May and decided to take around 3 weeks to prepare myself for the phone screen. This was my second attempt to interview with Facebook after my failed phone screen a year ago so I decided to try a different preparation strategy. Before my phone screen, I took all the available mock interviews on P-R-A-M-P (right now they have around 30-40 questions and I have unlimited credits there), and solved around 100 FB-tagged questions on LC. My schedule was quite tight because I spent 2-3 hours a day doing mock interviews and another 2 hours solving problems on LeetCode (plus working). I tried to maintain a consistent day regime with exercise and walks to keep my sanity :)
Mock interviews were of immense help, and I cannot stress enough their importance. I used to get stuck and panic when I was not able to solve the problem right away (which happened almost every time) or when I did not understand the question right away. Mock interviews helped me to get used to that feeling and proceed despite it. With LC I tried to cover as much ground as possible and to solve at least a couple of problems on each topic without any help.
Virtual onsite
The onsite round was scheduled around 6 weeks after the phone screen.
(1) solved around 350 problems in total: ~100 easy, ~ 200 medium, ~ 50 hard
(2) revised ML fundamentals and tried to reverse engineer ML-heavy services provided by Facebook
(3) watched some youtube videos on behavioral interviews and prepared some stories from my professional experience
(4) since I have very little experience with system design and the position was ML-oriented I decided to just skim through a couple of system design videos to understand the general idea of how to answer such types of questions. I just wanted to be able to design a high-level solution, because it takes time and probably a lot of hands-on experience to achieve stellar performance in system design, so I decided to focus more on coding and ML design (prioritization is the key).
Round 1: Coding round. Optimally solved two questions.
Round 2: Coding round. Optimally solved two questions with one hint from the interviewer. One question was not from LC.
Round 3: Behavioral round. The conversation felt very relaxed, the discussion was about past conflicts, challenges, etc.
Round 4: ML design. Related to one of the FB services (ranking).
Round 5: System design. A common system design question.
Feedback
I received the results and quite extensive feedback in two weeks. According to the recruiter, my performance in the behavioral and coding round was very good (strong hire / high confidence). However, the ML design round was just ok, they wanted me to dive deeper and discuss various components in more detail. Since this round had a lot of weight, it has cost me my offer. Nevertheless, the recruiter said that it was a close call and encouraged to keep in touch and reapply in 6 months.