Design an Elevator System | Systems Design Interview question |

Design an Elevator system is a common system design question asked during interviews at Google, Amazon, Facebook etc. The main skill what the interviewer wants to test are you OOP skills and design patter. Many a time you would also be asked algorithmic questions as a part of this Low level design.
I have tried to bring all things together, hope this helps someone out here.
00:33 functional/system requirements
06:31 use case diagram
08:21 class diagram
18:15 Elevator operation algorithm (dispatcher algorithm)
27:29 Elevator dispatcher algorithm animation

Пікірлер: 39

  • @warnercooler4488
    @warnercooler44882 жыл бұрын

    Nice explanation of the algorithm. Thank you so much!

  • @seemapatel1333
    @seemapatel13332 жыл бұрын

    Very well explained . Thank you so much !

  • @TheSudh123456
    @TheSudh123456 Жыл бұрын

    awesome explanation. Insightful.

  • @sravanchaitanya7372
    @sravanchaitanya7372Ай бұрын

    very well explained thankyou for your time.

  • @arunavasaha7051
    @arunavasaha7051 Жыл бұрын

    In the last optimization, when the elevator was moving up and dropped the passenger of floor 0 at floor 2, and picked the passenger at floor 2 who requested a down , why the elevator changed the direction and dropped them first. Shouldnt the lift continue togo up and attend the request of the passengers going up first?

  • @dezediok2451
    @dezediok24519 ай бұрын

    Is there a particular design pattern that you implemented for the UML class diagram? If so what is that pattern called?

  • @nandanapuameer4693
    @nandanapuameer46932 жыл бұрын

    which tool are you using to design this

  • @billfang2666
    @billfang26662 жыл бұрын

    I like the video because it is succinct and explained well.

  • @manus7342
    @manus73422 жыл бұрын

    Very well explained. Please make more OOD videos

  • @codeTreeMS

    @codeTreeMS

    2 жыл бұрын

    Thanks ! Will get back to making more such vidoes soon.

  • @manus7342

    @manus7342

    2 жыл бұрын

    @@codeTreeMS Thanks :)

  • @misterdonaldduck
    @misterdonaldduck2 ай бұрын

    What does the orange diamond mean?

  • @HimalayaGarg
    @HimalayaGarg2 жыл бұрын

    Should change the distance in heap when lift is moving

  • @anilchaudhry804
    @anilchaudhry8042 жыл бұрын

    code in java?

  • @mohitrathore8808
    @mohitrathore8808 Жыл бұрын

    Please add timestamps :), btw nice video

  • @AyushKumar-yn3xb
    @AyushKumar-yn3xb Жыл бұрын

    Runtime updation of minHeap, as the elevator car crosses a floor, is equivalent to creating a new minHeap everytime? I am not sure there is any straight forward way to update the values in a minHeap/maxHeap.

  • @karthikairam

    @karthikairam

    Жыл бұрын

    There is a “decrease key” operation in the Heap which does changing of node’s value, in o(log n) runtime when it is combined with HashMap to maintain the position of node in array (Heap uses behind the scene). You may explore it further.

  • @shashankmishra484
    @shashankmishra4842 жыл бұрын

    Hey thanks for this video Sorry this is out of context, but what chair are you using ? I have seen this one at different places but not able to find it

  • @codeTreeMS

    @codeTreeMS

    2 жыл бұрын

    haha, no worries.. I think this one is pretty close www.ikea.com/se/sv/p/markus-kontorsstol-vissle-moerkgra-70261150/ , you can get the same in any country.

  • @sakshamjain1005
    @sakshamjain1005 Жыл бұрын

    MinHeap update operation is quite costly since its getting updated at every move of lift in either direction O(NLog(N)) to be precise

  • @TheSubsonicOne

    @TheSubsonicOne

    8 ай бұрын

    It's an ELEVATOR. It only has so many floors. Unless it's being implemented by actual snails, or a 1HZ processor, I think it will be fine.

  • @ameyjain3462
    @ameyjain34622 жыл бұрын

    Just create a button class, there may be tons of button with different functionalityies, i dont get why emergency is special and how it affects your design

  • @codeTreeMS

    @codeTreeMS

    2 жыл бұрын

    Firstly thanks for the comment, it helps create the present and future videos better !!. if you see at 11:07, in the class diagram, there is a class for buttons and we extend from it to create inside and outside buttons. Do you mean somthing else

  • @learnwithme7750
    @learnwithme7750 Жыл бұрын

    Good explanation but a small doubt i.e whenever a position of car changes everytime we have to pop all enteries of both minhips and update it again, so will that be efficient?

  • @codeTreeMS

    @codeTreeMS

    Жыл бұрын

    yes that might not be efficient but O(nlogn) is not asymptotically tight, search for tighter bound for hepify. It might not be awesome algorithm but can do the work rest is on our innovations.

  • @learnwithme7750

    @learnwithme7750

    Жыл бұрын

    @@codeTreeMS ok thanks!

  • @abhishekmudaliyar5361
    @abhishekmudaliyar53615 ай бұрын

    Bro code please

  • @chessmaster856
    @chessmaster8562 ай бұрын

    You can't know everything. You need to ask requirements and model only those

  • @mojolu1126
    @mojolu1126 Жыл бұрын

    isn't there a relationship from door to car? 18:14

  • @jasiuskwarczek

    @jasiuskwarczek

    Жыл бұрын

    There might be, also you can make Door class as a base class and then inherit from it as Elevator Door, Emergency Door, Service Door etc. and then create a relationship from Door to Car class imo

  • @jbbanerjee8534
    @jbbanerjee85342 жыл бұрын

    In the last part of the video , you have used 2 heaps . When you are not using the direction of the car to pickup up the passenger , what's the point in keeping 2 heaps ? You can simply use 1 heap and pickup the closest passenger irrespective of the direction he/she wants to move. This is a bit confusing .

  • @codeTreeMS

    @codeTreeMS

    2 жыл бұрын

    Thanks for pointing out. Yes, if you are not having a constraint on direction then you can use just one min heap, I wanted to give a starting algorithm which anyone can extend and optimized further. e.g.Some elevator systems pick passengers only in the dircetion of travel then the 2 heaps would help.

  • @PeskyTheWabbit

    @PeskyTheWabbit

    Жыл бұрын

    @@codeTreeMS This was my first thought. Starting at floor 0, it goes up until no one else needs to go up, then it starts at the top and brings down everyone who needs to go down. then start with people going up, rinse, repeat

  • @aseem30
    @aseem30 Жыл бұрын

    Any interviewer is going to ask why you picked up min heap of all the data structures.

  • @codeTreeMS

    @codeTreeMS

    Жыл бұрын

    Thats a resonable question and had a resonable answer, time complexity. in O(1) you can get the closest person to the elevator.

  • @sokachinnarao7694
    @sokachinnarao7694 Жыл бұрын

    Sir, one small doubt, how many elevators are required in buildings

  • @codeTreeMS

    @codeTreeMS

    Жыл бұрын

    It depends on how many people work/stay in the building, like an office with a high number of floors with 1000 people working will require more elevators than a smaller building with 300 people, its something easy and you can discuss with your interviewer to decide on this requirement.

  • @anshulchauhan6738
    @anshulchauhan67387 ай бұрын

    Looks like the copy of Educative design

  • @mojolu1126
    @mojolu1126 Жыл бұрын

    16:09 you spelled elevator wrong