Detractors of lateral/logic thinking puzzles for interview questions protest that the questions do not serve the purpose of the interview, which is ostensibly to identify those candidates who are likely to be valuable employees. “Some people aren’t good at puzzles!” or “They’ll just Google the answers beforehand and parrot them back to you!”
Others dislike difficult programming challenges in interviews, saying the problems do not reflect the type of real world problems one is likely to face. Who cares if I can find the longest string of increasing integers in a three dimensional array? What does that have to do with apartment management software?
Still more believe that the questions should focus on design skills rather than algorithmic prowess, “you can always Google the algorithm.”
It is with those objections that I present the Elevator Interview Question. It’s not new and generally goes something like, “Design a basic set of objects/methods to be used to simulate an elevator bank. What are the objects and their attributes/methods?”
Being able to show the Object Oriented design for an elevator bank in pseudo-code should satisfy those who demand good design. The follow up questions though, I feel are a combination of algorithmic and lateral thinking which could help spotlight those who are capable of deeply considering a problem.
- How do you optimize the elevator system for availability?
- How would variation of traffic over a typical work week, floor, or time of day affect this?
- How would you test this optimization system?
- What would be the effect of replacing the “up” and “down” buttons outside the elevator with floor buttons and removing the floor buttons in the elevators?
- One elevator design has no doors (Paternoster) and constantly move either up or down. Is this a good idea?
- How might technology help with the optimization (RFID tags on people), people counters outside of elevators?
What other follow up questions make the Elevator Design Dilemma an optimal interview question?