I recently finished up (and flunked) a complete interview sequence for an iOS developer position at Facebook and thought it would be useful and helpful to recap the experience for the next candidates coming down the chute. If you pass your phone interviews, you'll be invited to spend a day at the Menlo Park campus. Unlike other big-name employers in the area (e.g., LinkedIn, SalesForce), Facebook travel coordinators have a better budget and more flexibility, so you can work with them to get the airlines & flights & hotel that work best for you. I recommend staying close to the Menlo Park campus, such as the very nice Aloft hotel right just across the Dumbarton Bridge in Newark. In my case, I asked for — and was able to stay at — a San Francisco city hotel; while it took about 90 minutes of driving down 101 to get to Menlo Park, I was thankful to get to catch up with friends. There are two sides to the Facebook campus: the Disneyland-side (designed by the same architects who did the streetscape of Disneyland in Anaheim) and, on the other side of Route 84, the ridiculously modern (and massive) Frank Gehry MPK20 building. The current building is 1/2 mile long (with at least five lobbies), and they're already building a new addition along the west side that will extend the building/campus there at least another 1/4 to 1/2 mile in length. When you make your on-site arrangements, the recruiter will call to give you helpful information to prepare for your experience. Interviews consist of at least two Ninja interviews (coding & algorithms), one Jedi interview (culture & "icebreaker" coding questions, supposedly not as difficult), and one Pirate interview (systems design & architecture). When you arrive at the lobby for your interview, you might be handed a mini iPad listing the names, pictures, and times of the people doing the interview (but you won't get to find out names until the actual morning you show up). This was actually the second time in two years that I interviewed at Facebook, and my experience the second time around felt somewhat more friendly and collaborative, which was a nice change of pace versus the usual (and exhausting) full days of technical interviewing you can experience at other big Bay Area employers. My interviews started at 10:45 a.m. and finished up at 3:45 p.m., and my previous experience had me starting at 9:45 and finishing around 2, so Facebook does not try to overload the candidates with "bonus rounds" at the end of the day like a traditional Microsoft interview would. If you are doing a second (or beyond) set of interviews at Facebook, such as I did this time, the interviewers will have a list of which questions you were asked the first time around (even years before), so they will not ask them again. Other pieces of advice I would offer to you: try to take "bio" breaks between each session, just to catch your breath and possibly stop at the kitchens to pick up another can or bottle of sparkling water. Lunch interviews do not count to the hiring committee AFAIK, so feel free to ask the tricky team or cultural questions that might be tough to ask to an official interviewer (e.g., I'd ask about work/life balance, if the free food in the cafeteria is consistently good, etc.). I really liked that the bathrooms are stocked with useful accessories (toothbrushes & floss, feminine care products), and if you have any chance whatsoever, try to get escorted up to the rooftop gardens of the MPK20 building because it's gorgeous up there (trees and shrubs and picnic tables and a grilled cheese sandwich stand). My interview sessions were held in a tiny room dedicated to interviewing, and I was thankful the temperature control actually worked somewhat (it couldn’t be adjusted below 69F), so I didn't get overheated, and I was also able to set the lights to half strength, so I wasn't blinded. I was very thankful to be able to walk out of the experience feeling positive this time around (a nice contrast to a typical Google interview, where the day is spent trying to shatter a candidate’s will to live). Unfortunately & unexpectedly, a week after my interview day at Facebook, I got the call from the recruiter with the sad news they weren’t going to move forward with me :-( The recruiter did provide me surprisingly detailed feedback from each interview though — if you look in my answer sections below, I’ll detail two places in my Pirate & Jedi sessions where I apparently goofed up enough to be rejected. Hopefully, my experience flunking the Facebook interview will help you to prepare properly to pass your interview day! If you find any of this information useful, PLEASE let me know by voting “yes” on the “helpful” button below. This helps to motivate me to be as detailed in my recaps as possible. Good luck to you!
The first Jedi question was this: Given an unsorted array of numbers, like [1, 3, 5, 4, 2], write a function that takes an integer and returns true if there's any pair of numbers in that array that can be summed up to the input integer.
For my Pirate (systems design & architecture), the interviewer drew up a vague picture of a cat picture inside a cell with a FB profile picture & name at the top of the cell and a "likes" and "comments" counts & buttons at the bottom of the cell.
I was asked to design what the interface for a ranked feed for an Instagram-like clone called "Cat-a-gram" would look like.
Design an enumerator (e.g. named FBSuperEnumerator) that has two APIs:
which, when given an input array that has content that can be either NSNumbers or NSArray, will expand all arrays embedded inside it.
That is, given an input of something like @[@1, @[@2, @[@3, @4]], @[ ], @5], each call to nextObject will display items in the expected order.
Given an array that contains numbers and/or other nested arrays, write an algorithm to come up with a sum of these elements, multiplied by the depth (or how many arrays deep) you are.
For example, what would you do with an input array that looks like:
[ 2, 3, [ 9, [ 1, 2 ]], 4]
Given a tree of nodes that looks like this:
A
/ \
B G
/ \ \
C D H
/
E F
Come up with an algorithm that determines the longest path from each node in the tree.
Here’s a ninja (i.e. supposedly not a heavy) question:
Given an array of numbers, reset the array to put all the non-zero numbers in front of all the zeros in the array, then return the count of non-zero numbers.
e.g., for an input array of [3,0,2,0,0,1,0,4], you’ll end up with a return value of 4 and an array of [3,2,1,4,0,0,0,0]
I do not remember if they asked me to do this in-line and/or return the adjusted array as well.
This is a question from my first interview (back in 2015), and I have a feeling it's still used:
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 that contains all the different possible letter combinations that, when typed into a telephone dial pad, would be equivalent to the original passphrase. That is, "fb1" equals "321" numerically; matching equivalent combinations include: "da1", "db1", "dc1", "ea1", "eb1", "ec1", "fa1" and "fc1".
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.