The (best) seniors just use a library. The good candidates roll their own, but can explain the tradeoffs. The juniors get the test to pass and stop.
What? Do you have something against zip codes and email addresses?
I like to ask something to do with strings - English sentences. I tell them it's intractable in the time we have and that I really want to see how they whitebox-test the code they write, so take ~10m timebox to write the code, then write some tests - at least one test that finds a bug.
https://github.com/emilybache/GildedRose-Refactoring-Kata
in their favorite language. Has been a very effective filter
When I make interviews I also come with the code, normally a few line snippet and have the person tell me what it does or whether there might be a bug and talk about it.
Reviews are also great. They take away the show-cooking aspect where many people feel nervous and makes it more conversational. It is also very easy to evaluate as well because everybody debugs code at some point.
I personally dislike even fizzbuzz because there are always clever ways to go around it that are totally irrelevant.
I was once asked to implement sort a list in python, so I just took the list and passed them to sort. But no the interviewer wanted me to implement a specific type of sort…this was for a distribution maintainer job and I almost failed it because of that. Fortunately the other stages were actually technology related and I aced them.
In any interview, I kind of presume that the interviewer has a "perfect answer" in mind and is playing some game where I basically need to guess what number they're thinking of.
I'd make it clear that anything is ok. Just go some direction
And the problem can be scaled to any complexity. Distributed/Design/Data Storage
If they give a compelling enough set of answers, I'd just skip the rest of the exercise and be done.
After learning how to do anything, the next 20 years is about learning when not doing anything is the right move.