Facebook/Meta | E4 | Bay Area | Feb 2022 [Offer]
Anonymous User
7504

Info
Status: 4.5 years total, with 2 @ FAANG (Rainforest)
Position: E4 Software Engineer at Meta
Location: Bay Area
Date Interviewed: December, 2021

Interview Prep
Spent about 2-3 months prepping since I was also working at the same time.

Coding: Did about 100 LC problems total, but redid a lot of the same problems to make sure I understood and was not just memorizing solutions. During my prep, if I did not know the solution within 3-5 minutes, I would look up the solution and studied that. For me, there's not much value in struggling any longer than that. I tracked the problems I did and made notes of any issues I had. At the end, my time to complete problems on average looked something like:

Easy: <= 1 min
Medium: 1-3 mins
Hard: 3-6 mins

Behavioral: I am an interviewer for my current company so I get to hear a lot of stories and it's helped me tell the difference between a good and bad answer. I also have practice prepping for LPs before I joined so I was not too worried about this round. I just went through my current projects and created stories around them to fit into FB's core values.

System Design: Gr****ng, YouTube (Gaurav Sen, System Design Interview, etc.), System design primer. My plan was to practice designing 1 system a day for 30 days, but I was only able to keep this up for ~1 week before I started slacking. If you can, find someone to mock interview with and give you feedback. While I was doing this, I found that I was not managing my time efficiently and adjusted accordingly. It was also good practice going through topics I'd talk about so they would flow more naturally during the onsite.

Product Design: Same as above but also read through company API design documentation pages (Google, Slack, FB). Also read through API design pattern books from Manning Publications.

Phone Screen
45 minute technical screen with 2 medium coding problems and 5 minutes for questions at the end.

Q1: [Medium] Array problem variation found on LC. Did this problem during prep but blanked out in the first 10 minutes and could only think of the brute force solution. While coding the brute force solution and talking through it, the optimal solution came to mind and I implemented that afterwards.

Q2: [Medium] Binary tree problem not found on LC, had to be familiar with basic tree concepts. Again, could only think of brute force solution initially, but talking through my thought process made the interview seem more like a conversation with a coworker and I think that was what guided me towards an optimal solution.

Result: Moved to onsite 1 week later

Onsite
Coding #1:
Q1: [Medium] Math problem found on LC. Skipped studying this thoroughly during my prep since I felt this probably wouldn't be asked – spoiler: I was wrong. Could only come up with brute force solution and was taking too much time to come up with an optimal solution so we moved on to the second question and interviewer said if we have time we can come back to this.

Q2: [Medium] Problem around creating a custom data structure found on LC. Usually I'll spend more time asking clarifying questions, but I didn't want to run out of time so I discussed & implemented the optimal solution immediately and let the code flow through my fingers. Interviewer was satisfied and we went back to Q1. Luckily I was able to think of the problem mathematically and not in code which helped me come up with an optimal solution.

Coding #2:
Q1: [Medium] 2D Array problem that required logic/simulation to solve. I was familiar with the problem but it did not go as smoothly as I wanted since you had to be very careful on the implementation details to avoid missing edge cases. In the end, I came up with an optimal solution but the test case I chose to dry run ended up eating a lot of my time.

Q2: [Medium] Variation of array/math problem found on LC. Since I spent so much time on the previous question, I felt rushed on this and didn't ask too many clarifying questions. My mistake because midway through I realized I understood the problem incorrectly and had to change my approach. Barely managed to come up with an optimal solution with the time remaining.

Behavioral:
Standard behavioral questions about leadership, conflict resolution, etc. The interviewer was really easy to talk to and build rapport with. This was probably the easiest round for me since I had practice during my interview prep at Amazon for LPs.

System Design
Was asked to design a system for a product the interviewer was on the team of. Similar to some of the systems you'll encounter during prep but nothing identical so be prepared to take bits of everything you've learned and use it to satisfy all requirements. Went through the standard process of:

  • Gather requirements/non-functional requirements
  • Talked about API design/data model
  • High level overview

Didn't really spend too much time in the beginning talking about capacity estimation since I feel like this just wastes time until you dive into the specifics of how many machines, workers, database replicas, and other stuff you need. Interviewer focused on this halfway through the interview and it was probably the main focus of the interview.

Felt okay about this round, was able to answer all of the interviewers questions and concerns about scaling + algorithm of how the flow of data would work however I felt like too much time was wasted on capacity estimation and I was not able to dive deep into the implementation details around scaling.

Result: Passed initial debrief but HC wanted another follow up round with Product Design instead of Systems.

Product Design (Follow up)
This time I was asked to design a product feature – one we are all very familiar with using :). I skipped diving into the details for this exact design during my prep, but I understood the high level overview of how it should work. In the end, I was able to take my work experience and design a product that met all the requirements. The focus was on server/client interaction, resiliency, and extensibility of the product.

Result: Recruiter got back to me shortly after and informed me that the product design went a lot better than the initial system design interview and I would be moving forward to HC once again. A few days passed and I was informed that HC was excited to extend an offer!

Offer
Initial offer was lower than my current comp, so I negotiated a better deal. I was interviewing at other companies and being paid at the top of band at my current role helped a lot too. At the end, I was able to lock in a maxed out E4 offer.

For those asking about compensation: go to levels and filter for my role & area. My TC >= the 100th percentile listed there.

Tips

  • Study all the top LC problems even if you don't think they'll be asked.
  • Communicate your thought process. It'll help focus your thoughts but more importantly it'll give the interviewer something to work off of in case they wanted to give you hints.
  • Make sure you manage your time wisely.
    • For coding questions: choose appropriate test cases, ask enough questions so you understand that problem but not too many that you get started with 5 mins remaining.
    • System design: if you feel the interviewer is focusing too much time on one aspect, take control of the interview and cover more important topics (scaling, algorithm, etc.)

Thoughts:
I was surprised I didn't get asked any DS&A heavy problems, which was what I was mostly prepping for. Instead, it seems like the focus was on arrays/math which threw me off a bit. This was my second time interviewing for FB (first time was a few years ago but they offered me a lower TC than my current company so I declined).

Overall it was a pleasant experience and I'm glad I got through it all. TBH I felt pretty drained by the end of my first round of interviews and they told me they wanted a follow up interview. But trust the process and you'll make it through.

GLHF.

Comments (13)