If you're interviewing for an Android Engineering role at Facebook or you're just curious about the interviewing process...keep reading! We want to be transparent about what to expect during the interview process so you feel well informed and have a positive experience.
A Facebook Android Engineer has broken down the stages of our Android Engineering interview process covering the Initial Interview and Onsite Interview with many tips, links and insights to help you prepare and do your best.
STAGE 1: INITIAL TECHNICAL SCREEN, ANDROID
My name is Joe B. and I'm a Software Engineer at Facebook New York. As someone who frequently interviews Android candidates, I've compiled some tips on how to prepare for your interview.
What to Expect:
Your interview will be about 45 minutes long. Not all interviewers follow the exact same time breakdown, but the following is typical:
Tips for the Interview:
Think out loud: Talk through your reasoning. It helps your interviewer follow along, learn about your problem-solving skills, and provide hints if needed.
Write a working solution and iterate. It's better to have a non-optimal but working solution than random fragments of an optimal but unfinished solution.
Listen for hints. If your interviewer gives you hints to improve your code, please run with them.
Prep questions for us in advance. You'll most likely have some time at the end for questions for your interviewer. Some people find it easier to come up with a few questions in advance rather than think of them on the spot.
Don't worry about memorizing tables of runtimes or API calls. It's always good to know how to figure out approximate runtimes on the fly but the code you write is more important.
If your solution is getting ugly, step back. Most coding interview questions are designed to have reasonably elegant solutions. If you have festoons of if-else blocks and special cases everywhere, you might be taking the wrong approach. Look for patterns and try to generalize.
Think of cool things that you've done in engineering. We'll want to hear about the things you've made.
Don't hesitate to cancel if something comes up. If you can't find a quiet space, a good Internet connection, and a good phone connection, or you had to stay up all night with a sick child or broken system, please reschedule. We want you at your best and will be happy to move your interview to a better time.
STAGE 2: ONSITE INTERVIEW, ANDROID
As an interviewee for an engineering position at Facebook you’re going to have 4 or 5 interviews over the course of the day. These will be distributed across three different types of interviews:
1. The coding interview – where you’ll solve some general coding questions and some android-specific questions.
2. The design interview – where you’ll be asked to show off your design skills. The design question will be focused on either systems or product, depending on your background.
3. The behavioral interview – where you’ll talk through your previous work experience, motivations, and a number of other behavioral questions.
Unless you've scheduled your interview for very early or very late in the day, someone from engineering or recruiting will take you to lunch. This will give you a chance to ask lots of questions of someone who isn't interviewing you.
1. The Coding Interview
What to Expect:
The coding interview is typically harder than the initial interview: we ask more difficult questions and have a more exacting evaluation. This interview is 45 minutes. Not all interviewers follow the exact same time breakdown, but the following is typical:
Introductions: The first 5-10 minutes will be an introduction and questions about Android. Your interviewer will ask questions about your Android knowledge.
These questions probe your familiarity with building for the Android platform: for instance, how to use key APIs and how to solve common problems you'll encounter as a developer. We expect that you'll be able to answer most of these questions from your day-to-day work and shouldn't need to study much. It wouldn't hurt to familiarize yourself with core Android APIs if you might be rusty.
Coding: The next 25-35 minutes will be one or more coding problems.
Ask Us Anything: We try to reserve the final 5 minutes for your questions for the interviewer. This part gives you a chance to learn more about Facebook from someone in engineering and gives your interviewer a chance to learn more about what you're interested in.
How to Prepare:
If you haven't already, check out the info about coding interview preparation above in the Initial Interview. The onsite coding interview will be similar to a initial screening interview, except that it will the questions will be harder and will be evaluated more exactingly.
2. The Design Interview
What to Expect:
The design interview is 45 minutes. These almost never involve coding - you'll spend the interview talking and drawing on the whiteboard. As with all interviews, the interviewer will typically save the last five minutes for your questions. The purpose of the interview is to assess the candidate's ability to solve a non-trivial engineering design problem. To that end, your interviewer will ask you a very broad design problem and evaluate your solution.
We try to match candidates to engineers with related expertise. Candidates in the Android pipeline come from all sorts of backgrounds: some build fast-twitch games, others build network libraries, others build apps to control proprietary hardware via Bluetooth. We expect every Android candidate to be familiar with Android in general, but if you have a highly specialized background in a field we're hiring in, we'll try to match you with a interviewer with the expertise to examine it.
*We wouldn't ask this particular question in practice because email protocols are complicated and we certainly wouldn't expect a candidate to be familiar with them.
Tips for the Interview:
Outline the high-level requirements: Describe what components you'll need, how they fit together, and what the Android platform provides to help you build that solution.
Be holistic and detailed: Move effortlessly from the high-level “you must preserve battery” to the precise “you need to minimize polling, so use GCM.” Show your interviewer that you can build a large system on Android.
Explore the inherent tradeoff: Make intelligent decisions about each of those tradeoffs.
Drive the discussion with the interviewer: Part of the signal the interviewer hopes to gather is whether you've learned how to build projects on Android through hard experience. Your ability to anticipate and work around typical problems is part of that signal.
Treat the interview as a conversation: Be sure to ask clarifying questions and make sure you drive towards a good solution.
3. The Behavioral Interview
What to Expect:
The behavioral interview is actually part behavioral interview and part coding interview. The behavioral part is about you and your history, your resumé, and your motivation. The purpose of the behavioral interview is to assess whether the candidate will thrive in Facebook's peer-to-peer, minimal-process, unstructured engineering organization.
The coding part is a shorter version of the coding interviews above. We include a coding question in this interview to supplement the two coding interviews and get additional coding signal.
Tips for the Interview:
Familiarize yourself with our
5 core values (move fast, be bold, focus on impact, be open, and build social value). This is how we work together to make the world more open and connected. We look for people who believe in these values and practice them daily. Be open and honest about your successes and failures.
Be humble and focus on team work, leadership and mentorship qualities.
Be yourself! Be transparent about your successes and failures.