Better questions work something like this: what's the most challenging technical problem you had to solve in your last job? Why was it so challenging? What did you have to learn to solve it?
Of course, depending on the application computer science "trivia" could actually be part of the job requirement. E.g. if you're trying to build a scalable web service, maybe it really is important for the candidate to know when to use a heap.
I think a more or less unequivocally bad interview question is how to figure out if a linked list ever loops back using constant space. Maybe I'm just extrapolating my own stupidity, but I don't think that's the sort of thing people can reliably be expected to discover for themselves on the fly, so you'll just end up filtering out folks who haven't heard the answer to the question already.