What Interview Questions Do You Ask ?

Here are some of the things I might ask in an interview. I admit, I'm not the best interviewer, I'm a developer. But, I am part of the hiring process for new developers (and should be). I know many other developers are placed in the same situation. I hope to share my experience and learn from others.

They aren't listed in any particular order and this is neither comprehensive or complete. I'm not worried about publishing it because if a fraction of the people I interview actually took the step of reading the first few pages of Google results for whatever they are interviewing for they'd be ahead anyway.

Most of these are pretty Java specific. We use other languages too but, the majority of dev is with Java right now.

My goal is not to torture a candidate with trivia questions. My goal is find find out if they can write code and how well they can fit in with the team.

I'm curious to see what kinds of things others are asking too.

I actually ask a lot more code questions but, the nature of work makes those proprietary :-(

Version Control

I always ask about their experience with version control. Then ask for a specific example of how they have managed merge conflicts. Be sure to get an example and not some conceptual BS (unless it's good BS).

This question has more to do with how they can work with the team than version control. Though, I am trying to establish that the candidate does have some experience with version control.

Threads and Synchronization

I usually ask a few questions on synchronization. I want to know if they understand what it is, if they know what the volatile keyword is used for, and the when to use a ThreadLocal. I want to know that they understand what locks are and how to prevent deadlock.

If this goes well, I'll ask how they would get a synchronized instance of a Map or List. Bad (though correct) answers are Hashtable and Vector. Good answer are Collections.synchronizedList(list) and Collections.synchronizedMap(map).

Frameworks

I will pick some framework they've listed on their resume. I want to know examples of challenges they've faced with it (what sucked). I want to know how they overcame the problem (all frameworks suck in their own special way). I also want an example of how the framework helped them.

I am just trying to establish that they have actually used what they say they did. I will ask more questions based on their answers to find out if they really learned the framework or just did the minimum.

Core API

I want to see how well they know the core API's I'll give a whiteboard problem (though using a PC is better). If they have a PC, they should have the API docs and access to Google. Knowing how to use the API documentation is pretty important. You'd be surprised how many don't know how to read the documentation.

Given a class like:

public class Book {
	private String title;
	private String author;
	private Date pubDate;

	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public Date getPubDate() {
		return pubDate;
	}
	public void setPubDate(Date pubDate) {
		this.pubDate = pubDate;
	}
}

Modifying anything they like and writing any needed code, write an implementation for:

public List sortByTitle(List books) {
}

I am looking for a candidate to use the core API, not write a sorting algorithm.

I'm expecting them to either make the Book implement Comparable or to write a Comparator. They should be using Collections.sort().

After they do it, have them implement sort on another field, unless they get 'motivated' and waste a bunch of time writing their own sorting algorithm. This should lead them to write a Comparator if they didn't the first time.

Finally, I'll have them write a jUnit test for the code they have written, if they didn't take the initiative and do it while writing their code.

If things are going well, I'll ask Collections type questions such as how to find the intersection or diff of two Collections.

Code Style

I always try to get a feel for their code style. Contrived examples aren't quite enough.

I'll ask some open ended questions like: What is the maximum line count allowed for a method? a class? What is the maximum number of parameters a method should have? What can be inferred if a method takes a large number of parameters? What would you do about it?

Passion

Finally, I want to know how passionate the candidate is about the field. None of these are disqualifiers but, good (interesting) answers might make up for some bad ones before.

Discuss

How do you fit enough good questions in a short amount of time?

What are your questions?

Feel free to leave comments on DZone and rants on reddit
;-)



Sponsors:

About willCode4Beer