5

How to Prepare for Android/Mobile Senior Software Interviews?

Profile picture
Senior Software Engineer [E5] at Meta10 months ago

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

572
6

Discussion

(6 comments)
  • 5
    Profile picture
    Mid-Level Software Engineer at Walmart
    9 months ago

    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:

    • Make sure you keep a project open in Android Studio while adding some basic libraries for View Model, Coroutines, DI library, Retrofit or their alternatives based on your preference. This will save you a lot of time during interviews.
    • Choosing an architecture and justifying it's use
    • Clear communication while you code the app
    • Recommend using modern ways of building Android apps.

    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:

    • Networking and communication protocols (REST, WebSockets, Server-Sent Events, Push Notifications, etc.)
    • Storage (Relational Database, File storage, Key-value based)
    • Data Management (Offline storage, Caching, Pre-fetching data, Persistent/In-memory storage, Services/Work Manager)
    • Feature Development (Modularization, Dependency Injection, Testing, Accessibility, Localization)

    Try to find pros and cons for the following and come up with why would you go with the one over the other

    • MVVM vs MVC vs MVP vs MVI design pattern
    • Single Activity vs Multi-Activity architecture pattern
    • Different Modularization techniques
    • Push-based vs pull-based database synchronization
    • In-memory storage vs persistent storage
    • XML vs Compose

    App scalability topics (Important for apps with billions of users)

    • Battery consumption
    • Building for different network bandwidth
    • Accessibility
    • Localization
    • App profiling (CPU, Network and Battery profiling)

    This is my approach while tacking an Android System Design problem:

    • What are we building (Client app, API, BE or both (client plus BE))?
    • Whom are we building this for (target users, target market, etc)?
    • Functional Requirements
    • Non-functional requirements
    • Defining the network communication protocol on how the app would get data and then defining the APIs
    • Defining the app architecture
    • Deep diving in any of the feature
    • Scalability
    • Privacy and Security

    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

    • What happens when the user goes on an airplane mode?
    • What happens when the user removes the app from the background and then starts it again?
    • What happens when the user uninstalls the app and re-installs it?
    • What happens when a call or an alarm interrupts the app?

    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!

  • 4
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    10 months ago

    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:

  • 4
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    10 months ago

    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

  • 3
    Profile picture
    Thoughtful Tarodactyl
    Taro Community
    10 months ago

    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

    • Design a networking library to be used on all/many android apps at our company. (Implicit: what features would you want? What tradeoffs would you make? What would be standard for all apps and what would be customizable? Draw and explain the architecture.)
    • Design a new UI toolkit that would be used for all/many android apps at our company. (ditto the implicit)
    • Design a new analytics service for all/many android apps at our company. (ditto the implicit)

    Product team interview

    • In one hour draw the UI and then diagram everything in between the UI and the API calls (inclusive) for the home page and a single "detail" page of a common app
      • messaging apps, video apps, commercial apps where you can buy things
    • From a FAANG recruiter this is the ideal time break down: 5-10 minutes asking questions while brainstorming features, then 10-20 minutes on high level architecture overview, finally 10-20 minutes on details of a single part that is either a very specific feature or a very specific layer of the architecture (data, logic, UI)

    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

  • 3
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    10 months ago

    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.

  • 1
    Profile picture
    Thoughtful Tarodactyl
    Taro Community
    10 months ago

    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