By Noah Suojanen

“Here’s a marker; there’s the whiteboard. Write me the code that I want.”

This sounds like a line out of a nerdy horror movie. However, this is more or less what you’ll hear on interviews, especially as a contractor.

Almost every employer will ask very specific technical questions to contractors. These employers are worried about being burned—they probably have been several times in the past—by the “idiot contractor” who only knows how to bill hours. By the time they figure this out, they’re out lots of money and time and the hiring manager’s reputation is damaged.

As such, employers want to make sure a contractor has the specific technical skills to do the job. They might be willing to hire an employee who is “bright and motivated” but otherwise lacking skills, figuring he or she can be trained.

But contractors are not paid to learn. They’re paid to know.

Contract Professional on TechRepublic

Contract Professional is the monthly magazine written specifically for contract IT workers. CP provides information on technology trends, training, job opportunities, tax and financial issues, and contractor-friendly cities. To read more, visit Contract Professional online.

This is the first of two articles that outline ways to prepare for technical consulting job interviews. Next week’s installment will discuss writing code on demand and potential questions for Oracle developers and for systems administrators.

On the other hand, contractors are generally much easier to terminate than full-time employees, so employers often are more willing to take risks on them and inclined to make less use of time-consuming interviewing techniques, such as reference checking.

It’s always important to understand the other side of the table when interviewing. Usually, for a contractor, the employer has a very specific job in mind.

He realizes that he lacks some critical skills in-house and doesn’t have the resources or the time for his employees to train up and learn them. He’s looking for you to provide those skills. His goal in the interview is to figure out whether you have them. Your goal in the interview is to convince him that you do.

This is usually a pretty difficult task. Even if you have the right skills, you still have to demonstrate them. Even if you demonstrate them, the interviewer may not be qualified to evaluate your answers. (If they had an in-house expert, they probably wouldn’t need a contractor, right?)

Hence, interviewing effectively is quite tricky. Here are some guidelines to follow to nail these interviews and get the best offers.

The interview starts with your resume
Most candidates are thrown out before they even get to an interview because the hiring manager rejects their resume or it doesn’t even end up in their hands.

It’s very important for you to list every technology, developer tool, operating system, language, program, and certification that you understand, have worked with, and feel qualified to answer questions about.

Your resume may become quite long with large lists. This is generally okay. As a contractor, it’s assumed that if you don’t list a skill, you don’t have it.

Interviewers generally have very specific requirements for contractors, such as “someone with Oracle 8 experience on Solaris using JDBC.” If your resume doesn’t have these technologies listed on it, you’ll miss this first cut.

After your resume gets into the hiring manager’s hands, it has to show relevant work experience. Make sure you list all your experiences and the technologies you used at each one.

Add action words such as “architected” and “designed.” Avoid weaker terms such as “worked on” or “participated in.” This further improves your resume and gives you a better shot at making it to the interview.

The interviews
Interviews can be intimidating and complicated if you haven’t gone on very many or haven’t had one in quite some time. A good understanding of the questions you will be asked, as well as the answers you should give, will help you get great jobs.

First, no one will give you a job based on generalities. So let’s talk specifics and explore interview techniques and sample questions and answers for three of the hottest jobs right now: Java developer, Oracle DBA/developer, and systems administrator.

Java developer
In an interview for a programming job, most questions fall into one of three buckets: experience, general technical knowledge, and implementation.

Experience questions seem like the easiest to answer; they’re certainly the most straightforward. Your interviewer will generally pore over your resume and ask you about every relevant project on it; be prepared to answer.

Also, review answers to common questions like “What was your last project?” or “What was your most interesting project?” prior to the interview. It’s generally much easier to come up with a good answer beforehand, without an interviewer standing over you.

Be alert and watch out for questions that you would have to answer with a negative response. For example, you may be asked, “Have you ever programmed using the Servlet API?”

Now, assume the answer is “no.” You could simply answer no. But then you most likely would not get the job.

It’s important to read between the lines and figure out that the interviewer is really asking, “We have a job that requires the Servlet API, can you do it?” A much better answer is along the lines of, “I’ve never specifically worked with the Servlet API, but I have used the JDBC, JavaBeans, and J2EE extensively. The Servlet API shouldn’t be very challenging. I understand that it’s similar to…”

One thing you should always be aware of is that it’s important to avoid the temptation of (euphemistically) puffing up your experience. Take the above example. Suppose you claimed to know the Servlet API, when in fact, you didn’t.

While this may win temporary points, it’s likely to be followed up by a question like, “Oh, great. So, explain what the init method does, and give an example of when you would have to override that method.”

Whoops, game over.

The next bucket that many questions will fall into is general technical knowledge. These are questions about Java, without requiring implementation. In these answers, it’s important to show that you’re well versed on the subject, and expand on your answers as much as possible.

Here are some sample questions, a little bit of commentary, and good answers.

Question: Discuss memory management in Java.
Commentary:This question helps an interviewer see if you understand the tradeoffs and benefits of Java.
Answer: Java is a garbage-collected language, meaning that the JVM, in tandem with the compiler, tracks memory usage and frees it when safe to do so. It does this using a mark-and-sweep algorithm that frees the developer from even having to worry about recursive list data structures.
However, it’s generally a good idea to set an object to null when you are done using it, because this indicates to the JVM that it’s certainly okay to free that memory.
Some of the advantages of this system are that applications are developed faster, with fewer bugs and with potentially fewer security holes, because the developer does not have to explicitly de-allocate memory. The big disadvantages are that this system is often slower, uses memory less optimally, and takes certain types of control away from the developer.

Question: What are a vector and an abstract class in Java?
Commentary:This question seems trivial. But it is designed to, and quickly should, weed out anyone who has never written code before. I’ve caught several resume padders myself with this question.
Answer: A vector is a utility class, standard in the Java JDKs, used to store a collection of objects. An abstract class is a class that cannot be instantiated generally because it has abstract methods or methods with a definition but no implementation. They are useful because they can be subclassed.

Question: What is the difference between a static member variable and a nonstatic member variable?
Commentary:This question probes knowledge of advanced language features.
Answer: A static member variable is unique to a class, whereas a nonstatic member variable is unique to each instance of a class.

Noah Suojanen is the coauthor of Programming Interviews Exposed: Secrets to Landing Your Next Job (Wiley, 2000). He is currently the lead developer at Mspect, Inc., a wireless Internet start-up.

“I’m a people person.”

Okay. No one would use that sentence to describe him or herself anymore, if anyone ever did. But what are some of the tough questions you’ve had to tackle in a job interview? What was your answer? Would you have answered differently if you had another chance?

Send us your best job interview questions and answers for consultants. We’ll use them in future articles.