I don't know about you, but I don't dread interview coding questions at all -- I love them. What I dread are the squishy / soft questions. "Where do you see your career going in 5 years?" "What do you want to get out of this job?" "What is your greatest weakness?"<p>Coding I can handle.
Yes. Having been on both sides of the process a lot recently, I'd agree that restating / asking questions / talking through the problem as you do it is helpful. But beyond that, I think that simply practicing typical whiteboard questions is the best preparation. You can find a lot of these simply by googling, or, by looking at a typical CS algorithms or data structures textbook. Re-familiarize yourself with lists, trees, etc... and basic searching/sorting algorithms. Steve Yegge offers similar advice here: <a href="http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html" rel="nofollow">http://steve-yegge.blogspot.com/2008/03/get-that-job-at-goog...</a>
This framework is very similar to case interview questions management consultants use during their interviews. The bit about repeating the question not only buys you some time to think about the problem some more, but also allows you to confirm your assumptions (as the write notes).<p>As another comment pointed out, the best way to become better at this process is to practice. I know when I was preparing for my consulting interviews, I practiced the framework with a friend for weeks at a fast food joint so that I had the process down. Once you can perform the process instinctively, you can focus your brain cells on actually solving the problem.
I like the framework you layout. It's always good to have a method for walking through problems because it conveys a cogent thought process (reminds me of SAT multiple choice problems or Spelling Bee questions about word origins).
I think the world could have done without this post. The reason being that while the interview question might be anywhere in 2hr-solution space, the answer is always: Make sure you understand the problem, the edge cases and present a viable structure for a solution. Now we're going to have to find a new question.