I recently completed a full interview sequence with Facebook and thought it would be useful to recap it all for the next candidates coming down the pipeline.
The interview experience starts with a technical phone screen, which lasts for about an hour. If you pass that, you'll be invited out to Menlo Park. My interviewing day started at 9:45 a.m. and officially finished at 2 p.m. (though I didn't actually leave until closer to 3 p.m.). The recruiters are very upfront about what happens in the interview: the initial "jedi" session, which is a combination of culture-fit and a supposed "easy" coding question; two "ninja" sessions, which are in-depth coding/algorithm exercises (which I've recapped below); and one "pirate" session, which is an architecture and design session.
In terms of difficulty, I felt that the questions were relatively fair. They weren't as relentlessly challenging and tricky as what I've encountered at a traditional Google interview, but none of them were an easy walk through the park. My own personal performance was probably negatively impacted by the stuffiness of the tiny interview room (of course, adjusting the thermostat didn't seem to make a difference) and my general nerves (which are always in panic mode every time I do these hardcore technical screenings).
On the flip side, I was really impressed with the working environment for employees, with thoughtful touches such as all bathrooms being stocked with useful items (toothbrushes and paste, feminine care items, etc.).
The campus is on the shores of San Francisco Bay, so depending on the weather (or the drought), you might get a view of water or of a marshy field. I have a feeling that commute times to campus can be frustratingly long, depending on where you live in the Bay Area. If you are able to handle whatever commute you end up having to do, the split campus IS a gorgeous and inspiring place. I say "split campus" because there are two different Facebook campuses on both sides of Highway 84. The older campus is on the East side, and the reason it feels like a direct copy of the Downtown Disney mall in Anaheim is because it was done that way on purpose. The newer West building is a massive showpiece designed by Frank Gehry, and after my 5-hour interview party was over, I was able to take a 10-15 minute walk around the beautiful rooftop gardens there with the recruiter.
Weirdly enough, aside from a "how do you think you did?" follow-up from one of the recruiters a couple of days after the interviewing day, I never heard anything back from anyone. In other words, it's been over a month, and I never got the official rejection email or phone call. My guess is the recruiters either lost track of me (which seems strange because they were so on top of arrangements prior to the interview) or they extended offers to one wave of candidates and let other "runner-up" candidates dangle while the first wave made decisions. That was really the only process hiccup along the way.
Hopefully, my experience flunking the Facebook interview will help you to prepare to pass your interviewing day. If you find any of the information in my interview review helpful, please let me know by voting "Yes" on the "Helpful?" question below (this helps to motivate me to be as detailed as possible).
Phone Interview Question #1:
Given an array (for example, [1, 0, 2, 0, 0, 3, 4]), implement methods that:
[1, 2, 3, 4, 0, 0, 0] and [4, 1, 3, 2, X, Y, Z] are valid outcomes.Given an array of words, how would you eliminate duplicates?
You have a simple tree structure Ⓐ and its clone ⓐ.
Each node in the tree has a pointer to its parent as well as an array of its children.
Given an original tree's node Ⓑ and its cloned tree ⓐ, implement a method that returns ⓑ (the clone of Ⓑ).
(Imagine finding the matching UIButton/UISlider/UIView in a separate cloned view controller.)
Original Tree:
Ⓐ ┏━┻━━┓ ◯ ◯ ┏┻┓ ┏━╋━┓ ◯ ◯ ◯ ◯ ◯ ┏┻┓ ┃ ◯ Ⓑ ◯
Cloned Tree:
ⓐ ┏━┻━━┓ ◯ ◯ ┏┻┓ ┏━╋━┓ ◯ ◯ ◯ ◯ ◯ ┏┻┓ ┃ ◯ ⓑ ◯
A telephone keypad has letters associated with each number (e.g., 2 = abc, 3 = def). Given a passphrase of "fb1" (e.g., one that you might use to log into a bank account), come up with an algorithm that would assemble an array containing all the different possible letter combinations that, when typed into a telephone dial pad, would be equivalent to the original passphrase.
iOS developers have a dispatch_after(when, queue, block) Grand Central Dispatch (GCD) function they can utilize, but once set up, these calls cannot be easily cancelled. Describe how you might implement a more convenient version of this, named cancellable_dispatch_after.
Pretend you're given a simple iOS app with a table view and a text field that looks like a search bar. It has methods to call a remote server to get potential autocomplete words. Describe how you would implement the iOS side of this feature.
The following metrics were computed from 10 interview experiences for the Meta iOS Developer role in Menlo Park, California.
Meta's interview process for their iOS Developer roles in Menlo Park, California is very selective, failing most engineers who go through it.
Candidates reported having very good feelings for Meta's iOS Developer interview process in Menlo Park, California.