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 Glass door, 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).
Additional reading resources:
Cracking the Coding Interview, Introduction to Algorithms, Algorithms in C.
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.
No comments:
Post a Comment