Andrey Tech
Andrey Tech
  • 19
  • 230 528
Spotify Staff Software Engineer Interview Revealed
Last fall, I had one of my best interviews ever with Spotify for a Staff Mobile Engineer position. In this video, I'll share the questions they asked, how the interviews went, and tips for success.
Chapters:
0:00 Intro
0:21 Why Spotify?
1:16 Applied online
1:48 Recruiter call
2:36 Screening interview
3:30 Staff Tech Leadership interview
4:30 Algorithms coding
5:38 Mobile system design
6:45 iOS coding
7:59 The outcome
9:06 My learnings
Переглядів: 4 274

Відео

Swift Solution: Rotting Oranges | LeetCode 994 Explained
Переглядів 14614 днів тому
Here's my Swift solution for LeetCode's 'Rotting Oranges' (Problem 994) using Breadth-First Search (BFS). I'll walk you through the approach step-by-step to help you solve it. Check out the problem here: leetcode.com/problems/rotting-oranges/description/ Chapters: 0:00 Problem 1:56 Solution 4:25 Coding
How I learned to Code and Make iOS Apps
Переглядів 1 тис.5 місяців тому
Join me as I share my journey from being a beginner coder to becoming an iOS developer, getting my first job, freelancing, and finally working at Meta. I'll talk about the challenges and successes along the way and how determination helped me succeed. If you're thinking about a career in mobile development, this video could inspire you to get started! Chapters: 0:00 Intro 0:18 University 0:54 L...
Uber's Staff Software Engineer Interview Exposed
Переглядів 111 тис.11 місяців тому
In this video, I share my recent interview with Uber for a Staff Software Engineer role. Recruitment: Learn how Uber's recruiter contacted me via LinkedIn, discussing the promising initial stages. Coding Screening: Discover the LeetCode medium-level challenge and my performance. Online On-Site Interviews: Explore the five interviews over three days, covering coding, iOS, system design, collabor...
Design Uber Eats - iOS System Design Interview
Переглядів 20 тис.Рік тому
In this UA-cam 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 ...
iOS Interview Question - Image Loader
Переглядів 1,6 тис.Рік тому
In this video, join me as I tackle an interesting coding challenge faced during an interview for the position of iOS Engineer. I'll be sharing the solution to this problem step-by-step, where I was asked to fix a poorly implemented image loader in a simple app. Watch as I demonstrate how to implement the image loader with error handling logic and write unit tests for this class. Chapters: 0:00 ...
Exploring UI Design Patterns: MVC, MVP, and MVVM
Переглядів 2 тис.Рік тому
In this video, join me as I dive into the exciting world of UI design patterns for mobile development. We will explore MVC, MVP, and MVVM, specifically tailored for the presentation layer of your app. Discover how these patterns enhance modularity, testability, and readability of your code. I will discuss the challenges and benefits of each pattern, comparing their characteristics. Whether you'...
Meta Sofware Engineer Interview Experience
Переглядів 16 тис.Рік тому
Join me as I share my incredible journey of securing a job at Facebook (Meta). From receiving an unexpected message from a Facebook recruiter to going through a rigorous interview process, I navigate the challenges and triumphs along the way. Discover valuable insights, interview tips, and firsthand experiences as I recount each step, from initial coding interviews to the final offer. Find out ...
Leadership Principles for Engineering Managers
Переглядів 347Рік тому
Discover effective leadership principles and tools for Agile environments in this video. Learn how vision, strategy, motivation, and skill development impact team success. Explore the power of leading by example, building a positive culture, and conducting impactful one-on-one meetings. Gain insights into performance reviews, retrospectives, and prioritization techniques. Unlock your team's ful...
Move Zeroes - Leetcode 283 - Swift Solution
Переглядів 384Рік тому
Swift solution for Leetcode question "Move Zeroes" leetcode.com/problems/move-zeroes/
Relocation to London as a Software Engineer
Переглядів 2,3 тис.Рік тому
In this video, I share my experience of relocating to London for a job at Facebook during the pandemic. I talk about the challenges I faced during the entire process of moving, including visa applications, finding temporary accommodation, and transporting my belongings. I also share some tips and advice for those planning to relocate to a new city or country. Join me on this journey and learn a...
Balance a Binary Search Tree - Leetcode 1382 - Swift Solution
Переглядів 531Рік тому
Swift solution for Leetcode question "Balance a Binary Search Tree" leetcode.com/problems/balance-a-binary-search-tree/
Container With Most Water - Leetcode 11 - Swift Solution
Переглядів 388Рік тому
Swift solution for Leetcode question "Container With Most Water" leetcode.com/problems/container-with-most-water/
How to use Leetcode effectively
Переглядів 1,7 тис.Рік тому
Are you preparing for technical interviews or looking to sharpen your coding skills? Look no further than LeetCode, the popular online platform for practicing coding challenges. In this video, I'll be sharing tips and strategies for using LeetCode effectively. Blind 75 questions list - leetcode.com/discuss/general-discussion/460599/blind-75-leetcode-questions Chapters: 0:00 Intro 0:27 Preparati...
SOLID principles explained with iOS examples
Переглядів 4,8 тис.Рік тому
In software engineering, S.O.L.I.D. is a mnemonic acronym for five design principles intended to make object-oriented designs more understandable, flexible, and maintainable. The principles are a subset of many principles promoted by American software engineer and instructor Robert C. Martin, first introduced in his 2000 paper Design Principles and Design Patterns discussing software rot. Chapt...
Design Story Viewer - iOS System Design Interview
Переглядів 6 тис.Рік тому
Design Story Viewer - iOS System Design Interview
Design Instagram News Feed - iOS System Design Interview
Переглядів 16 тис.Рік тому
Design Instagram News Feed - iOS System Design Interview
Mobile System Design Interview Guide
Переглядів 27 тис.2 роки тому
Mobile System Design Interview Guide
Steam Friends List App - iOS System Design Interview
Переглядів 15 тис.2 роки тому
Steam Friends List App - iOS System Design Interview

КОМЕНТАРІ

  • @craiggazimbi
    @craiggazimbi День тому

    Thanks for the video mate. May you please make a video taking us through the structure of your resumes you have used to land jobs in your tech career.

  • @namanjain6153
    @namanjain6153 День тому

    the NFRs that u had mentioned in start, like optimize slow internet and storage, i did not get how did we fulfil these requirements in video ?

  • @etayluz
    @etayluz День тому

    You’re adorable !

  • @Karthik-gr7ie
    @Karthik-gr7ie 3 дні тому

    Very nice video. Could you tell more about backend part of system design. Do we need to know about server architecture?

    • @andrey_tech
      @andrey_tech 3 дні тому

      I don't think that you need to know server architecture in depth for junior or senior iOS positions. But it's useful to have a general understanding of networking, protocols, APIs, since you'll be working with them directly in your app. For staff, tech lead, team lead positions, I would say you need to know backend architecture as well.

    • @Karthik-gr7ie
      @Karthik-gr7ie 2 дні тому

      Cool. thanks a lot

  • @vjunloc1
    @vjunloc1 3 дні тому

    Thanks for sharing your experience, You seem like a very nice person to work with

  • @valiibraimi195
    @valiibraimi195 4 дні тому

    Not many useful info please be more focus on engineering part not on useful philosophy

  • @stag_beats
    @stag_beats 4 дні тому

    very nice video ! can you make a video about the resume that got you this interview

  • @draugno7
    @draugno7 4 дні тому

    I got a little too comfortable at my last company after I got promoted, plus the management made a bad estimation which caused us to have to work a couple of late fridays/saturdays. Even after we did those, we didn't get compensation and a lot of us got laid off because of money problems from that last project (supposedly). Now I am in a half-panic mode but still hope I'll find a job as a medior in a company that provides space for development and values workers' time too. Your last sentence wasn't that encouraging haha but I subscribed to improve my knowledge, especially in software architecture, since after my master's in SWE I haven't revised much... What comforts me is that most of us are in the same boat (slowly sinking) :D

    • @andrey_tech
      @andrey_tech 4 дні тому

      Thanks for sharing this. I guess we just need to accept that the job market is not as good as it was before... Take a look at this graph - www.trueup.io/job-trend Anyway, good luck with your interviews

    • @draugno7
      @draugno7 4 дні тому

      @@andrey_tech thanks, at least the number of offers looks steady right now 😅

  • @translatingIdeasIntoCoding
    @translatingIdeasIntoCoding 4 дні тому

    Perfect video! We expected new videos focusing on your tech leadership, system design and iOS coding interviews at Spotify.

  • @dyadav2037
    @dyadav2037 5 днів тому

    As a beginner in to the sector, this was really insightful!

  • @hassansyed6087
    @hassansyed6087 5 днів тому

    Hey Andrey, love the video and the insight. Can you please create another video mimicking as to what exactly the behavioral and algorithmic questions were and how you approached them step by step. This is very valuable knowledge

    • @andrey_tech
      @andrey_tech 5 днів тому

      Hey, thanks for the comment. I'll try to do smth similar to what you described = )

  • @xtu373
    @xtu373 6 днів тому

    what was the Algorithm question?

    • @andrey_tech
      @andrey_tech 5 днів тому

      The question was not from leetcode, can't find it, sorry

    • @nowayicommented1314
      @nowayicommented1314 5 днів тому

      @@andrey_techafter reading the title, then this comment, I just saved myself 10 minutes. Are you just click baiting? I had a coding challenge weeks ago and could tell you what the question was, at least mostly

    • @Ermorder1
      @Ermorder1 5 днів тому

      ​@@nowayicommented1314 Sometimes you sign an NDA before the interview, and you can't tell out loud what questions you had, that's it.

  • @translatingIdeasIntoCoding
    @translatingIdeasIntoCoding 7 днів тому

    Hi Andrey, I suggest to record more LeetCode videos.

  • @user-code
    @user-code 13 днів тому

    awesome work ❤

  • @xtu373
    @xtu373 15 днів тому

    Hi, How to develop problem-solving skills? It looks like solving the leet code problem solving is more imported than DSA. Any tips?

    • @andrey_tech
      @andrey_tech 14 днів тому

      Practice is the best way to improve problem-solving skills. I would also recommend reading the book Cracking the Coding Interview

    • @xtu373
      @xtu373 14 днів тому

      @@andrey_tech but practice what?

    • @andrey_tech
      @andrey_tech 12 днів тому

      I actually answered this questions in my video "How to use Leetcode effectively". Take a look, it's short - ua-cam.com/video/mOypO5Zn8OU/v-deo.html

  • @Eliel10268
    @Eliel10268 15 днів тому

    Please keep these coming. Thx

  • @bethaneydunne9682
    @bethaneydunne9682 16 днів тому

    Hi Andrew amazing helpful useful video thanks for sharing looking forward fir more 100% support you channel keep it up 😊👍

  • @dharshanj9931
    @dharshanj9931 28 днів тому

    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

    • @timofeldur
      @timofeldur 12 днів тому

      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.

  • @JunaidKhan-ny8tu
    @JunaidKhan-ny8tu Місяць тому

    super amazing :)

  • @prashantdixit6471
    @prashantdixit6471 Місяць тому

    Great video!! If someone works as a React Native developer how should they prepare for system design interviews?...Do they need to prepare for both iOS and Android system design parts. Please help me out here. Thanks.

    • @andrey_tech
      @andrey_tech Місяць тому

      Hey, thanks! I'm not 100% sure about React Native interview. But I would expect them to ask mostly about React Native architecture and just a little about iOS / Android.

  • @vitulgoyal6545
    @vitulgoyal6545 Місяць тому

    Loved your way of explaining

  • @kienle3209
    @kienle3209 Місяць тому

    Very interesting video, liked and subcribe, hoping you give more video about IOS interview vid !

  • @isb09-v8y
    @isb09-v8y Місяць тому

    why do we need cache and CoreData both? Isn't CoreData sufficient for client side storage?

    • @andrey_tech
      @andrey_tech Місяць тому

      DataSource cache is used for caching PhotoViewModel objects for 10 min and CoreData is used for caching raw objects that we receive from the API for as long as we need them.

  • @AyushBhatt-s9k
    @AyushBhatt-s9k Місяць тому

    This is one of the best System Design videos for an iOS app. I've got my go-to channel for prepping System Design for interviews.

  • @fuxlud
    @fuxlud Місяць тому

    Regarding the cursor scrolling: what happens if the user scrolls quickly up or down? There will be a gap in the data fetched.

    • @andrey_tech
      @andrey_tech Місяць тому

      There won't be a gap, because we're using postID as a cursor. But with slow internet connection you would have a lag when you reach bottom of the currently loaded feed. If you want to improve this, there is a solution. You can create 2 separate requests for the news feed. One for loading small metadata objects and another one for loading detailed data. Alternatively, you can just change the limit from 20 to 200. That should be enough = )

    • @fuxlud
      @fuxlud Місяць тому

      @@andrey_tech Thank you very much for the proposed solution. Now I believe everything is clear.

  • @karimlanguedoc
    @karimlanguedoc 2 місяці тому

    Great work and examples. I’d like to emphasize though that on a mobile device, 500 items being returned from a server should still definitely be paginated. I know you did this to make the example a bit easier, but it’s also good to discuss pagination.

    • @andrey_tech
      @andrey_tech Місяць тому

      Yeah, good point. Btw, I explained pagination in the "Design Instagram News Feed" video, including the difference between offset-based and cursor-based pagination.

  • @HumbleHustle101
    @HumbleHustle101 2 місяці тому

    Hi, Nice video. can you make a system design video using TCA architecture?

    • @andrey_tech
      @andrey_tech Місяць тому

      Hmmm The Composable Architecture... interesting. I took a note of this. Thanks

  • @483SGT
    @483SGT 2 місяці тому

    I don't quite get why UIPageViewController wouldn't work here. Can you explain a little more please?

    • @andrey_tech
      @andrey_tech Місяць тому

      UIPageViewController doesn't provide infinite horizontal scrolling. Usually we use UIPageViewController for horizontally sliding views but user can only slide and go from 1st page to the last one and then user needs to swipe back one by one to reach at the first page i.e. user can't swipe from last page to the first. (github.com/virtualforce/Today_i_Fixed_iOS/blob/main/How%20to%20add%20infinite%20scroll%20in%20UIPageViewController.md)

    • @andrey_tech
      @andrey_tech Місяць тому

      I mean it is possible to do it with UIPageViewController, but you need additional tweaks for that...

  • @ShivamKumar-rp8kr
    @ShivamKumar-rp8kr 2 місяці тому

    Very informative <3. Please make more such videos solving mobile system design problems...

  • @speaktech.english
    @speaktech.english 2 місяці тому

    Hi Andrey, we'd love to collaborate with you. What's the best way to get in touch with you?

  • @winniethepupil5942
    @winniethepupil5942 2 місяці тому

    Great video as always! Please keep going!

  • @user-kq4rz1yz4f
    @user-kq4rz1yz4f 2 місяці тому

    thank you, I am an android developer, your iOS system design courses have great reference value also.

    • @andrey_tech
      @andrey_tech Місяць тому

      Good to know! Thank a lot. I was actually wondering about this...

  • @NavneetKaur123
    @NavneetKaur123 2 місяці тому

    Could you please make video on Designing Twitter for Android/iOS

    • @andrey_tech
      @andrey_tech Місяць тому

      I'm working on System Design - Authorisation atm. Maybe I'll do Twitter as well. Thanks for the comment = )

    • @NavneetKaur123
      @NavneetKaur123 Місяць тому

      @@andrey_tech Thanks 🙂

  • @trueinviso1
    @trueinviso1 2 місяці тому

    Thanks for sharing this, the expectation is perfection just to get in the door these days.

  • @eugenepavlyuk9299
    @eugenepavlyuk9299 3 місяці тому

    hi Andrey. do you still have initial project which was given to you by interviewer? Not modified version. maybe you have a link to github repo or zip archive?

    • @andrey_tech
      @andrey_tech Місяць тому

      Sorry I don't have it anymore

  • @MrRahulmalik
    @MrRahulmalik 3 місяці тому

    are you planning to upload any more videos?

    • @andrey_tech
      @andrey_tech 3 місяці тому

      yes, I plan to resurrect my youtube soon

  • @DK-ek9qf
    @DK-ek9qf 3 місяці тому

    I speak from my experience of working in a medium-sized company, where there are 7 Senior developers per 1 Staff member, and no one was promoted at the end of the year. You are applying for a position that is being applied for by many other Senior developers who have already worked for many years at Uber and know everyone about it. To be hired, you had to be absolutely perfect. It seems to me that only “stars” get such interview positions.

  • @DK-ek9qf
    @DK-ek9qf 3 місяці тому

    At each level, there will be a higher level where you won't pass and get destroyed. It's like playing chess online or on the computer. Even if you are stronger than 95% of players in the world, you will be destroyed ruthlessly at your level by stronger people than you. There is a very big competition because these companies pay a lot. You have to be stronger than other people.

  • @kulfie
    @kulfie 3 місяці тому

    Please continue making videos :) They are really helpful!

  • @Eliel10268
    @Eliel10268 3 місяці тому

    Which programming language did you use for leetcode problems?

  • @Eliel10268
    @Eliel10268 3 місяці тому

    Persistence is in your blood. Kudos!

    • @andrey_tech
      @andrey_tech 3 місяці тому

      The victory belongs to the most tenacious

  • @alex_flyce
    @alex_flyce 3 місяці тому

    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:<Int>&restaurantId:<Int>&foodArticles:[<FoodArticle,quantity>]`

    • @andrey_tech
      @andrey_tech Місяць тому

      It totally makes sense, I agree! (I didn't have time to look more closely before)

  • @raunaksingh7512
    @raunaksingh7512 3 місяці тому

    Crystal clear explanation!

  • @LyricalPanda
    @LyricalPanda 3 місяці тому

    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?

  • @yoostinah
    @yoostinah 3 місяці тому

    Last month I had a system design interview for the first time in my life. I watched all your system design videos to prepare for it and drew them out by hand. Now I received a job offer! cannot thank you enough for sharing these, as I did not even know where to start. Keep up the great work!

    • @andrey_tech
      @andrey_tech 3 місяці тому

      Wow congrats! Thanks for the comment, it is very inspiring for me =)

  • @subhanc8214
    @subhanc8214 3 місяці тому

    This looks wrong. You should implement image caching...

    • @andrey_tech
      @andrey_tech 3 місяці тому

      It's true that images should be cached and this solution could be improved.

  • @nickaxenov3587
    @nickaxenov3587 3 місяці тому

    Ты везде пишешь - svinject, но фреймворк - Swinject

    • @andrey_tech
      @andrey_tech 3 місяці тому

      Да, писали уже, поправлю в будущем, спс

  • @MWS331
    @MWS331 3 місяці тому

    thx for your great sharing.

  • @fuxlud
    @fuxlud 3 місяці тому

    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!

  • @sebasyanni1258
    @sebasyanni1258 3 місяці тому

    7:09 shouldn’t be a boolean?