Android Nomad #48 - Android Interview
Tips for preparing for android interview
Android domain 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
General guidelines:
Mock System Design Interviews: https://www.youtube.com/@alementuev The feedback part at the end is enlightening.
Instagram Android Engineering: https://instagram-engineering.com/tagged/android
Uber Android System Design:
Modern Android App Architecture (Very important): https://developer.android.com/courses/pathways/android-architecture
Here are topic specific links that I found very useful
Pagination: https://nordicapis.com/everything-you-need-to-know-about-api-pagination/ https://uxdesign.cc/why-facebook-says-cursor-pagination-is-the-greatest-d6b98d86b6c0
Web Sockets: https://ably.com/topic/websockets
Build for Billions (very important if you are interviewing for a big tech company): https://developer.android.com/docs/quality-guidelines/build-for-billions
Memory: https://developer.android.com/topic/performance/memory-overview
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.
You can also read the interview blueprint to help you plan for an interview.
Hope this helps. Thank you!

