Steam Friends List App - iOS System Design Interview

  Рет қаралды 12,486

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

Пікірлер: 62
@frankiemak6066
@frankiemak6066 6 ай бұрын
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!
@raunaksingh7512
@raunaksingh7512 5 күн бұрын
Crystal clear explanation!
@andrey_tech
@andrey_tech 5 күн бұрын
Thanks
@kulfie
@kulfie 2 күн бұрын
Please continue making videos :) They are really helpful!
@everyontech2716
@everyontech2716 11 ай бұрын
Havent seen this kind of clearly explained video...hats off to you..keep it up Andrey !!! 💯
@andrey_tech
@andrey_tech 11 ай бұрын
Thanks a lot!!
@fuxlud
@fuxlud 18 күн бұрын
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!
@hastewave1816
@hastewave1816 2 жыл бұрын
Well done. I'd love to see more of these videos
@amirtirza3428
@amirtirza3428 2 жыл бұрын
Thanks for the video! good luck with your channel!
@germansimosoler3734
@germansimosoler3734 2 жыл бұрын
Excellent video. Thank you.
@KatyM
@KatyM 2 жыл бұрын
Thanks for the video! Great explanation
@Andrew-7324
@Andrew-7324 6 ай бұрын
10:11 this idea is really wise and fresh for me, thank you
@explorerAshish2020
@explorerAshish2020 8 ай бұрын
Great work Andrey.
@RishabhECT
@RishabhECT Ай бұрын
Great & simple explanation. Thanks
@user-ku3uz2yr4k
@user-ku3uz2yr4k 9 ай бұрын
Very nice video, this was really very clear and concise explanation!
@andrey_tech
@andrey_tech 9 ай бұрын
Awesome, thanks!
@anweshannu2518
@anweshannu2518 Жыл бұрын
Thanks for the explanation. Expecting Many more
@andrey_tech
@andrey_tech Жыл бұрын
Thanks!
@user-gu2xw9qr3z
@user-gu2xw9qr3z 2 жыл бұрын
Thanks for the explanation from the interviewer's point of view. Hope it helps you get a job ))
@MrFndo
@MrFndo 9 ай бұрын
Thanks for the video, it was very interesting. Keep posting this kind of content!
@andrey_tech
@andrey_tech 9 ай бұрын
Thanks!!
@oskarrhythm
@oskarrhythm 10 ай бұрын
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 10 ай бұрын
Sure, thanks
@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.
@PrinceDavid
@PrinceDavid 9 ай бұрын
Very good system design I appreciate this.
@andrey_tech
@andrey_tech 9 ай бұрын
Awesome!=)
@franciscoparraguez4576
@franciscoparraguez4576 7 ай бұрын
Thank you so much !!!!!
@rahulvaghela3154
@rahulvaghela3154 9 ай бұрын
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 9 ай бұрын
Wow!! Thanks a lot, this is a very nice comment👍
@HaggleLad
@HaggleLad 5 ай бұрын
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 5 ай бұрын
Hey, thanks! Yes, it's ok to use SSE here as well.
@FromBelarusWithLoveM
@FromBelarusWithLoveM Жыл бұрын
Real gem.
@andrey_tech
@andrey_tech Жыл бұрын
Thanks! I'm glad it's useful to someone
@alexanderkukharev5654
@alexanderkukharev5654 2 жыл бұрын
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 2 жыл бұрын
Thanks for the question. I'll do a video on this topic in the future
@SaberLeon
@SaberLeon 7 ай бұрын
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!
@MrRahulmalik
@MrRahulmalik Күн бұрын
are you planning to upload any more videos?
@medved892
@medved892 2 жыл бұрын
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
@duncan00idaho
@duncan00idaho 7 ай бұрын
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 9 ай бұрын
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 9 ай бұрын
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 Жыл бұрын
Андрей, спасибо, очень полезный контент! Молодец! Конструктивный фидбэк: плиз донт хёрт аур иарз виз «аймадж» и «бинд» - «имидж» и «байнд» 😂 Ну а если по делу, интересно, знаком ли ты с материалом канала essential developer? Было бы интересно от тебя услышать что-нибудь в этом роде подробнее об iOS архитектуре.
@andrey_tech
@andrey_tech Жыл бұрын
Спасибо за комментарий и фидбек) С каналом знаком, хороший, да. На счет тем следующих видео пока думаю, много разных опций)
@andrewmuniz5283
@andrewmuniz5283 10 ай бұрын
At what level would this be a question for? Jr, Mid, Senior?
@andrey_tech
@andrey_tech 10 ай бұрын
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.
@sebasyanni1258
@sebasyanni1258 19 күн бұрын
7:09 shouldn’t be a boolean?
@dragonzhao433
@dragonzhao433 5 ай бұрын
so why we cache it in both disk and memory?
@andrey_tech
@andrey_tech 5 ай бұрын
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 8 ай бұрын
Never heard anyone pronounce 'image' that way 😊
@andrey_tech
@andrey_tech 8 ай бұрын
That was more than a year ago. I already fixed my pronunciation, but still getting comments every other day about that 🥲
@stanislavkirichok8989
@stanislavkirichok8989 10 ай бұрын
Swinject. You have this mistake in several videos. Also, I'm wondering why SSE is omitted as update mechanism
@andrey_tech
@andrey_tech 10 ай бұрын
Thanks for the feedback, I’ll update it in future videos 👍 SSE is a good one, indeed.
@nickaxenov3587
@nickaxenov3587 15 күн бұрын
Ты везде пишешь - svinject, но фреймворк - Swinject
@andrey_tech
@andrey_tech 5 күн бұрын
Да, писали уже, поправлю в будущем, спс
@dragonzhao433
@dragonzhao433 5 ай бұрын
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,9 М.
Design Instagram News Feed - iOS System Design Interview
18:25
Andrey Tech
Рет қаралды 12 М.
СҰЛТАН СҮЛЕЙМАНДАР | bayGUYS
24:46
bayGUYS
Рет қаралды 774 М.
it takes two to tango 💃🏻🕺🏻
00:18
Zach King
Рет қаралды 31 МЛН
FOOTBALL WITH PLAY BUTTONS ▶️ #roadto100m
00:29
Celine Dept
Рет қаралды 75 МЛН
Design Uber Eats - iOS System Design Interview
14:00
Andrey Tech
Рет қаралды 15 М.
iOS System Design Interview for Fintech Companies
1:40:10
Inside iOS Dev
Рет қаралды 4,3 М.
Mobile System Design Mock Interview: Reddit
1:43:54
Alex Lementuev
Рет қаралды 17 М.
Google system design interview: Design Spotify (with ex-Google EM)
42:13
IGotAnOffer: Engineering
Рет қаралды 976 М.
SDM/TPM Interview - Systems Design
10:51
Inside Amazon
Рет қаралды 76 М.
Most Tech Interview Prep is GARBAGE. (From a Principal Engineer at Amazon)
12:57
Basic System Design for Uber or Lyft | System Design Interview Prep
16:18
Mobile System Design Mock Interview: Photos App (like Google Photos)
1:28:00
Uber's Staff Software Engineer Interview Exposed
9:05
Andrey Tech
Рет қаралды 108 М.
СҰЛТАН СҮЛЕЙМАНДАР | bayGUYS
24:46
bayGUYS
Рет қаралды 774 М.