On this page
"Design Instagram's feed" isn't a request to rebuild Instagram in 45 minutes. It's an invitation to show how you clarify requirements, choose a client architecture, handle network and storage constraints, and reason about trade-offs, while communicating clearly.
A framework for the interview
Step 1: Clarify
- Functional: core features for this interview (for example: view feed, like, comment, post photo).
- Non-functional: offline support? Real-time? Scale (users, items per screen)? Low-end devices? Battery and data constraints?
- Out of scope: confirm what you'll skip (for example the ranking algorithm and server internals).
Step 2: API and data models
GET /feed?cursor={cursor}&limit=20 โ { items: [Post], nextCursor }
POST /posts/{id}/like โ { liked: true, likeCount } (idempotent)
POST /posts (multipart: image + caption) โ Post
Post { id, author{id,name,avatarUrl}, imageUrl, caption, likeCount, likedByMe, createdAt }Mention cursor-based pagination (stable under inserts), idempotency for actions, and image URLs with size variants.
Step 3: Client architecture
Step 4: Common deep dives
| Topic | Key points to discuss |
|---|---|
| Pagination | Cursor vs offset, Paging 3 + RemoteMediator, prefetch distance, invalidation on refresh |
| Offline and sync | Local source of truth, pending-change outbox, WorkManager constraints, conflict policy |
| Optimistic updates | Write locally, show immediately, roll back on failure, idempotent APIs |
| Real-time | WebSocket while visible, FCM when backgrounded, catch-up via REST after reconnect |
| Images | Size variants, memory and disk cache, downsampling, placeholders, prefetching visible items |
| Uploads | Compress, resumable or chunked, WorkManager with progress notification, retries |
| Security | Token storage, TLS, server-side authorisation, Play Integrity for abuse-prone actions |
| Performance | Startup, list jank, memory on low-end devices, Baseline Profiles |
Worked example prompts
Design a chat app
Local message store, send queue with states (sending, sent, failed), WebSocket while open, FCM otherwise, ordering with server IDs, attachments uploaded in the background.
Design an offline notes app with sync
Room, client UUIDs, change log, periodic and on-change sync, last-write-wins or field merge, end-to-end encryption options.
Design an image gallery
MediaStore or Photo Picker, paging thumbnails, memory budgets, decoding off the main thread, and large-screen layouts.
Step 5: Trade-offs to volunteer
- Consistency vs responsiveness (optimistic UI).
- Real-time freshness vs battery and data.
- Offline capability vs complexity and storage.
- Modularization vs speed for a small team.
Frequently asked questions
How much backend detail is expected?
Mostly API contracts and client implications. Mention server concerns briefly (rate limits, idempotency), and stay focused on the client.
Should I write code?
Usually only small snippets or interfaces. Diagrams and clear explanations matter more.
Conclusion
Ace mobile system design by clarifying constraints, defining APIs and models, presenting a clear client architecture, going deep on offline, pagination, real-time and media, and volunteering trade-offs, all while thinking out loud.
Next step: prepare the whole senior loop with How to Prepare for a Senior Android Developer Interview.
Official references
๐ฑ Apps built by Yunok Tech
Real Android apps on Google Play, free to download.
Walzi4K wallpapers for lock and home screenGet it โธ
NotiVaultNotification history: recover dismissed notificationsGet it โธ
Ready to build real Android applications?
Interviews reward developers who can explain why, not just how. Build the Kotlin, Compose and architecture depth that lets you discuss real trade-offs with confidence.
Move beyond theory and strengthen your Android development skills with Yunoktech's Android course. Learn core concepts, practical implementation, modern Android development techniques, and the reasoning behind building maintainable applications.
Explore the Android course and take your next step as an Android developer.