Steam Friends List App - iOS System Design Interview
ฝัง
- เผยแพร่เมื่อ 31 พ.ค. 2024
- I'm explaining how to implement an architecture for a Steam Friends List Application. It's an example of a Mobile System Design interview / Mobile Architecture interview for iOS and Android Software Engineers.
Chapterts:
0:00 Intro
2:42 Plan
4:20 Data Model
7:53 API
13:08 Data Storage
14:58 Architecture
25:14 Image Processing
It is so hard to find a decent example of System design interview online. They are mostly for backend not iOS. Thank you for making this video!
Thank you so much for these videos. It's so awesome that you are thinking and talking through the options available for each section in your plan!
Please continue making videos :) They are really helpful!
Crystal clear explanation!
Thanks
Havent seen this kind of clearly explained video...hats off to you..keep it up Andrey !!! 💯
Thanks a lot!!
Well done. I'd love to see more of these videos
10:11 this idea is really wise and fresh for me, thank you
Thanks for the video! good luck with your channel!
Excellent video. Thank you.
Thanks for the video! Great explanation
This is one of the bests I have seen till now for System Design for Mobile.
The way you explain Andrey is amazing. You clearly explain each bit well enough. I just saw 2 videos only for now but It cleared so many things for me.
Thanks for your effort man 👌🩷. Love from India
Wow!! Thanks a lot, this is a very nice comment👍
Great & simple explanation. Thanks
Thanks for the explanation. Expecting Many more
Thanks!
The solution to connect a socket with the App to get status was kind of new for me, I will dive in that concept to learn how to implement. thanks for sharing this
Sure, thanks
Great work Andrey.
Very nice video, this was really very clear and concise explanation!
Awesome, thanks!
Thanks for the explanation from the interviewer's point of view. Hope it helps you get a job ))
Thanks for the video, it was very interesting. Keep posting this kind of content!
Thanks!!
Thank you so much !!!!!
Very good system design I appreciate this.
Awesome!=)
cool video, can you tell a little more about api requests and how the synchronization of large databases between the client and the server works?
Thanks for the question. I'll do a video on this topic in the future
Hey Andrey. Useful info. Much appreciated. What UI architecture(s) you use at the company you work at?
We use ComponentKit UI framework instead of UIKit. It is a completely different approach. So the architecture is specific for ComponentKit, mix of everything.
Andrey, superb demonstration. I'll be sure to rewatch this everytime I am interviewing. Is there any reason you didn't list or opt for SSE (server side events) to receive the status info?
Hey, thanks! Yes, it's ok to use SSE here as well.
Real gem.
Thanks! I'm glad it's useful to someone
Would someone still use bare-bones sockets at this point? With web sockets built into URLSession these days that seems like a better choice almost always?
Nice video! Thank you! Friend service represent "Repository", am I right? I still not truly understand NS User Default Module what is that? Is it previous pagination timestamp recorder? Please give more explain. Tks!
Great video! But what if we do not make requests with checking the status of a friend every 5 seconds, spending server and device resources on this? After all, information about the statuses of all users is stored in a database on the server, therefore information about status changes is automatically sent to it. If the server has data about all the user's friends, it will be able to send an API request to the application to change the state. After, the application will count the time since the last login offline.
Thanks for the comment. Yes, this solution makes sense
Also the part when you send GET request with timestap to get only updated list is interesting to me, do you get only like list of people that have updated data(avatar and name) and also if friend is getting deleted from your friend list how do you get that update ?
If I recall correctly, getFriendsList method returns a list of Friend models + statuses and websockets are used to get status updates later.
If the friend is deleted, in this architecture you would see that only next time you load the screen. But it could be improved by polling / websockets.
Андрей, спасибо, очень полезный контент! Молодец! Конструктивный фидбэк: плиз донт хёрт аур иарз виз «аймадж» и «бинд» - «имидж» и «байнд» 😂
Ну а если по делу, интересно, знаком ли ты с материалом канала essential developer? Было бы интересно от тебя услышать что-нибудь в этом роде подробнее об iOS архитектуре.
Спасибо за комментарий и фидбек) С каналом знаком, хороший, да. На счет тем следующих видео пока думаю, много разных опций)
7:09 shouldn’t be a boolean?
so why we cache it in both disk and memory?
Thanks for the comment. Disk caching is to retain data in offline mode or between app launches. Memory caching just to speed up things because accessing disk every time is too slow.
At what level would this be a question for? Jr, Mid, Senior?
The question is for all levels. I was asked very similar question at my interview with Meta for a senior role. And in this video I tried to showcase a template answer to this question. I would say the overall answer would be enough for a senior role, but expect a lot of follow-up questions.
Never heard anyone pronounce 'image' that way 😊
That was more than a year ago. I already fixed my pronunciation, but still getting comments every other day about that 🥲
Ты везде пишешь - svinject, но фреймворк - Swinject
Да, писали уже, поправлю в будущем, спс
Swinject. You have this mistake in several videos. Also, I'm wondering why SSE is omitted as update mechanism
Thanks for the feedback, I’ll update it in future videos 👍 SSE is a good one, indeed.
what if the friends list is long like 1000 or 2000? how should we integrate pagination to it? probaly add 1 more api with pagination along the getFriendList(timeStamp) you were talking about?
ex-colleague here. Really good stuff! Keep it going bro!