SSE is not suited for individual user specific updates, because server will send a topic push notification to all devices and for order tracking purpose server will have overhead sending push every 5 seconds to all users. SSE is suited for features like example streaming updates, say a creator is about to stream, started streaming, streaming ended. These will be generic events and it is same for all users. For order tracking purposes better to use HTTP polling with 10 seconds interval
This statement about SSE has some valid points but also some misconceptions. SSE can be effectively used for user-specific updates. The server can maintain separate connections and push personalized data to each user, avoiding the overhead of broadcasting to all users. SSE is more efficient than HTTP polling for real-time updates because it only sends data when there are changes, reducing unnecessary server requests. Polling every 10 seconds could actually increase server load and latency, especially if updates are frequent. While SSE works well for generic events, it can also be optimized for individual user updates with proper implementation.
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
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. 🙂
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:[]`
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? 😀
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.
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. 🙂
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.
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.
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?
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
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?
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?
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?
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?
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.
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
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.
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).
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.
@@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!
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?
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.
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
I’m so so grateful you made this video, please make more iOS system design videos!!!
Thanks for the comment, Valerie! Will do =)
Love your videos, structured and very helpful for prepping for interviews.
So glad!
SSE is not suited for individual user specific updates, because server will send a topic push notification to all devices and for order tracking purpose server will have overhead sending push every 5 seconds to all users. SSE is suited for features like example streaming updates, say a creator is about to stream, started streaming, streaming ended. These will be generic events and it is same for all users. For order tracking purposes better to use HTTP polling with 10 seconds interval
This statement about SSE has some valid points but also some misconceptions. SSE can be effectively used for user-specific updates. The server can maintain separate connections and push personalized data to each user, avoiding the overhead of broadcasting to all users. SSE is more efficient than HTTP polling for real-time updates because it only sends data when there are changes, reducing unnecessary server requests. Polling every 10 seconds could actually increase server load and latency, especially if updates are frequent. While SSE works well for generic events, it can also be optimized for individual user updates with proper implementation.
Very informative
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
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. 🙂
Thanks. Coming soon!
awesome work ❤
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:[]`
It totally makes sense, I agree!
(I didn't have time to look more closely before)
Also some different topic you can choose are like File Uploader which focus more on post rather than fetch/get and display
another great topic to do is map related design like support offline along with recommendations given location on map
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?
😀
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.
@@andrey_tech Thank you so much for the detailed explanation
@@fufuhu148 its basically JSONDecoder
Hey bro. good content. Keep on continue it. Its create a wave in iOS community definetly.
A wave! Sounds cool ahaha
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. 🙂
really good video. thanks for these much detailed explanations . expecting more from your sided
Thanks!
Great video as always! Please keep going!
Thanks for the video, and good luck for your potential new role !
Thank you!
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.
It depends on the company! The recruiter should be able to answer you if the technical part is leetcode or iOS specific.
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.
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?
Hey, great ideas!! I'll write them down somewhere. A really valuable comment, thanks a lot =)
@@andrey_tech how about a 'design a crash reporting tool'
Your videos are awesome! I’ve learned so much from them. Thanks a lot!
Happy to hear that
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
Yeah, sure. The architecture is showcased for just one screen, so there would be multiple routers
That’s just amazing!! How did you get to this level of crisp and clear articulation of your thought?
Thank you, that sounds very flattering.
You’re welcome 😇 but you didn’t answer the question 😅
Bruh they gonna sue you for breaching NDA😆
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?
super amazing :)
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
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?
Websockets are for two way communication which isn't necessary here
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?
Yes, absolutely. Async / await approach is much more flexible and clear
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?
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.
Could you please make video on Designing Twitter for Android/iOS
I'm working on System Design - Authorisation atm. Maybe I'll do Twitter as well. Thanks for the comment = )
@@andrey_tech Thanks 🙂
You used plain address model properties (lat, lon), while using addressId in the nearby restaurants request. Otherwise, good job.
Thanks!
What focus on swiftui or uikit for faang company
For FAANG it doesn't matter. Be good with one approach you prefer and familiar with another one
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
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.
@@andrey_tech but I'm interested in their products
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).
Great video! I think DI library you are talking about is Swinject, right?
Yes, that's correct!
amazing , we need alot of this video ❤
thanks!!
hI Andrey, was wondering the service you mentioned are like service component running background for long running operations right?
Great video and walkthrough as always! What’s your response if interviewers ask why not SwiftUI or async/await?
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.
@@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!
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?
If you need an offline mode or retain data between app launches, then use CoreData to store metadata.
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?
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.
@@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.
@@JP-jf1oc Yes, it's strange, but it happens not really often
Cool
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
Good question. Looks like this library is widely used for that - github.com/launchdarkly/swift-eventsource
@@andrey_tech Thank you. Will check this out.
Love your videos, super helpful. Do you have a discord group? If not you should definitely make one
I've never thought about it. What should I do in that group? I have no idea how it usually works = )