I think the tension is that if you've practiced the exact question before and you know the answer, it stops being a test of your on-the-spot problem solving skills and becomes an exercise in mental copy-pasting.
But this gets to your third point: does it really make no difference at all? In the case that they've just "seen that before", maybe not, but I have certainly been in interviews where I literally studied implementations for the exact algorithm I was being asked to produce, and have been able to simply recite the code from memory, with basically zero critical thinking on my part, and no "thinking out loud" necessary, which is what a lot of interviewers seem to want.
I guess I'm unsure how I feel about it. I'll keep thinking.
The on-the-spot problem solving is in my opinion not at all linked to if you know the puzzle. If you can explain your approach to solve difficult stuff thats new to you it does not matter if you know the question.
If you want to test someone if he/she can solve this problem it is relevant. But thats often not the riddle to solve in a coding example.
Was about to say this exact thing. Being able to explain how something works means you understand it. Simply knowing the solution doesn't help.
If you're lucky enough to stumble across a problem that you're very familiar with, I'd say you can still use it as an exercise to show how good you are at communicating. You may not need to think much in order to find the answer, but you still have to explain the overall shape of that answer, as well as what each specific step is for.
I can't tell whether knowing it in advance makes no difference at all. If there was a substantial difference, I'd have expected these candidates to excel, and even finish the extended questions, but they did not. Were they perhaps really bad programmers that got lucky? No, I don't think so, since I can evaluate a lot about their coding style and how they talk.
What's the difference between having seen the question before, and getting a lucky thought that solves it within the first minute? I don't see any reason to treat these differently.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.