Mobile System Design Interviews (iOS and Android)

Nasir Mahmood
4 min readAug 7, 2019

Many people asked me how to prepare for a Mobile System Design interview. Here I will give you my personal experience about how I prepared and how I approached the problem during my interview with a well known FAANG company.

Silicon Valley

Overview.

Mobile system design interviews are not different than other general system design interviews. It’s just the order/approach that is needed to be amended to make it more mobile-centric. Thus all the knowledge that you get for system design interviews from books and youtube is equally applicable here as well.

Preparation.
For a successful system design interview, most of your knowledge comes from your daily experiences. So just do brainstorming about your daily routine as a software developer and think about how you start with a problem. For preparation, as there are no dedicated mobile system design resources so you have to rely on all the sources people use to prepare for general system design interviews. I will not name any source here but for me, youtube videos were the biggest help. There are many examples of how to build URL shortener, how to build WhatsApp, how to design uber etc. Just go through them.

Understandably, you are a mobile developer but it doesn’t necessarily mean you are going to handle only front-end part of mobile application in the interview. So apart from the front end be ready for explaining a high-level overview of the backend, network communication, infrastructure, and even hardware.

Practice with a friend how to use whiteboard effectively to communicate a fully working system. This sounds easy but practically it’s much harder than you think. In the end, the interviewer will take a snapshot of your whiteboard so it should not be messy.

Problem.
Example: “Design a ride-sharing service for three buildings of our tech campus”

Approach.
Here is step by step approach of how to handle a mobile system design interview question.

  1. Ask Questions: Start by asking clarification questions. Ask enough questions to give u a starting point. Listen to answers carefully and don’t repeat the same things in the next questions.
  2. Outline Features: Outline a few simple features that you are going to build. Ask the interviewer if he wants to add something to features. Turn your interview into a discussion rather than a one-way explanation. This will decrease the awkwardness and give you the comfort of effective communication.
  3. Wire-Frame: For mobile, your starting point is drawn wireframe. Think of any similar application and draw it in the simplest form. Don’t over complicate. Be incremental, don’t start by adding all the outlined features at once. Start simple and iterate to turn it into a fully functional system.
  4. Backend: Connect your front end with a backend. If you have used some specific kind of backend and you have good knowledge of it there is no harm in naming it. In the backend, you will be mentioning two things, server code (5) and database (6).
  5. Server: In the server code you will explain the necessary services required to make this system work. List them down and explain its functionality and reasons why we need it. Also, explain what kind of web-services you want to use and why.
  6. Database: In the database, you need to create all the required tables that are needed to handle data. Also, mention columns. Define relations if you want to go with relational databases. Also, mention why you choose the relational database over non-relational or vice versa.
  7. Hardware: As in the above example the autonomous vehicles need an embedded system to be part of this intra ride-sharing system. So you need to decide a communication protocol on which they will communicate to the main system. From the questions, you asked you will clarify the distance area and then you will decide between a GSM module or a Wifi based system or whatever u prefer. Also list-down and explain briefly features of your hardware system i-e communication with the server, locking/unlocking, location tracking, charging, etc.
  8. Scaleability: Now you need to explain how you need to scale this system up as traffic grows. For this part, general system design interview answers are fully applicable.
  9. Failure Points: Explain a few failure points and remedies to coup up with the issues for example vehicle going out of range or battery etc. You can explain this by adding a subsystem that will only handle failures and take necessary actions.
  10. Security: This is a broad topic but you just need to give a general overview of how you will handle security at the application side and on the vehicle side. If you have more detailed knowledge on this topic go with it.
  11. Payments: Ask the interviewer if users need to pay for using this service. If the interviewer says yes this is a very nice topic to spend your time during the interview. For this, you need to know PCI compliance and the procedure of using In-app-purchase/Apple pay or Google Pay.
  12. Wrapping up: After all these as you have covered quite a few areas you need to politely asked if he/she has any additional questions.
  13. Ask Questions: Now it’s your turn to ask questions. Be prepared with a few questions that depict your higher intellect and geekiness.

Conclusion:
During the 45–60 mins of your interview you need to keep it detailed, interesting, engaging and enlightening. It’s your chance to shine and with little preparedness and confidence, you can ace it.

📝 Read this story later in Journal.

👩‍💻 Wake up every Sunday morning to the week’s most noteworthy stories in Tech waiting in your inbox. Read the Noteworthy in Tech newsletter.

--

--

Nasir Mahmood

Staff Software Developer and Entrepreneur. Make apps professionally and also for fun.