A series with complete breakdown of everything you need to learn in mobile system design. We update this repository every week.
Mobile System Design is one of the 3 main technical rounds in any iOS job Interview. System design as the word suggests "designing a system" and here system means "application/software". This is simply a key term used to summarise all the moving parts involved in the overall development of a mobile application.
There are mainly 2 categories in which we can divide all the sub-parts involved in mobile system design.
- High Level Design
- Low Level Design
High level design consists system architecture, database design, server client relationship etc. Some important topics that one should definitely learn are:
- Local Storage
- Keychain Access
- User Defaults
- NSCache
- CoreData
- API Design
- Types of HTTP request methods
- Uploading and downloading media using API
- WebSockets & Polling
- Polling & Long Polling
- WebSockets
- Push Notifications
- Notifications Architecture
- Local Notifications
- Rich Push Notifications
- Silent Notifications
-
Infinite Scroll
-
Remote Storage
Low level design deals with breaking down the high level design into more actionable and programmable parts. It involves data structures, algorithms, design patterns etc. Some most important topics to learn are:
- Architecture Design
- MVC
- MVVM
- Design Patterns
- Factory Pattern
- Builder Pattern
- Observer Pattern
- Coordinator Pattern
- Singleton Pattern
-
Application knowledge of SOLID Principles
-
Dependency Injection
-
Multi-threading
Now that we understand what is needed to learn Mobile System Design, let’s talk about the expectation of an Interviewer from the candidate. The interviewer will judge the candidate on the basis of these 3 points primarily :
- Ask questions to interviewer to clarify your doubts regarding the problem.
- Ask about the feature constraints.
- Note down, Functional and Non-functional requirements of the problem.
- Start with drawing the High Level Design.
- Talk about Data Models and API design.
- Draw the Low level design of the app feature.
What they don’t expect is, that you have to build a completely coded application right at the moment. The interviewer will start with asking you a specific question and will keep changing the constraints of the problem statement to understand you even better.
An Interviewer mostly ask the candidate a specific feature out of the mobile application design.
For example: “How will you design Instagram Reels like feature in your app?”
Here you don’t need to know or think of how to design the whole Instagram app, your focus needs to be only on the given problem statement i.e. how to design Instagram Reels in an app.
In order to answer such question, you have to have prior experience with either implementing such feature or understanding of the frameworks and modules involved. If you have neither build such feature nor have the understanding of the tech stack involved then either you are a junior iOS dev or you haven’t exposed yourself to good opportunities yet.
But don't worry, we have a good news for you, we are going to start publishing a completely free video series on our Youtube that will help you learn mobile system design concepts.
We have recently launched the pre-order release of our new course "Cracking Mobile System Design Interview" that touch upon each and every aspect of Mobile System Design in detail and help you become a real Mobile System Design superstar💪🏻
Pre-order now and get an exclusive FLAT 40% off using the code COMMUNITY-ANYTIME [..offer ending on 25th March,2024⏳]