Short answer: Anything. Really, the world is your oyster (wait, I have no idea if that phrase makes sense here. I just wanted to use it). Long answer: Yes, it can be anything, but it really falls in 6 – 7 categories of questions. If you understand these categories, you have a very high chance of success.
So, what are these categories of questions? Data structures, object oriented concepts, coding questions, puzzles, bits and bytes, middle tier (or business layer design), API design, database design, database programming, testing, programming language (C, C++, Ruby, Phython, C#, VB, .NET, ASP.NET, jQuery, JAVA, etc.) specific questions, technologies (Android, iphone, mobile, etc.). Depending on the job you are applying for (developer, web developer, QA, etc.), the interviewer will select questions from one or more categories above.
The above paragraph is huge. It looks simple, but it takes years of practice and experience to ask good questions. Not only good, but probing, leading questions. Questions that give the interviewee a chance to show his breadth and depth of knowledge. Also, remember: the interviewer has only 50 minutes or so to evaluate you. That is just not enough time to really understand the skills of a person (unless of course, the answers are more like: I don’t know; Sorry, I have no idea what that means; or worse, if you are trying to make guesses).
In the next post we will dig a bit deeper into various categories. Don’t worry if many do not make sense to you or to the specific job profile you are targeting. Remember, I am trying to as generic as possible for the benefit of the diverse audience this blog addresses.
Remember, most developer positions do not just require technical depth. Yes, that is critical, but so is the attitude. Be a doer. Show enthusiasm. Show excitement. Be genuine, passionate, and above all, honest. There is almost never a case where you would know everything an interviewer is throwing at you. They are testing your ability to graciously perform under pressure. Do not be tense. Be attentive, but not over caffeinated and hyper. Listen, be attentive. Do not rush into answering a question. Let the interviewer finish his question, think about it for a moment, ask any clarifying questions if needed, and then proceed to answer with confidence. If you are making an educated guess, let the interviewer know. This gives him a better perspective and respect.