Time-Traveling Hash Table - A coding, then algorithm, then architecture question I refined over time at Uber and CarDash.
No one is perfect, and what I'm good at may not be what you're good at, so I want the interview to cast a wide net on all sorts of different parts of a software engineer's job and figure out what you're good at, so the technical portion of the interview goes through basic coding, algorithms, lower-level software design and higher-level software architecture. Not included in this repo are the non-technical pieces such as drive/motivation, interpersonal skills, etc.
That's what the majority of this repository is about. I have the problem in 3 common languages all set up with instructions on how to build and test it. Designed so only one file needs to be edited with the problem statement included at the top of the file in comments. The problem is not very difficult, but it is a level above FizzBuzz. Meant to gauge code quality/cleanliness/etc as well as a grasp of core algorithms (nothing esoteric). Expecting 15-20 minutes on this portion.
Next I try to figure out your grasp of BigO and how it affects this problem, first analyzing what you wrote, then how far it can be pushed. The first portion has a "right" and "wrong" answer, but the second portion has multiple right answers. Expecting 5-10 minutes here.
Finally I dig into software architecture, particularly when crossing multiple machines. This is generally a back-and-forth portion and there is no right answer, this is to gauge how well you can spot potential issues and discuss them with someone else. Expecting 10-15 minutes here.