An interview will consist of multiple questions. IT will not be based on a single question that you happened to have seen before. It's unlikely that you'll have been exposed to all of the questions before, and if you have, then it's just good preparations.
Your point about reciting from an interview booklet is why I advise against admitting you know it. Chances are the question is not the exact same one you've done before, in which case you have to adjust your knowledge. This shows thinking. Adjusting algorithms to new situations is a big part of programming.
Sure. I still think being honest is best. And I'd be happy to discuss the question if they want to and how it differs from my previous solution, etc. What I'm not willing to do though is "reverse a string in language X". Granted that's a horrible question, but I've gotten some like that, responded "i'd use the built in method, can we talk about something else?" and then gotten into much more interesting discussions :)
I've also been asked to solve Conway's Game of Life. And amazingly all I knew about it at the time was "it's that dot game." I didn't know how it worked or the rules. I'd like to think my solving that was more impressive not knowing anything about it than if I'd previously solved it several times and knew the edge cases. :shrug:
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.