Please enable JavaScript.
Coggle requires JavaScript to display documents.
Mobile System Design Interviews - Coggle Diagram
Mobile System Design Interviews
Interview Process
2–5 min - acquaintances
5 min - defining the task and gathering requirements
10 min - high-level discussion
20-30 min - detailed discussion
5 min - questions to the interviewer
Acquaintances
keep it simple and short
Defining The Task
Client-side only
Client-side + API
Client-side + API + Back-end
Gathering Requirements
Functional requirements
Think about 3–5 features that would bring the biggest value to the business
Non-functional requirements
Offline support
Real-time notifications
Optimal bandwidth and CPU/Battery usage
Battery
Data consuming
Out of scope
Providing the "signal"
What assumptions did you make and how did you state them?
What features did you choose?
What clarifying questions did you ask?
What concerns and trade-offs did you mention?
Clarifying Questions
Do we need to support Emerging Markets?
What number of users do we expect?
How big is the engineering team?
High-Level Diagram
Server-side components
Backend
Push Provider
CDN (Content Delivery Network)
Client-side components
API Service
Persistence
Repository
Flows
DI Graph
Coordinator
App Module
Resource Cache
Providing the "signal"
The candidate can present the "big picture" without overloading it with unnecessary implementation details.
The candidate can identify the major building blocks of the system and how they communicate with each other.
The candidate has app modularity in mind and is capable of thinking in the scope of the entire team and not limiting themselves as a single contributor (this might be more important for senior candidates).
Deep Dive
Architecture patterns: MVP, MVVM, MVI, etc
Pagination
Dependency injection
Services
Resource cache
Use case
Providing the "signal"
The candidate is familiar with most common MVx patterns
The candidate achieves a clear separation between business logic and UI
The candidate is familiar with dependency injection methods.
The candidate is capable of designing self-contained isolated modules
API Design
Real-time notification
Push Notifications
HTTP-polling
Server-Sent Events
Web-Sockets
Protocols
REST
GraphQL
WebSocket
gRPC
Pagination
Offset Pagination
Keyset Pagination
Cursor/Seek Pagination
Providing the "signal"
The candidate is aware of the challenges related to poor network conditions and expensive traffic.
The candidate is familiar with most common protocols for unidirectional and bi-directional communication.
The candidate is familiar with REST-full API design.
The candidate is familiar with authentication and security best practices.
The candidate is familiar with network error handling and rate-limiting.
Data Storage
Data Storage Options
Key-Value Storage (UserDefaults/SharedPreferences/Property List)
Database/ORM (sqlite/Room/Core Data/Realm/etc)
Custom/Binary (DataStore/NSCoding/Codable/etc)
On-Device Secure Storage (Keystore/Key Chain):
Storage Location
Internal
External
Media/Scoped
Storage Type
Documents (Automatically Backed Up)
Cache
Temp
Best Practices
Store as little sensitive data as possible
Use encrypted storage if you can't avoid storing sensitive data
Do not allow your app storage grow uncontrollably. Make sure that cleaning up cached files won't affect app functionality.
Providing the "signal"
The candidate is aware of mobile storage types, security, limitations, and compatibility
The candidate is capable of designing a storage solution for most common scenarios.
Additional topics
Major Concerns For Mobile Development
User Data Privacy
Security
Target Platform Changes
Non-reversibility of released products
Performance/Stability
Metered data usage
Bandwidth usage
CPU usage
Memory Usage
Startup Time
Crashers/ANRs
Geo-Location Usage
3rd-Party SDKs Usage
Privacy & Security
Keep as little of the user's data as possible
Minimize the use of permissions
Assume that on-device storage is not secure
Assume that the backend storage is also not secure
Assume that the target platform's (iOS/Android) Security & Privacy rules will change
User's perception of security is as important as the implemented security measures