Jul 14 2016

Preparing for your Android Engineering Interview at Facebook

By Meta Careers
Share icon
Facebook share icon
Facebook share dark icon
Whatsapp share icon
Whatsapp share icon
Twitter share icon
Twitter share dark icon
Close icon
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.
="Joe, a software engineer in Facebook's New York office."


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:
  • 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.
    • These problems can be Android-specific but are usually not. Typically, you'll have questions that exercise your knowledge of data structures and algorithms. You might have one long question or more shorter questions.
  • 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:

  • Do as many coding questions as you can. Visit Glassdoor, Careercup, Project Euler, or Facebook Code Lab or another site that hosts questions. The idea isn't to see every question, but to become familiar with the pattern of interpreting a question, formulating a solution, and writing an efficient, bug-free program without a compiler.
  • Practice on a whiteboard or with pencil and paper. Practice under time pressure: coding speed is important. The more rigorous your training, the easier you'll find the interviews.
  • Go over data structures, algorithms and complexity: Be able to discuss the big-O complexity of your approaches. Don't forget to brush up on your data structures like lists, arrays, hash tables, hash maps, stacks, queues, graphs, trees, heaps. Also sorts, searches, and traversals (BFS, DFS). Also review recursion and iterative approaches.
    • Our typical coding questions aren't phrased as “implement x”; they're “solve this problem.” You can pick from a number of approaches. (No one is going to ask you “implement Knuth-Morris-Pratt” or “construct a 2-3-4 tree.”)
    • Your reasoning is important. Engineering is all tradeoffs so be able to discuss those.
  • Know Android. The purpose of the Android pipeline is to find people who've built serious software in Android.
    • Be familiar with the basics: Activities, Views, Fragments, Services, and all the rest.
    • Know about concurrency, networking, storage, rendering, and everything else involved in making a mobile app.
    • It certainly wouldn't hurt to read a book like Joshua Bloch's Effective Java (which is great for anyone who uses the language, not just for interviews).

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.

        How to Prepare:

        • Reflect on your projects: Think about the projects you’ve built. What was easy, and what was difficult?
        • Think through these questions: “Tell me how you'd design an email client for Android.”* Some obvious questions you'll have to answer might be:
          • How do you fetch and store mail?
          • How do you capture the user's preferences about notifications and notify them of new mail appropriately?
          • How do you manage the conflicting demands of preserving limited resources (battery, network, CPU, etc) on a mobile device with giving the user up-to-date notifications and minimizing time spent waiting for messages to sync?
          • How would you use the storage, networking, UI, and other libraries on Android to implement what you need?
        *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.

        How to Prepare:

        • Review your own resume: Your interviewer will almost certainly ask about key events in your work history.
        • Motivation and collaboration: Different interviewers will ask different questions. When I do a behavioral interview, I typically seek two signals in particular:
          • What is the candidate's motivation? Why do they want to work at Facebook? Why are they working as a software engineer?
          • How do they collaborate with their peers? How do they resolve conflicts?
        • Support each question with some concrete examples or anecdotes:
          • What were some of the best things you've built?
          • What are you proud of?
          • What could you have done better?
          • What were some excellent collaborations you've had?
          • Tell me about a time when you advocated for and pushed your own ideas through despite opposition?
          • How do you deal with conflict?
          • How do you like to give and receive feedback?
          • What kinds of technologies are you most excited about?
          • Why Facebook?

        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.

        Stay Connected!

        Meta is proud to be an Equal Employment Opportunity and Affirmative Action employer. We do not discriminate based upon race, religion, color, national origin, sex (including pregnancy, childbirth, reproductive health decisions, or related medical conditions), sexual orientation, gender identity, gender expression, age, status as a protected veteran, status as an individual with a disability, genetic information, political views or activity, or other applicable legally protected characteristics. You may view our Equal Employment Opportunity notice here. We also consider qualified applicants with criminal histories, consistent with applicable federal, state and local law. We may use your information to maintain the safety and security of Meta, its employees, and others as required or permitted by law. You may view Meta Pay Transparency Policy, Equal Employment Opportunity is the Law notice, and Notice to Applicants for Employment and Employees by clicking on their corresponding links. Additionally, Meta participates in the E-Verify program in certain locations, as required by law.

        Meta is committed to providing reasonable accommodations for qualified individuals with disabilities and disabled veterans in our job application procedures. If you need assistance or an accommodation due to a disability, you may contact us at accommodations-ext@fb.com.
        Let us know you're interested.
        Share your resume or LinkedIn profile with our recruiting team and create personalized job alerts.