Knowledge-based questions vary greatly in frequency from interview to interview. Some interviewers will not ask knowledge-based questions, while others will focus solely on them. Interviewers often ask these questions when there is no whiteboard or paper available, such as at lunch, or when they are satisfied with your coding ability and want to test your general computer knowledge. These questions enable the interviewer to assess your background and determine your computer proficiency.
Knowledge-based questions generally come from two sources: what you said on your résumé and your answers to questions earlier in the interview.
It’s a very good idea to review your résumé prior to your interview and make sure you’re prepared to answer questions about every item on the résumé, no matter how small. Some interviewers will even go through your résumé and ask you general questions about each item - ”What is X?” and “What have you done with X?” For example, if you put SOAP on your resume, be prepared for the questions “What is SOAP?” and “What have you done with SOAP?” If you can’t intelligently answer either question, you should remove the SOAP reference from your résumé.
Be prepared to answer questions about everything on your résumé.
In a similar vein, be careful with what you say during the interview. The interviewer may want some more in-depth explanation of technologies and techniques you mentioned, just to ascertain how deep your knowledge really goes. Sometimes the questioning is quite innocent. If you say you “started programming in Java several years ago,” don’t be surprised if the interviewer asks you what version of Java you started with. If all you did initially was read a book about Java 1.0.2 (which was the first public release of Java, now quite ancient) and didn’t do any real programming until Java 1.2 was released, don’t say you started with Java 1.0.2. If you do, you won’t have a satisfactory answer for a question like “What new feature in Java 1.1 did you like the best?” - a reasonable question given all the changes to the language that were introduced with version 1.1 (inner classes, reflection, serialization, database classes, and so on). Be as truthful and accurate about your background as you can be so that your earlier answers don’t trip you up later.