Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improvements exercises #20

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -633,5 +633,8 @@ Check out the [collection](/exercises) of mobile system design exercises.
Check the guide [here](/common-interview-mistakes.md).
### Mock Interviews
Check out the mock interview [archive](https://www.youtube.com/playlist?list=PLaMN-JyH50OYAfxJEpiQTYTD-gxTf7x9d) or [sign-up](https://forms.gle/Cez2R31wqtgp3RsX9) to be a candidate yourself!
### Platform Specific Content
- [Android](/android.md)
- [iOS](/ios.md)

## Consider "starring" the repository to help other people discover the guide! Thank you!
36 changes: 36 additions & 0 deletions android.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Information for Android

## Bare minimum
- This repo
- [Fundamentals](https://developer.android.com/guide/components/fundamentals)
- [Testing](https://developer.android.com/training/testing)
- Architecture
- [UI+Domain+Data](https://developer.android.com/jetpack/guide)
- A lot of UI layer architecture exist - MVP, MVC, MVVM, MVI, Redux, VIPER, etc.
- Know the pros and cons of some and be ready to go deep on your choice of pattern and the tradeoffs
- Recyclerview
- Paging
- Workmanager
- [Build for billions](https://developer.android.com/topic/billions)
- [Perf matters](https://www.youtube.com/playlist?list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE)
- Do mocks on popular apps
- [Discord group](https://discord.com/invite/AWDNrvqban) for finding partners
- [List of recorded mocks](https://codeshare.io/mobiledesignmocks)

## Other Links
- [Android conference videos](https://github.com/igorwojda/android-kotlin-conference-videos)
- [Mobile At Scale](https://www.mobileatscale.com/)
- [Adam Bennett interview preparation](https://github.com/ditn/interviewprep)


## Notes from candidates who got an offer at Meta or similar:

### Topics to focus on
- Background processing
- Caching
- Scheduling
- Perf matters
- Major components of android app
- Jetpack lib
- Third party library and their best use cases
- Explain different approaches for components and select the best one as per the use case
52 changes: 31 additions & 21 deletions exercises/README.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,42 @@
# Typical Mobile System Design Interview Questions
The following exercises emulate typical interview scenarios using common system design questions. The solution to each question might not be accurate and should not be taken as the "ground truth". The purpose of the exercises is to demonstrate different interviewer-candidate interactions.
- [Design "File Downloader Library"](/exercises/file-downloader-library.md)
- [Design "Caching Library"](/exercises/caching-library.md)
- [Design "Image Library"](/exercises/image-library.md)
- Design "Location Sharing Library"
- Design "Network Library"
- Design "Json Parsing Library like Moshi/Gson"
- Design "Pagination Library"
- Design "Analytics Library"
- Design "A/B Experiment Library"
- Design "Photo App"
### Apps
- Photo App - [Mock Interview #1](https://www.youtube.com/watch?v=wGQSeiBGkrI)
- upload / sync photos with backend
- [Design "Chat App"](/exercises/chat-app.md)
- Design "Clock App"
- Design "Recipe App"
- Design "Photo Editing App"
- Design "Live Wallpaper Display App"
- Design "Instagram Post Feed/Facebook News Feed"
- Design "Facebook/Instagram story"
- Design "Flight booking system"
- [Chat App](/exercises/chat-app.md) - [Mock Interview #1](https://www.youtube.com/watch?v=PYsXmMt5Kdw)
- Reddit - [Mock Interview #1](https://www.youtube.com/watch?v=3GROd_h4SDc)
- Yelp - [Mock Interview #1](https://www.youtube.com/watch?v=qHEe3vGUBEM)
- Spotify - [Mock Interview #1](https://www.youtube.com/watch?v=XTFRUtQwwUw)
- Stock Trading App - [Mock Interview #1](https://www.youtube.com/watch?v=qLdy-65LsGk)
- Amazon - [Mock Interview #1](https://www.youtube.com/watch?v=Ga8VGsBU8vA)
- Trello - [Mock Interview #1](https://www.youtube.com/watch?v=BB5fcvdHbuQ)
- Recipe App - [Mock Interview #1](https://www.youtube.com/watch?v=OQqv7CodFj4), [Mock Interview #2](https://www.youtube.com/watch?v=r1hxj6JOBkU)
- Clock App
- Photo Editing App
- Live Wallpaper Display App
- Contacts app with real time status

### Libraries
- [File Downloader Library](/exercises/file-downloader-library.md)
- [Caching Library](/exercises/caching-library.md)
- [Image Library](/exercises/image-library.md) - [Mock Interview #1](https://www.youtube.com/watch?v=YVzhUN90rpM)
- Pagination Library - [Mock Interview #1](https://www.youtube.com/watch?v=a-bse-ETgVo)
- Account Settings Library - [Mock Interview #1](https://www.youtube.com/watch?v=Jk4OjzoEI4U)
- Location Sharing Library
- Network Library
- Json Parsing Library like Moshi/Gson
- Analytics Library
- A/B Experiment Library
- Instagram Post Feed/Facebook News Feed
- Facebook/Instagram story
- Flight booking system
- How to cache status
- How to handle case like leaving a page and coming back without previous information loss
- How to handle transaction failure
- How to lock seat selection
- Design "Contact app with real time status"
- Design "Push notifications system"
- Push notifications system
- broadcast receiver + notification manager + persistent connection
- Design "File uploader library"
- File uploader library


Feel free to [suggest](https://github.com/weeeBox/mobile-system-design/issues/new) your own topics.
25 changes: 25 additions & 0 deletions ios.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Information for iOS

## Bare minimum
- This repo
- Architecture
- A lot of UI layer architecture exist - MVP, MVC, MVVM, MVI, Redux, VIPER, etc.
- Know the pros and cons of some and be ready to go deep on your choice of pattern and the tradeoffs
- Do mocks on popular apps
- [Discord group](https://discord.com/invite/AWDNrvqban) for finding partners
- [List of recorded mocks](https://codeshare.io/mobiledesignmocks)

## Other Links
- [Mobile At Scale](https://www.mobileatscale.com/)
- [Adam Bennett interview preparation](https://github.com/ditn/interviewprep)
- [General iOS Knowledge quizz](https://jasper-foe-e81.notion.site/F-L-A-S-H-C-A-R-D-S-592bc284ccce4b3991aa8044705bf573)

## Notes from candidates who got an offer at Meta or similar:

### Topics to focus on
- Background processing
- Caching
- Perf matters
- Major components of iOS app
- Third party library and their best use cases
- Explain different approaches for components and select the best one as per the use case