I have around 6.5 years experience in Android development. I joined Meta as a new grad in 2017 and never gave an interview after that. I plan to give interviews in about 6 months from now.
I see lot of resources available online for Backend System design interviews but very little information about Mobile System design interview.
Any pointers on what the interview process looks like/ how to prepare for interviews at this level?
Thanks
I interviewed for a mid-level Android role but I'm sure senior roles have the same interview rounds just the difficulty may vary. Android engineering interview rounds differs from company to company. Here is what my experience was when I interviewed at a few companies recently:
Meta: Data structures and Algorithm, System Design, Behavioral
DoorDash: Data structures and Algorithm, App live coding, Android domain level round, System Design, Behavioral
TikTok: Data structures and Algorithm, App live coding, System Design, Behavioral
Verkada: App live coding, Android domain level, System Design, Behavioral
How did I prepare for each interviews
Data structures and algorithm: I've been doing this since four years so it just took me a week's time to revise them all. I have solved around 500 problems on Leetcode but you don't need to be doing these many problems. You can just do the commonly asked problems and company specific problems. Try not to memorize a problem but understanding the concept, pattern and intuition will take you a long way. I studied the following data structures and algorithms.
Data structures: Array, stack, queue, HashMap, Heap, Binary Tree, Graphs
Algorithm: Binary Search, Prefix Sum, Sliding Window, BFS and DFS, Union Find, Backtracking and Two Pointers
Then went over the Neetcode 150 problem list https://neetcode.io/practice.
For every company I also went through their tagged problems on leetcode.
Android live coding: Used the Android studio to practice building sample apps like showing api data in a recycler view, build timer app using Android coroutines and compose, migrate data from one screen to another, etc. Following are the things to take care of to ace this interview:
Android domain level interview: This interview comprises questions related to Android specific development. I used this Github repository to prepare for this interview https://github.com/amitshekhariitbhu/android-interview-questions
System Design:
Following are the resources and guidelines that I used to prepare for Meta Android Design interview
Here are topic specific links that I found very useful
To ace a Mobile System Design interview, these are the topics I recommend studying and finding examples for:
Try to find pros and cons for the following and come up with why would you go with the one over the other
App scalability topics (Important for apps with billions of users)
This is my approach while tacking an Android System Design problem:
Mindset that help me build an end to end system: Thinking as if I am using the app and coming up with different scenarios and then discussing possible solution like
Behavioral Interview: I kept ready multiple work-related stories from my past work experiences and did few mock interviews to answer questions in STAR (Situation Task Action Result) format. I used the guidelines from the educative behavioral course.
Hope this helps. Thank you!
What part of Meta are you doing Android for? Is it Facebook/Messenger? Or is it Instagram/WhatsApp/Reality Labs?
If you're on Facebook/Messenger, you're probably using Litho which nobody else in the industry uses and honestly doesn't truly feel like Android to me.
If you're on Instagram and more Reality Labs-ey stuff, you should be writing more standard Android, especially at Instagram. A big reason why I went to Instagram and loved it there is that you're working with core Android fundamentals that can carry over anywhere.
As for WhatsApp, I'm unsure what their Android stack looks like.
Regardless of what part of Meta you do Android for, I highly recommend trying to build some Android apps from scratch. From my experience, mobile interviews are very targeted, so just building Android stuff will help you across practical coding, system design, and any trivia/knowledge check questions. In other words, build side projects: [Taro Top 10] Building Impressive Side Projects
As for the more generic stuff that any engineer can potentially run into on an interview, I recommend these:
Ok I'm re-reading your question. You ARE a Senior Meta Engineer already and you have to interview OTHER people?
I am also re-reading the question now, haha. It feels ambiguous to me, but "giving interviews" can also mean interviewing others for Meta. I re-read the question a couple more times, and I'm still leaning towards that they're looking externally but could be wrong of course.
If the idea is to learn how to give interviews, I recommend this: [Masterclass] How To Be An Amazing Interviewer In Tech
I have interviewed for a few senior Android/Mobile roles recently at some high growth startups and FAANG+ companies. Based on that here are some possible questions:
Platform team interview
Product team interview
I was also told by the recruiter you should be talking 90% of the time and the scenario is you are a Senior engineer at this company leading this project and now presenting the plan to a slightly a more junior engineer or two who need to understand what is happening.
I don't want to contradict Alex here, but I would highly recommend NOT learning this stuff on your own on a side project. It is super hard to write good code let alone have even passable architecture on a solo project when you are learning. What I did instead is work at a less prestigious company that says they are open to new ideas and/or is small, and then experiment with all of this stuff while being paid there and getting your work reviewed by Senior engineers and then reapply when this kind of question seems easy/doable.
Edit: Sorry I forgot that you are already a Senior at Meta, in that case of course you can study mobile architecture and build a demo of some stuff that does very little but is correctly built and then crush this. ETA 2-3 months
I don't want to contradict Alex here, but I would highly recommend NOT learning this stuff on your own on a side project.
I agree with this actually, largely with more high-level system exercises at bigger companies. It doesn't make sense to set up a side project with overkill mature architecture like RxJava2, Dagger, MVI/MVVM, etc.
However, side projects are crucial for the practical coding rounds, which are very common at startups and pre-IPO/recent IPO companies. I joined Robinhood 4 months before it went public and they had me build a small Android app from scratch during the phone screen and do another, more complicated one during the onsite. In these exercises, completion is more important than clean architecture due to the time pressure.
A lot of Big Tech engineers (like those at Meta) fail these kinds of rounds as they have never written vanilla Android before and often don't understand the underlying concepts due to constantly working within Big Tech abstractions.
Ok I'm re-reading your question. You ARE a Senior Meta Engineer already and you have to interview OTHER people? Interesting that your manager and teammates don't have a playbook for this - I would check with them. Otherwise I guess the above has some ideas