I tend to ask open questions like: How would you compute the dot product between two vectors of size 2048 as quickly as possible?
Language, hardware, etc. is all left open. This explores a lot of avenues, and lets the candidate tell me what's in their repertoire, rather than me having to ask many superficial questions.
Interviews are difficult, but remember that any test that's given to you also tells you a lot about the company, work environment and people. You're only there to prove yourself to them inasmuch as they're trying to prove themselves to you (so don't sweat it too much).
For example I go in for a C# interview, they give me a SQL test. I complete it and then asked the recruiter about it, turns out they gave me the wrong thing and I have to go back for the code test.
This company is most likely a meat factory, not only did they not bother administering the correct test, but they couldn't even be bothered to waste a human's time on you. Don't bother going back. The best places I've worked at (with the most interesting software) have often been at the ones with the least technical and difficult interviews.
Some arbitrary problems with computer testing:
1. I've maybe worked on desktops my whole life, if you give me a laptop my dev speed will drop by 50%
2. I use a generic dev env such as Visual Studio, but I highly customise it. I haven't pressed the build button in 15 years which means that I lose another high % of speed digging around for buttons and functionality
3. 15-10 years ago all development pretty much happened offline, but since then it's vastly changed. Then if you had a problem you sat in your environment playing with it, checking specs and whatever docs were available; or asking co-workers. In contrast, now when I'm faced with a problem, design challenge or a random issue/bug it's my skill at correctly naming the problem, googling it and being able to follow the correct links and being able to implement it (although of course not all problems are google-able)
4. When they ask in an offline test "what's wrong with this program?", you reply "Click build and see what the compiler says". I'm a developer, not a compiler
This brings us to the biggest problem with tests and interviews. They fail when they test the knowledge of the interviewer; instead of the history, capabilities and potential of the interviewee.
Let's take cguy's vector question as an example (note that I'm not saying at all that it's a bad question, it's all about how it's introduced, the follow up questions and why he's asking what he's asking).
Does cguy need to know if the interviewee knows anything about vectors, dot-products, or how a size of 2048 is mixed into it, or was it a general question trying to fish out different bits of interviewee knowledge on computer working/architecture (because that's what cguy and his company is into)?
If I have difficulty in answering any of the 3 parts and cguy just sits there then he's failed as an interviewer. If he's interested in my math skills then he can for example expand on the vectors part, graphics programming the dot product and low level on the 2048 part. Give me a hint, figure out why/if there was a gap in our communication or if I simply don't have any knowledge in that area. If you've spoken to me and it turns out that my entire working history is on relational DB's and that for fun I'm playing with NoSQL variants at home, then focus on that rather than asking me math/graphics/compiler questions. Focus on finding my strengths, not my weaknesses.
Back to cguy's question: For myself, I've been doing graphics programming my whole life, although I'm not very mathematical. I've computed a lot of vector dot products and can answer on why you'd do so, but I'd have struggled with the 2048 (even though I've done assembly/gpu programming, albeit not recently). I'd have specifically asked what do you mean with the 2048 (since as a graphics programmer I first associate vectors in my head as a set of floats), so the question would appear to be nonsensical. If you'd explained that you're asking in terms of compilers, then I'd go with ahh yes, SSE etc...
Often it's the follow-up questions, comments and dialog that makes the interview.