The Official BLOG and Wiki for CustomMode.com
[ start | index | login ]
start > Interview Techniques

Interview Techniques

Created by dmitry. Last edited by dmitry, 3 years and 359 days ago. Viewed 361 times. #6
[diff] [history] [edit] [rdf]
labels
attachments
This page talks about general interview techniques for a technical position of Java developer.

Don't ask API questions, ask about concepts

No one remembers all Java API's -- it's just not possible. Some people are better at doing this then others but it does not mean they are better developers because of this. As a matter of fact, from my observations, people with better memory tend to be sloppier coders because they rely on their memory too much. The process of thinking is turning in process of remembering for them. Why to bother to write well structured code that is easy to follow if I always remember what I wrote and where to find things. This attitude can quickly become a nightmare for the team trying to work on the same code base. The same principle applies to remembering API. Coders that remember class names and the methods you can call on those classes, tend to consult API documentation that explains how to use that API less frequently. On the other hand for instance if you remember that there are 2 conceptually different types of Collections -- one is synchronized, the other one is not synchronized (and you know what synchronization is all about), you will go quickly check the JavaDoc API and will make the right choice. The other developer will make a mistake sooner or later, and these sorts of mistakes can be very costly to troubleshot and fix.

Always ask to write HelloWorld

Some people (specially senior level developers) get offended when you ask them to write the HelloWorld on the interview. Well, here is a great opportunity to test the individual personality. The developer who is passionate about the coding job will take this little assignment with the enthusiasm and this is the kind of person you want to hire. Someone who is more accustomed to the political games will start reasoning to you that it's a very simple task that it should not even be asked at the interview or something like that. Watch our for coders like that. If finally the developer does what was asked, look for things like formatting style, naming variables, structuring code. These things are going to be essential in a team development effort (not as important for a one person project). Ask to enhance the program by defining some variables, using string concatenations to print composite message of "Hello" and "World" strings. Ask what are the drawbacks of the Java String concatenations and how to make it more efficient (with BufferString).

Ask to draw some diagram on a white board

This will work in a similar way the "HelloWorld" does. Depending on the level of the person, ask to draw either a diagram of the "HelloWorld" application (even if it's only one class), or ask to draw the high level J2EE application architecture. The diagram does not have to be perfect, arbitrary notation can be used. Just make sure that the interviewee can communicate effectively. This is a great personality test, you will know right away if the person more of a heads down developer (just do my job kind of person) who never talks to other people, or someone who is excited about the work he does and is trying to share this excitement with other people (even if it's about "HelloWorld").

Ask about Hobbies, Sites most visited during the day, Favorite technology books, etc...

What makes a good developer a really good one is the communication with the outside world. Things are evolving so rapidly these days, it's impossible to stay on top of every new aspect or a concept that comes out. But if the person you are interviewing has never heard about Gang of 4 Design Patterns, or has never read any articles from >>http://onjava.com -- raise a red flag.

The hobby question might not seem as important or critical. Just make sure that the person you are hiring is not going to be looking for a job few weeks after the start day just because the job you offered does not match the person's life style. If the person likes to hang out at the bars or night dance clubs a lot and your job requires 24/7 availability for production support also make sure to communicate this point across.

Some example questions

  • Multiple Inheritance in Java
  • Design patterns in Java
    • favorite design patterns
      • different flavors of factories
    • marker interface, touch upon cloneable
    • Using Abstract classes in template design pattern
    • Facade, Session Bean Facade
  • Passing by reference passing by value? How is it done in Java
no comments | post comment
custommode.com | ©2000-2005
webmaster at custommode dot com