Design Uber Eats - iOS System Design Interview

  Рет қаралды 18,504

Andrey Tech

Andrey Tech

Күн бұрын

In this KZfaq video, I share my recent interview experience with Uber for the position of Staff iOS Engineer. The interview focused on mobile system design, and one of the questions asked was to design a simplified version of the Uber Eats app. Join me as I walk through the question, the requirements, the data model, API design, real-time updates using Server-Sent Events, storage options, and the high-level application structure. If you're interested in system design and app architecture, this video is a must-watch! Don't forget to like and subscribe for more content. Thank you for watching, and have a great day!
Chapters:
0:00 Intro
0:30 Problem description
1:48 Requirements
2:25 Solution plan
2:38 Data model
4:28 API
8:04 Storage
8:40 High level design
12:28 Example service implementation
13:16 Outro

Пікірлер: 79
@BABEENGINEER
@BABEENGINEER 10 ай бұрын
I’m so so grateful you made this video, please make more iOS system design videos!!!
@andrey_tech
@andrey_tech 10 ай бұрын
Thanks for the comment, Valerie! Will do =)
@zen_prog
@zen_prog Жыл бұрын
Love your videos, structured and very helpful for prepping for interviews.
@andrey_tech
@andrey_tech Жыл бұрын
So glad!
@winniethepupil5942
@winniethepupil5942 Ай бұрын
Great video as always! Please keep going!
@RohitPatil_Tech
@RohitPatil_Tech 10 ай бұрын
Hi Andrey, Great video and clearly explained. Thank you! It would be great to see more interview questions solving & Mobile system design videos from you. 🙂
@andrey_tech
@andrey_tech 10 ай бұрын
Thanks. Coming soon!
@adarshbinjola4069
@adarshbinjola4069 3 ай бұрын
Hi @Andrey Please cover topic that are related to creating a mobile SDK , Design Payment SDK Design Network SDK Design Analytics SDK Design Image cache SDK Design File Downloader SDK the reason I am saying these topic because these topics require more focus on architecting instead of simply following MVVM because there is no UI layer involved into these topic
@ShivamKumar-rp8kr
@ShivamKumar-rp8kr Ай бұрын
Very informative
@ibrahimcetin
@ibrahimcetin Жыл бұрын
Your videos are awesome! I’ve learned so much from them. Thanks a lot!
@andrey_tech
@andrey_tech Жыл бұрын
Happy to hear that
@abymathew575
@abymathew575 9 ай бұрын
really good video. thanks for these much detailed explanations . expecting more from your sided
@andrey_tech
@andrey_tech 9 ай бұрын
Thanks!
@g0tcha06
@g0tcha06 Жыл бұрын
Thanks for the video, and good luck for your potential new role !
@andrey_tech
@andrey_tech Жыл бұрын
Thank you!
@omar-nw1wg
@omar-nw1wg Жыл бұрын
amazing , we need alot of this video ❤
@andrey_tech
@andrey_tech Жыл бұрын
thanks!!
@CodeByNSR
@CodeByNSR 11 ай бұрын
Hey bro. good content. Keep on continue it. Its create a wave in iOS community definetly.
@andrey_tech
@andrey_tech 11 ай бұрын
A wave! Sounds cool ahaha
@JunaidKhan-ny8tu
@JunaidKhan-ny8tu 23 сағат бұрын
super amazing :)
@HumbleHustle101
@HumbleHustle101 9 ай бұрын
Nice video, can you make a system design video for an iOS app like Google Lens ? as once I was asked this in system design interview. It would be interesting to watch how you can attempt to cater this scenario. 🙂
@dragonzhao433
@dragonzhao433 7 ай бұрын
Also some different topic you can choose are like File Uploader which focus more on post rather than fetch/get and display
@dragonzhao433
@dragonzhao433 7 ай бұрын
another great topic to do is map related design like support offline along with recommendations given location on map
@fufuhu148
@fufuhu148 10 ай бұрын
Awesome video Andrey!!! I was a bit lost when you explained the purpose of that Mapper Component in your High-Level Design, would you mind sharing a bit more of your insights on that? 😀
@andrey_tech
@andrey_tech 10 ай бұрын
Cool, thanks! Mapper is responsible for mapping json recieved from the backend to model objects. You can do it right in the Service itself or create a separate object called Mapper.
@fufuhu148
@fufuhu148 10 ай бұрын
@@andrey_tech Thank you so much for the detailed explanation
@Kevzavier1
@Kevzavier1 8 ай бұрын
@@fufuhu148 its basically JSONDecoder
@guitaripod
@guitaripod Жыл бұрын
Cool
@dragonzhao433
@dragonzhao433 7 ай бұрын
hI Andrey, was wondering the service you mentioned are like service component running background for long running operations right?
@CrackersGUI
@CrackersGUI Жыл бұрын
Great video and walkthrough as always! What’s your response if interviewers ask why not SwiftUI or async/await?
@andrey_tech
@andrey_tech Жыл бұрын
Good question! It's totally fine to use SwiftUI here. I even want to make a system design video with SwiftUI in the future. And about async / await I can say that most of the APIs are available only starting from iOS 15. So it's probably too soon to use it because there're lots of clients with outdated iOS versions.
@user-uv1nr6gv5s
@user-uv1nr6gv5s 2 ай бұрын
​@@andrey_tech Async await is available from iOS 13. I've succesfully used it in production. Code is much cleaner and actors solve data races as a charm. Highly recommend to try it!
@kobedai921
@kobedai921 8 ай бұрын
Love the video! I am wondering if leetcode problems are still the main part of the interview for a senior iOS engineer? I am preparing for iOS engineer interview, and I am preparing a lot on iOS specific questions such as concurrency, swiftUI, iOS architecture, but not sure if those questions will be asked during an iOS engineer interview or they will focus on solving leetcode problems.
@SaamZanessa
@SaamZanessa 7 ай бұрын
It depends on the company! The recruiter should be able to answer you if the technical part is leetcode or iOS specific.
@andrey_tech
@andrey_tech 7 ай бұрын
Hey, thanks. It depends on the company. iOS specific staff is more probable to encounter on the interview. But at big tech companies they go for both or for algorithms only.
@ivarun
@ivarun Жыл бұрын
Great video! I think DI library you are talking about is Swinject, right?
@andrey_tech
@andrey_tech Жыл бұрын
Yes, that's correct!
@LyricalPanda
@LyricalPanda 2 ай бұрын
Why have an array of selected dishes in your basket? Why not use a bridgingtable BasketOrder so you don't constantly have to update a row and have an array of items in selectedDishes, that would have to be modified multiple times over the course of an order?
@fuxlud
@fuxlud 2 ай бұрын
That’s just amazing!! How did you get to this level of crisp and clear articulation of your thought?
@andrey_tech
@andrey_tech 2 ай бұрын
Thank you, that sounds very flattering.
@fuxlud
@fuxlud 2 ай бұрын
You’re welcome 😇 but you didn’t answer the question 😅
@fuxlud
@fuxlud 2 ай бұрын
Regarding the API implementation: Is there a need for an escaping completion block nower days? I could just return the Result and make the function async. Correct?
@andrey_tech
@andrey_tech 2 ай бұрын
Yes, absolutely. Async / await approach is much more flexible and clear
@user-fg4nn5rb3d
@user-fg4nn5rb3d 11 ай бұрын
I guess for real project will be better to use different presenters for each screen. Also, I would like to replace a router to a coordinator. It's more flexible approach
@andrey_tech
@andrey_tech 11 ай бұрын
Yeah, sure. The architecture is showcased for just one screen, so there would be multiple routers
@alex_flyce
@alex_flyce 2 ай бұрын
Thank you Andrey, gold content! I loved the video. basket POST looks a bit inaccurate though. it's not clear we're actually posting an array of dishes with the quantity of it. I'd do something like: `POST /basket/userId:&restaurantId:&foodArticles:[]`
@andrey_tech
@andrey_tech 8 күн бұрын
It totally makes sense, I agree! (I didn't have time to look more closely before)
@OmfgItsSteven
@OmfgItsSteven 6 ай бұрын
Would it be better for basket to use PUT instead of PATCH so you don't need to call the api multiple times for any item changes? Also what is the advantage of using SSE over Websocket in this case?
@483SGT
@483SGT Ай бұрын
Websockets are for two way communication which isn't necessary here
@hariharan-sv4fj
@hariharan-sv4fj 9 ай бұрын
Bruh they gonna sue you for breaching NDA😆
@Kevzavier1
@Kevzavier1 8 ай бұрын
These videos are so helpful. Also... your videos are a bit hard to search up on youtube. I keep forgetting how to spell your name
@sashkinsashka447
@sashkinsashka447 11 ай бұрын
Hey Andrey, nice channel you have here! Let me disagree with the statement that the topic is drying out. How about the system design of libraries/frameworks? I.e. payment system? authentication system? or analytics library? or any library which employs the OS functionality, like Push Notifications? Or any kind of graphic editor app, like photoshop?
@andrey_tech
@andrey_tech 11 ай бұрын
Hey, great ideas!! I'll write them down somewhere. A really valuable comment, thanks a lot =)
@igorvedeneev386
@igorvedeneev386 7 ай бұрын
@@andrey_tech how about a 'design a crash reporting tool'
@roh9934
@roh9934 11 ай бұрын
I have one question, Suppose first i mentioned Data Models and then i mentioned API Details and in API Details, i realized that new parameters are required which i didnt mentioned in the Data Model part, Can i go back and add it there? What will the Interviewer may think?
@andrey_tech
@andrey_tech 11 ай бұрын
Sure, you can go back and change smth or just say it. It's important to show your thought proccess and overall approach in this interview. Nobody's expecting you to do everything perfectly.
@subinrevi2268
@subinrevi2268 10 ай бұрын
How can we create a persistent http connection in iOS? Since the video mentions about SSE does anyone have any good article or videos which describes creating this form of communication in an iOS app
@andrey_tech
@andrey_tech 10 ай бұрын
Good question. Looks like this library is widely used for that - github.com/launchdarkly/swift-eventsource
@subinrevi2268
@subinrevi2268 10 ай бұрын
@@andrey_tech Thank you. Will check this out.
@xtu373
@xtu373 10 ай бұрын
Someone young trying to get his first job in Meta what would you advice would you give like what to prepare? Should i prepare leetcode style questions or build projects and be good in development, my current skill set it React, React Naitve Node.js Mongodb. Learning Swift with SwiftUI
@andrey_tech
@andrey_tech 10 ай бұрын
Hello, I would highly recommend to target multiple companies instead of going for Meta. Try Google, Microsoft, Uber, Spotify, Booking.com etc. In my opinion, Meta isn't even the best choice.
@xtu373
@xtu373 10 ай бұрын
@@andrey_tech but I'm interested in their products
@andrey_tech
@andrey_tech 10 ай бұрын
And in terms of preparation I would recommend doing 75 most popular leetcode problems + choose one tech area and be good in it (let's say iOS in Swift or frontend React JS).
@xtu373
@xtu373 10 ай бұрын
What focus on swiftui or uikit for faang company
@andrey_tech
@andrey_tech 10 ай бұрын
For FAANG it doesn't matter. Be good with one approach you prefer and familiar with another one
@rezaravanipour489
@rezaravanipour489 11 ай бұрын
Love your videos, super helpful. Do you have a discord group? If not you should definitely make one
@andrey_tech
@andrey_tech 11 ай бұрын
I've never thought about it. What should I do in that group? I have no idea how it usually works = )
@translatingIdeasIntoCoding
@translatingIdeasIntoCoding Жыл бұрын
Perfect video. Is position in US? Most companies are doing backend style system design interviews. Do you know what are other companies that make mobile system design interview?
@andrey_tech
@andrey_tech Жыл бұрын
I interviewed for the position at Uber Amsterdam as I'm based in Europe. You're absolutely right about the backend system design interviews. They are sometimes asked even if you're a mobile engineer. But also there're lots of companies who focus on mobile system design like Meta / Uber / HelloFresh.
@JP-jf1oc
@JP-jf1oc 11 ай бұрын
@@andrey_tech That has to be really stupid no? Like I get it a Mobile dev should know how the backend works but it's not their domain.
@andrey_tech
@andrey_tech 11 ай бұрын
@@JP-jf1oc Yes, it's strange, but it happens not really often
@Kevzavier1
@Kevzavier1 8 ай бұрын
What exactly are we storing in CoreData? And why do we need to do that? Can't we just get away with storing things in memory?
@andrey_tech
@andrey_tech 7 ай бұрын
If you need an offline mode or retain data between app launches, then use CoreData to store metadata.
@NavneetKaur123
@NavneetKaur123 Ай бұрын
Could you please make video on Designing Twitter for Android/iOS
@andrey_tech
@andrey_tech 23 күн бұрын
I'm working on System Design - Authorisation atm. Maybe I'll do Twitter as well. Thanks for the comment = )
@NavneetKaur123
@NavneetKaur123 23 күн бұрын
@@andrey_tech Thanks 🙂
@Quassar18
@Quassar18 10 ай бұрын
You used plain address model properties (lat, lon), while using addressId in the nearby restaurants request. Otherwise, good job.
@andrey_tech
@andrey_tech 10 ай бұрын
Thanks!
Design Instagram News Feed - iOS System Design Interview
18:25
Andrey Tech
Рет қаралды 15 М.
Uber's Staff Software Engineer Interview Exposed
9:05
Andrey Tech
Рет қаралды 110 М.
小宇宙竟然尿裤子!#小丑#家庭#搞笑
00:26
家庭搞笑日记
Рет қаралды 15 МЛН
CHOCKY MILK.. 🤣 #shorts
00:20
Savage Vlogs
Рет қаралды 14 МЛН
UNO!
00:18
БРУНО
Рет қаралды 3 МЛН
Sigma girl and soap bubbles by Secret Vlog
00:37
Secret Vlog
Рет қаралды 15 МЛН
Steam Friends List App - iOS System Design Interview
28:45
Andrey Tech
Рет қаралды 14 М.
How to prepare your Frontend System Design Interview
13:21
I Code It
Рет қаралды 21 М.
Design Story Viewer - iOS System Design Interview
15:55
Andrey Tech
Рет қаралды 6 М.
[Frontend System Design] Scaling Web Applications | Part 1
43:05
Dmitriy Zhiganov
Рет қаралды 13 М.
Redis Deep Dive w/ a Ex-Meta Senior Manager
31:00
Hello Interview - SWE Interview Preparation
Рет қаралды 17 М.
Google system design interview: Design Spotify (with ex-Google EM)
42:13
IGotAnOffer: Engineering
Рет қаралды 1 МЛН
System Design Interview: Design Uber w/ a Ex-Meta Staff Engineer
1:03:05
Hello Interview - SWE Interview Preparation
Рет қаралды 51 М.
Mobile System Design Interview Guide
7:45
Andrey Tech
Рет қаралды 25 М.
Частая ошибка геймеров? 😐 Dareu A710X
1:00
Вэйми
Рет қаралды 5 МЛН
$1 vs $100,000 Slow Motion Camera!
0:44
Hafu Go
Рет қаралды 29 МЛН
Samsung laughing on iPhone #techbyakram
0:12
Tech by Akram
Рет қаралды 7 МЛН