What i think is we cannot judge a person simply taking interview for 30 minutes or 45 minutes.We can always learn to pass interview tests of any kind - that doesn't mean We can program or not. These days Technological growth is very rapid which makes us to remember only the concept not the syntaxes. So we cannot expect every one to remember each and every thing.
We studied many concepts during our Engineering Day's in College but many of the concepts we never used at all.For example, I wrote programs like generating Fibonacci series etc which I never used at all in my programming so far.
If someone were to ask me how to swap two variables w/o a temp variable I'd ask them to give me a good reason why.
Not being able to answer that particular question certainly doesn't preclude someone from being a good programmer. That'd be like asking a C# programmer how to do modulo 16 using only a logical and. Why the hell would they need to know that, and how does that help you determine that they understand the ASP.Net framework, etc.?
What matters most is whether we have logical and analytical ability to understand the problem well.
The most obvious way to decide - for me - is to run through these tests (assigning some tasks to perform), emply the person you like the best and then look at the code they've produced after a week. Then you'll know if they can do what you need.