Facebook | E5 SWE | NY, USA | Summer 2020 [Offer]
Anonymous User
21667

E5 in New York. I won't share all specific questions because NDA. No CS degree but I do have a bachelor's and 7-8 years of professional dev experience as well.

After a phone screen in April, I was extended a virtual interview. This wasn't canceled when FB did a hiring freeze, which is how I inferred the role. I scheduled the virtual onsite for mid-June and took about 5 weeks to prepare.

Round 1: A variation of Range Sum. It was a class design question to be able to query subsection sums and set an element in the grid at grid[i][j]. There is a way to make queries constant time, which was the second half of this round

Round 2: Add two numbers and a topological sort question

Round 3: A product design round. I did relatively poorly here, Bluejeans drawing was laggy and I lost track of time so I did not complete.

Round 4: Behavioral, then a brief coding question with a heap solution. Pseudo coded the solution, then after getting optimal complexity we worked on just optimizing further (eg, you can reduce the payload of something without changing complexity)

Round 5: Can't find it on LC but first question was comparing two strings to see if equivalent, given the rules "f6k == facebook, i18n == internationalization, etc". Second was k closest points

3 weeks later got feedback for a follow up design round. Pretty clear to me before I got the feedback that if I did get rejected, that would be why.

Followup design: product design. Just the same as system design, but you need to spend more time thinking about the API, data model, keeping payloads appropriate size, keeping data model flexible to new requests, permissioning, etc. I DID whiteboard the entire system but didn't talk too much about caching, replication, redundancy.

Offer extended.

I did about 230 total Leetcode questions, including all Top 100 FB Sorted by Frequency. I repeated every FB question until I could pattern match and solve each one in under 10 minutes.

Tips:

  1. Learn patterns - top k means at least consider a heap. "Find the order of these relationships" - consider topological sort.
  2. Solve problems on paper. Leetcode is useful but if you can solve on paper you'll be fine in coderpad
  3. Talk out loud a lot. Nobody loses points for thinking.
  4. As soon as you understand the question, propose new inputs. for example if your question is remove invalid parens, suggest one or two inputs and example outputs. This gives you test cases AND shows you're thinking
  5. Immediately propose naive solution - eg if you have Range Sum immediately just note "the obvious solution is n^2 runtime without using space, but I think we can do better." Show your work, as professors like to say.
  6. Pseudocode a solution ASAP to get interviewer buy in.
  7. Once you get to a working solution, go back to your test cases and manually walk through the code. Open a block comment and write line by line the data transformations.
  8. The product design interview is HARD. Do a ton of these on paper for anything you can imagine. Online ordering at Walmart, pretend the deli counter at your grocery store needs to scale to your entire state, whatever you see. Just practice.
  9. Come up with a script for design interviews. I use the acronym README - requirements, estimations, API, data model, main system, extended system (extended means load balancing, caching, etc).
  10. Write a spreadsheet for your behavioral interview. You can make one story about three different questions. For example, "I was the lead of this feature" can be about technical challenges, how did you give feedback, how do you prioritize. Just find 4-5 anecdotes that can scale to various possible questions.
  11. Buy a whiteboard. Google drawing and bluejeans whiteboard aren't as good.
  12. Trello board. Use spaced repetition. I'll add a pic of mine below

Resources:

  1. Leetcode premium. Just do it and do a ton of questions and the mock interview tab. Repeating questions is way better than solving 1000 questions and not understanding the patterns. You should be able to see certain words and immediately reach for data structures and algorithms based on the pattern. Just like a musician - skill means focused repetition.
  2. P-R-A-M-P: do lots of mock interviews. I did about 10 before my onsite. 7 coding, 3 design.
  3. g-r-o-k-k-i-n-g the SD: pay for it, go over it, practice.

Trello sample

image

Comments (56)