I am interviewing candidates for a C#/C++ programming position and I just need some ideas for good technical questions to ask to guage someones experience. I am mostly concerned with C# experience. Does anyone have some good ideas on questions I should ask?
Questions involving using Sockets and Threading would be helpful too.
They don't have to be trick questions, but one I thought of was "Name a class that does not have the .ToString() method".
Check out this blog entry on Coding Horror: Why Can't Programmers.. Program?. It outlines some basic questions that have proven remarkably useful at weeding out the truly incompetent.
You should just stick to very basic questions when it comes to programming, such as write a for loop. If you need somebody that can design a multi-process communication system, ask them basic questions about remoting, such as, pick your favorite remoting technique and establish a connection. For threading, ask them to establish a thread.
I don't think that more complicated questions will prove anything one way or another (not everybody performs at their best during an interview).
Obviously these questions won't tell you if the person is truly competent or not, but they will tell you if they are incompetent. To judge further, just ask them about their experience with the things you are interested in. Try to get them to go deep and explain any complex/tricky parts as best they can (but don't make them write the code).
Don't bother asking trivial or very technical questions. Trivia might be fun, but it's not a very good indicator of competence.