grails (11) vaadin (11) meteor (6) java (4) elasticsearch (3) apple (2) centos (1) cloudbees (1) google analytics (1) gradle (1) heroku (1) javafx (1) javascript (1) jdbc (1) jug (1) logback (1) logging (1) mac os (1) management (1) mongodb (1) mongolab (1) mysql (1) twitter (1) ubuntu (1)

Tuesday, January 10, 2012

How to interview Java developers

Three years of interviewing Java developers and I am about to write it down... here it goes, here is my way of doing interviews.

Step 0
Make a little preparation. I usually create a template for the interview - so my interview has desired meaning and all my questions are answered. Here is an example of my template: 
Past: [what he has done so far?]
Present: [what is he doing nowadays?]
Future: [plans for future?]
Rating: [areas like OOP, Java are rated, use your own scale]
Salary: [salary expectations]
Start date: [possible start date given by the applicant]
Notes: [something to remember the person]

I store all of these notes in my personal wiki provided by my company. So I can go back to my notes whenever I need. 

Step 1
Introduction is fine as the first step. As interviewer you get info about the applicant. The applicant should know what is your role in the hiring process (are you manger, java developer, architect...). But, don't waste time with this that much, there are more important things to discuss. 

Step 2
I usually ask developers questions related to these topics: OOP, Design paterns, Java, SCM and frameworks. But how to find what to ask first or where to put more focus on? I usually ask for the biggest project the applicant has participated. If there is some, then I ask how he did it? What was at the beginning of development - has he started coding immediately or is he used to do some design work? What about requirements and some specification? What about GUI protype? Is he using SCM? What design patterns were used and why? What frameworks does he know? Does he know the Java language? Here are few question (it might be beneficial): 
  1. What is an interface and you can use it during coding?
  2. Have you used an interface? If yes, how?
  3. What is the difference between List and Set collection classes?
  4. Do you draw class diagrams before you start coding? If yes, give him an example - so he is forced to draw UML class diagram. After he is done, give him Eclipse or Netbeans and ask him for implementation of his diagram.
  5. Do you use JUnit? What about mocking?
  6. Do you prefare work on back-end or front-end? 
  7. What design patterns have you used and how?
The answers for these questions are signs which will tell you where to dig in. If the application is not using design patterns, then you should be interested if he knows how to implement class diagrams and if he knows something about OOP. On the other hand, if the applicant knows nothing about SCM - then you can just rate it as 0 and continue with other areas. 

By the way, if the application's answers are satisfactory and I like the project, I ask for the link where I could download or use it. 

Step 3
At this stage, you should have enough info to ask practical question. An example: let's say that the applicant told you that he has used design patterns in last project. Let's ask him "What design patterns have you used?". The answer might be "Composite and Singleton". "Hurray! I will let him to analyse a problem with tree structure and if that goes well, he could code it. If not I will let him implement the singleton pattern!", scream your brain with delight. 

Let your applicant to choose programming IDE (usually Eclipse or Netbeans). So he is not limited by a tool and he can be as efficient as possible. 

If your participant is not able to analyse and code all that what you gave him... let him to code some loop and sum some values from a field. You can also try to force him to write a unit test. 

Well, this is the most interesting part of interview. You can see your applicant solving issues and explaining stuff under stress. There is nothing better what could help you to see what kind of person the application is and how he is going to behave in your team or company. So, keep your eyes and mind open! 

Step 4
Ask for expected salary and start date (at least these two are quite mandatory). You can also ask what is he doing in his free time. If he is playing chess and practising fight art, I am pretty sure you will remember him.

Tips
Don't forget that the applicant is nervous. So ask the questions properly and rather slowly.
Don't help him too much. He should solve the tasks you are giving to him. Your task is to watch and analyse how he is proceeding. 
Give the same easy questions to junior and senior. So you are able to compare applicants in long term perspective. I like when seniors have to answer simple questions about programming - so I can see how good they are at explaining things.
An example of my notes:   
Past: high school, worked also for company XYZ as Java developer
Present: looking for job
Future: wants to be architect
Rating: OOP: 2, UML: 1,5, Coding in IDE: 2, Java: 3, Frameworks: Hibernate, Spring
Salary: 10 000$
Start date: 24.12.2012
Notes: plays guitar and online games, practising box in free time
TextLab for Mac
Ultimate application to validate, clean and format JSON, XML, SQL, HTML.

11 comments:

  1. What about the questions that explains algorithm knowledge, logical thinking etc?
    Thanks

    ReplyDelete
  2. People are different and everyone has his own way how to solve an algorithm issue.

    There are people solving algorithm issues in collaboration with others or people who need quiet place to think.

    I usually see how people behave (and maybe how they think) when asking practical questions (Step 3). They are pushed to do analysis work - which is quite a lot about abstract, mathematical and logical thinking.

    I usually ask them to implement the output of their analysis (e.g. implement a class diagram). Plus, I want to force them to use Composite pattern, so I can see if they are able to code it. If they are and I am still not sure about their coding skills, I ask them to create tree structure from their classes and let them iterate over the collections that contain other collections.

    ReplyDelete
  3. Thanks for your informative article and the blog. Your article is very useful for .net professionals and freshers looking for interview. Best DOT NET Training

    ReplyDelete
  4. I stand by your thoughts. It is important to make sure that the software application working precisely for the reason it originally designed for. Thus, load testing is mandatory for every application or system before deployment. Loadrunner Course in Chennai | <a href

    ReplyDelete
  5. This comment has been removed by the author.

    ReplyDelete

  6. I wish to show thanks to you just for bailing me out of this particular trouble.As a result of checking through the net and meeting techniques that were not productive, I thought my life was done.



    Dot Net Training in Chennai | Dot Net Training in anna nagar | Dot Net Training in omr | Dot Net Training in porur | Dot Net Training in tambaram | Dot Net Training in velachery

    ReplyDelete
  7. I'm dazzled, I should say. Only sometimes do I go over a blog that is both educative and intriguing, and doubtlessly, you have nailed it. The issue is an issue that insufficient people are talking cleverly about. Presently i'm upbeat I unearthed this during my chase for something with respect to this.tech updates

    ReplyDelete

  8. Generally excellent review. I absolutely love this site. Much appreciated!
    best interiors

    ReplyDelete
  9. I wanted to thank you for this exceptional recover!! I its total valued all minuscule piece. I have you ever bookmarked your site to try out the valuable possessions you announce. Zmodeler3 Crack

    ReplyDelete
  10. Most likely that is a very decent statement I were given a ton of information subsequent to dissecting powerful achievement. subject of blog is astonishing there might be a propos the whole to right of confirmation, splendid realm. Easeus Data Recovery Wizard Keygen

    ReplyDelete
  11. A huge substance material as wonderfully as enormous organization. Your site justifies each and every one of the positive information its been getting. I might be advance quickly for pulling taking locale streams contents.! Decent Good Morning Images

    ReplyDelete