A college student will tend to be asked questions around C language, operating systems, programming language concepts with a puzzzle thrown in for variety. An experienced candidate will in addition be expected to talk about his projects and role, the toughest challenge he faced, system design questions with grilling on data structures. Once in a while, an interview may also involve an unconventional test.
Test Research Skills:
Ajingo (Linux OS for mobiles, acquired by Motorola) gave my team a computer architecture topic and 30 minutes to research and present. Researching an obscure core technical topic quickly and well enough to present a talk on it will be a very useful skill in any technical career. Not used nearly as often as it should be.
A project idea around plausible deniable file systems caught the Ajingo interviewer's attention, but he pretended as if he had never heard of it, and argued why he thought it would not work. He then switched positions, gave us answers to his earlier questions and expected us to shoot down his arguments.Again, a very valuable skill to have. Analysing pros and cons of an approach, discussing them as a team, and comparing competing ideas is a big skill. Also tests ability to think and work as a team. This is a good tactic when a system design question is being asked. Do you generate consensus or try to bulldoze your teammates, or simply roll over and giveup because you don't like a conflict of ideas?
We faced a barrage of often unrelated questions in a series of interviews for around three hours with very few breaks in between. Sometimes you may be interviewed by multiple people, this can be intimidating. One of the interviewers may intentionally be disrespectful to you. This is the good cop/bad cop test. This will tire out anyone, and the test is to see how you would handle yourself when exhausted.
The Impossible Question:
Ask a hard problem that you know the interviewee cannnot answer in the given setting and maybe the answer does not even exist because you asked a disguised version of a known hard problem where only heuristics would do. Would you ask followup questions? How and when do you giveup? Do you giveup? If theoretical compuer science is your strong suite, you will reduce it to a known problem statement and arrive at a solve/can't solve answer, but most people wouldn't get there.
ThoughtWorks does this a lot. This helps verify an interviewee's programming skills, that a programmer can program.
Again from ThoughWorks, a written test that is actually a bunch of for/while loops pictured as flowcharts. Effectively, you decode a low level program in some assembly language, and give the answer. I think this is a test of concentation and patience.
What are you passionate about? What is the last book you read? This is to find out if you love your profession and care about your skills, or are you just doing it for the paycheck. Nothing wrong with the latter, but it may mean that you don't improve everyday and likely wouldn't be the best employee they ever had.