Hi,
It's great to see a collaborative community of people sharing their interview experiences. Here's my interview experience. Hope this helps!
Note: I won't reveal the exact questions because of NDA, also the categories that I have written for each question is how I interpreted and solved the questions. They may not always match the tags on LC. Also, one clarification: When I say Top k, I mean, when you sort in descending order of frequency on the FB Problems page (https://leetcode.com/company/facebook/).
YOE: less than 3.
INTERVIEW EXPERIENCE:
Phone Screen (Coding -- had one week to prepare):
Q1: Binary Search (Top 50 FB)
Q2: Graph (Top 250-300 FB)
A1: Solved, 18 mins roughly with all the analysis, code walk-through with examples and follow-ups.
A2: Solved, 18 mins roughly with all the analysis, code walk-through with examples and follow-ups.
Had time left for me to ask questions, we finished early.
My Analysis after interview: Did well, should get through.
Interviewer Feedback: Strong, called for on-site.
My Analysis of Interviewer Feedback: Agreed.
On-site (VC -- 2 weeks after Phone Screen):
R1: Coding
Q1: Graph (Top 50-100 FB)
Q2: Graph (LC Hard - Outside of Top 400 FB)
A1: Solved, 20 mins roughly with all the analysis, code walk-through with examples and follow-ups.
A2: Gave brute-force solution and coded it up. When I found the question and looked at the solution, I realized I wouldn't have been able to solve it even if I was given a lot of time, I just haven't seen this technique before.
My Analysis after interview: I did the best I could. However, expecting borderline because FB wants you to complete two coding questions perfectly.
Interviewer Feedback: Borderline Positive.
My Analysis of Interviewer Feedback: Given FB's requirements, I agree with the feedback, but in general I don't agree that someone will be able to solve both in 45 mins, unless they knew the solution to the second question and had practiced writing that a few times.
R2: Coding (Interview started late, interviewer said it's okay to take extra time)
Q1: Strings/Hash Map (Top 50 FB)
Q2: Strings/Search (Top 50 FB)
A1: Solved, 17 mins roughly with all the analysis, code walk-through with examples. Lengthy code.
A2: Solved, 23 mins roughly with all the analysis and a follow-up. Very lengthy code.
My Analysis after interview: The optimal codes require lengthy coding. Also, I finished both on time, so positive about this round.
Interviewer Feedback: Strong Positive.
My Analysis of Interviewer Feedback: Agreed.
R3: Coding (Interview started late, lots of connectivity issues and couldn't hear half the things the interviewer was saying, no extra time given)
Q1: Strings/Hash Map (Top 250-300 FB)
Q2: Strings (Top 50 FB)
A1: Solved, 20 mins roughly with all the analysis, code walk-through with examples.
A2: Partially solved (brute force solution), 1 line was left, interviewer said time's up and that he understood what I am doing. I realized later that I mis-heard the question. This was a question that required returning 'one' answer, not 'all' possible answers which is a harder question. I solved the harder question with an exponential solution which was not required and unfortunately the interviewer didn't say anything about it before I started coding.
My Analysis after interview: If I get rejected because of this, that would be horrible because when I told the solution for the second problem the interviewer could have asked me why I needed to implement an exponential solution and not a linear time one. I would have been able to figure out that he wants any one solution, not all. It was so hard to hear what he was saying and I mentioned that a couple of times at the beginning of the interview. This is where I feel interviewers can be more understanding. Also, given that we started late, could have given a few minutes of extra time.
Interviewer Feedback: Borderline
My Analysis of Interviewer Feedback: Sigh
R4: Distributed System Design (Google Drawing)
Q1: Standard question about designing an app. Question can be found on G-the-System-Design (Medium).
A1: I approached it differently from how it's done in G-the-System-Design. Since I have extensive experience working on distributed systems at large scale, I designed it exactly how it's implemented at companies like FB and Google. Also, I didn't draw anything like I would have if I had a whiteboard. I wrote down every point I said (like distributed DB design, rowkeys, etc.), and drew very simple one line diagrams, like a --> b --> c.
My Analysis after interview: Should be very positive, unless the interviewer thought otherwise. Also, the interviewer didn't have any questions except one aspect of my design. I drove the entire conversation.
Interviewer Feedback: Strong Positive.
My Analysis of Interviewer Feedback: Agreed.
R5: ML System Design (Google Drawing)
Q1: Asked about how I would implement an ML model for a particular FB/Instagram feature. It's a very specific feature and also haven't seen models for this kind of feature before, either in material suggested on Leetcode by other people who have done well in the ML round, or ML blogs/published papers,
A1: Had to think through the details as I was answering.
Problem Formulation: 5 mins; Data: 8 mins (lots of questions here); Features: 5 mins; Model: 27 mins, Had a long discussion on the modeling part as it was probably unconventional what I was suggesting, and I could see that the interviewer was getting confused with my model, tried my best to explain the details; Experimentation and Evaluation: Didn't have time, so quickly ran through in 30 secs.
My Analysis after interview: I gave a model that would work well imo and tried my best to explain my choices. Later, I did find a different problem that has a similar model implementation at FB. I think the interviewer will be borderline positive or even negative, given that the discussion was not as smooth as it would have been if someone had worked on similar problems in the industry or seen similar problems before.
Interviewer Feedback: Borderline Positive, said that my confidence in the modeling portion was weak while other most parts of the ML pipeline were strong.
My Analysis of Interviewer Feedback: Partially Agree. I agree that if someone has experience with such problems then they may be able to do better than me for this problem. I don't work in these kinds of ML problems, so it was not my lack of confidence in ML modeling, but the fact that I was thinking and coming up with a solution as I was talking about it that prompted the interviewer to think that I am not confident. However, I appreciate that the interviewer was positive and not negative about my effort.
R6: ML System Design
Q1: Standard ML design question about an FB/Instagram feature.
A1: Lots of question-answering (not a round where I was able to lead off with an end-to-end design, given the amount of questions asked).
Problem Formulation: 5 mins (one question asked about my choice of problem definition and answered it); Data & Features: 10 mins (lots of questions here, one of which I think interviewer was very unsatisfied with); Model: 20 mins. Talked about two models, and answered questions regarding those; Experimentation and Evaluation: Questions about offline and online experimental procedure, metrics and offline-online gap.
My Analysis after interview: Mixed feelings. For one question in the data/features part, I feel that I could have explained better because after the interview I thought about it and understood what he was asking. I didn't fully understand his question during the interview. The interviewer probably felt that I have lack of knowledge. I explained what I knew about the rest, don't know if there is a better way to answer the other questions.
Interviewer Feedback: No feedback given
My Analysis of Interviewer Feedback: N/A
R7: Behavioral
Q1: Lots of rapid-fire questions (approx. 15) around projects, leadership, collaboration, continuous learning, life skills and applications of those skills at work, etc.
A1: Did the best I could, given that I can't detail my work projects due to the nature of my work.
My Analysis after interview: Probably could have articulated a few responses better had I prepared. Since I was not ready to answer in detail about my work, it would have needed preparation to give a response immediately without revealing details. I had to think about the responses to some extent. Bad decision not to prepare, worried about this.
Interviewer Feedback: Positive (I actually don't know whether this was borderline or strong, was told that the feedback was good enough not to warrant any red flags).
My Analysis of Interviewer Feedback: Good enough for me.
Waiting to hear back about the final decision, not expecting much.
Preparation:
I did 132 FB questions after sorting them by frequency -- skipped some hard questions from that ranked list. Read three different problems from G-the-System-Design to understand what all points need to be covered. For ML Design, read a few papers and blogs. Didn't prepare for behavioral.
Edit 2 (updating status):
Received a call after 6 weeks that I was rejected, was told that it was a borderline decision. Recruiter said that the third coding round was borderline which I am guessing is due to the second question in that round. I wasn't given feedback on the second ML round.
Edit 1 (answering questions asked by others):
Q: Did the recruiter directly call you to give feedback or did they ask you to setup a time slot in their calendar? How long did it take for feedback?
A: After a week from the on-site interview, recruiter asked me when I was free for a chat and gave an update on the feedback received for 5 rounds.
Q. What does it show as status in the recruiting portal thing?
A: Just thanks for interviewing, nothing else.
Q: ML Modeling Round: How deep do they go into modeling?
A: They go into a lot of depth (60-70% of the interview will be spent discussing models) but from an implementation perspective and not from a theory perspective per say. I would have loved to answer theoretical questions about different models because that's where my strength lies. However, they were more interested in the feature representations, the model parameters, choices for each parameter when you call the corresponding model methods, almost to the level of code even though you are not required to write code. For example, if you are talking about DNNs they might want you to talk about different optimizer choices and why choose one over the other.
Q: Do we need to learn about the very latest techniques in deep learning?
A: Not necessarily, unless you are planning to use them in your solution. They want you to explain your choices.
Q: FB Job Position
A: I was told I can choose if I get an offer because (a) they have ML teams at multiple locations, and (b) I was ready to go to any of those places.
Q: Whether I work at FAANG currently.
A: Nope, I interviewed with only one of the FAANGs once before this, and that was also at FB where I was rejected after 7 rounds citing mixed feedback (3 strong positive, 3 borderline undecided, i.e., can vote either way, 1 negative). The result was completely unexpected and I was pretty disappointed at the time. Seems to me it'll probably go the same way again this time. My only relation to FAANG is that my manager at my current job used to lead one of the top teams at a FAANG for several years, so I have learned a lot of stuff from working with him, not w.r.t ML (because we don't do ML on a regular basis) but large scale distributed systems and products at scale in general. Also, I have made significant progress with multiple promotions at current work in 3 years and my manager values me highly, so that's a positive!
Q: Do you have a Ph.D ?
A: Yes, but not in ML.
Q: Why do you want to do ML SWE? Why not data scientist or applied scientist or research scientist?
A: I do a mix of data science and data engineering at scale at my current role, want to move towards ML SWE to gain experience in the implementations of ML models and pipelines. Never got a call for research scientist type positions because my PhD isn't in ML and so people just pass on my resume without considering it for such positions.
Q: Whether ML round is usual for SE.
A: No, I had applied for SE in ML. For non-ML SE, you'll have coding, distributed systems, and behavioral.
Q: Can you please elaborate a bit on behavioral questions?
A: They were along the lines of: can you tell about a past experience where you had to collaborate with a team and there was a clash of opinions and how did you resolve that? what is one impactful technical contribution you are proud of and why? an example of clash with manager and what is your perspective about it and how was it resolved?
Q: Where is the G-the-System-Design, somewhere in LeetCode?
A: Search exactly as I have written on Google :) It's a course on a different site.