Steam Friends List App - iOS System Design Interview

  Переглядів 11,060

Andrey Tech

Andrey Tech

День тому

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

КОМЕНТАРІ: 54
@frankiemak6066
@frankiemak6066 5 місяців тому
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!
@everyontech2716
@everyontech2716 10 місяців тому
Havent seen this kind of clearly explained video...hats off to you..keep it up Andrey !!! 💯
@andrey_tech
@andrey_tech 10 місяців тому
Thanks a lot!!
@hastewave1816
@hastewave1816 Рік тому
Well done. I'd love to see more of these videos
@Andrew-ua772
@Andrew-ua772 5 місяців тому
10:11 this idea is really wise and fresh for me, thank you
@amirtirza3428
@amirtirza3428 Рік тому
Thanks for the video! good luck with your channel!
@explorerAshish2020
@explorerAshish2020 6 місяців тому
Great work Andrey.
@germansimosoler3734
@germansimosoler3734 Рік тому
Excellent video. Thank you.
@KatyM
@KatyM Рік тому
Thanks for the video! Great explanation
@rahulvaghela3154
@rahulvaghela3154 7 місяців тому
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
@andrey_tech
@andrey_tech 7 місяців тому
Wow!! Thanks a lot, this is a very nice comment👍
@user-ku3uz2yr4k
@user-ku3uz2yr4k 8 місяців тому
Very nice video, this was really very clear and concise explanation!
@andrey_tech
@andrey_tech 8 місяців тому
Awesome, thanks!
@user-gu2xw9qr3z
@user-gu2xw9qr3z Рік тому
Thanks for the explanation from the interviewer's point of view. Hope it helps you get a job ))
@RishabhECT
@RishabhECT 24 дні тому
Great & simple explanation. Thanks
@anweshannu2518
@anweshannu2518 Рік тому
Thanks for the explanation. Expecting Many more
@andrey_tech
@andrey_tech Рік тому
Thanks!
@oskarrhythm
@oskarrhythm 9 місяців тому
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
@andrey_tech
@andrey_tech 9 місяців тому
Sure, thanks
@MrFndo
@MrFndo 8 місяців тому
Thanks for the video, it was very interesting. Keep posting this kind of content!
@andrey_tech
@andrey_tech 8 місяців тому
Thanks!!
@alexanderkukharev5654
@alexanderkukharev5654 Рік тому
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?
@andrey_tech
@andrey_tech Рік тому
Thanks for the question. I'll do a video on this topic in the future
@franciscoparraguez4576
@franciscoparraguez4576 6 місяців тому
Thank you so much !!!!!
@PavelPalancica
@PavelPalancica Рік тому
Hey Andrey. Useful info. Much appreciated. What UI architecture(s) you use at the company you work at?
@andrey_tech
@andrey_tech Рік тому
We use ComponentKit UI framework instead of UIKit. It is a completely different approach. So the architecture is specific for ComponentKit, mix of everything.
@HaggleLad
@HaggleLad 4 місяці тому
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?
@andrey_tech
@andrey_tech 4 місяці тому
Hey, thanks! Yes, it's ok to use SSE here as well.
@PrinceDavid
@PrinceDavid 8 місяців тому
Very good system design I appreciate this.
@andrey_tech
@andrey_tech 8 місяців тому
Awesome!=)
@FromBelarusWithLoveM
@FromBelarusWithLoveM Рік тому
Real gem.
@andrey_tech
@andrey_tech Рік тому
Thanks! I'm glad it's useful to someone
@medved892
@medved892 Рік тому
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.
@andrey_tech
@andrey_tech Рік тому
Thanks for the comment. Yes, this solution makes sense
@SaberLeon
@SaberLeon 6 місяців тому
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!
@duncan00idaho
@duncan00idaho 6 місяців тому
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?
@MrFndo
@MrFndo 8 місяців тому
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 ?
@andrey_tech
@andrey_tech 8 місяців тому
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.
@matvelius
@matvelius 10 місяців тому
Андрей, спасибо, очень полезный контент! Молодец! Конструктивный фидбэк: плиз донт хёрт аур иарз виз «аймадж» и «бинд» - «имидж» и «байнд» 😂 Ну а если по делу, интересно, знаком ли ты с материалом канала essential developer? Было бы интересно от тебя услышать что-нибудь в этом роде подробнее об iOS архитектуре.
@andrey_tech
@andrey_tech 10 місяців тому
Спасибо за комментарий и фидбек) С каналом знаком, хороший, да. На счет тем следующих видео пока думаю, много разных опций)
@andrewmuniz5283
@andrewmuniz5283 9 місяців тому
At what level would this be a question for? Jr, Mid, Senior?
@andrey_tech
@andrey_tech 9 місяців тому
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.
@dragonzhao433
@dragonzhao433 4 місяці тому
so why we cache it in both disk and memory?
@andrey_tech
@andrey_tech 4 місяці тому
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.
@cfffba
@cfffba 6 місяців тому
Never heard anyone pronounce 'image' that way 😊
@andrey_tech
@andrey_tech 6 місяців тому
That was more than a year ago. I already fixed my pronunciation, but still getting comments every other day about that 🥲
@stanislavkirichok8989
@stanislavkirichok8989 8 місяців тому
Swinject. You have this mistake in several videos. Also, I'm wondering why SSE is omitted as update mechanism
@andrey_tech
@andrey_tech 8 місяців тому
Thanks for the feedback, I’ll update it in future videos 👍 SSE is a good one, indeed.
@dragonzhao433
@dragonzhao433 3 місяці тому
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?
@zhangeric7588
@zhangeric7588 Рік тому
ex-colleague here. Really good stuff! Keep it going bro!
Design Story Viewer - iOS System Design Interview
15:55
Andrey Tech
Переглядів 4,4 тис.
Design Instagram News Feed - iOS System Design Interview
18:25
Andrey Tech
Переглядів 11 тис.
In 10 Minutes This Room Will Explode!
10:00
MrBeast
Переглядів 44 млн
WHATSAPP System Design: Chat Messaging Systems for Interviews
25:15
Gaurav Sen
Переглядів 1,8 млн
Google system design interview: Design Spotify (with ex-Google EM)
42:13
IGotAnOffer: Engineering
Переглядів 928 тис.
Uber's Staff Software Engineer Interview Exposed
9:05
Andrey Tech
Переглядів 107 тис.
I Did 850 Tech Interviews For Amazon And I Learned This
9:02
A Life Engineered
Переглядів 275 тис.
Most Tech Interview Prep is GARBAGE. (From a Principal Engineer at Amazon)
12:57
Mobile System Design Mock Interview: Instagram
2:02:33
Alex Lementuev
Переглядів 6 тис.
Design Uber Eats - iOS System Design Interview
14:00
Andrey Tech
Переглядів 13 тис.
SDM/TPM Interview - Systems Design
10:51
Inside Amazon
Переглядів 75 тис.
System Design: TINDER as a microservice architecture
36:41
Gaurav Sen
Переглядів 1,2 млн
In 10 Minutes This Room Will Explode!
10:00
MrBeast
Переглядів 44 млн