We spent the first half hour going through my resume — work experience and projects. It was the kind of technical background conversation that doesn't have a standard answer: why I got promoted at my current company, what key projects I worked on, how I determined that the database system I was responsible for was stable, what tools I'd written before, that kind of thing.
For the last 25 minutes they gave me a problem: generate a TinyURL. It hadn't shown up in any past interview reports before, and the function names and class names in the problem statement had all been stripped out — it was just a blank hello-world page. I hadn't practiced this one, so at first glance I was a bit thrown, thinking wait, isn't this a system design question? I wrote something with a function that writes to Redis, and used md5 directly to generate the URL. Then they said it needed to actually run, so I switched to a dictionary and got it running. But the URL it returned was way too long...
Then they asked what I'd do if there was a hash collision, but since I was using md5 I figured there wouldn't be one. I got stuck there, so I just mentioned supporting a TTL for the TinyURL.
My feeling is that if you haven't practiced this problem before, with a blank page and no hints, it comes across as pretty open-ended — you can't tell if the focus is supposed to be generating the TinyURL with randomness, or handling hash collisions.
Discussion
Loading comments…