Friday 29 June 2012

Ace that Java Interview

So I've recently been through the process of various Java development interviews with a whole host of different companies and I wanted to impart some advice and things I learned along the way. Here are the key points I believe you need to be successful at interviews.

Get the basics nailed!

Oh you're an experienced developer right? You've been working on large scale systems and designing things at a high level of abstraction, so simple questions about the scope of variables in methods are easy right? Well you better be able to nail every one of the simple questions then! Don't underestimate getting the simple things right. You will be asked simple programming questions in interviews regarding syntax, threading, primitives, etc.

The first couple of interviews I went to on my quest for a new job, I'll be the first to admit, I wasn't prepared. I fell into the exact trap I'm discussing here and got caught out. An example was that I got totally caught out by bitwise operation questions (>>>, >>, ^=, etc).

So brush up on your basic syntax skills, if you can't nail the first bit of the interview, you won't get a chance to talk about that complex system you designed. I cannot tell you how many times I had to answer "The difference between an interface and an abstract class"!

Research into EVERYTHING in the job spec

Most job specs are split into "Essential" and "Desirable" qualities which you should have a good knowledge of. Do not make the mistake of thinking "oh I don't know about X but it's only a desirable quality so it won't matter". Make sure you know about all the desirable qualities, even if you don't have any experience with it.

Let me give you an example, lets say I'm applying for a UI designer role and the company are planning on using GWT for a lot of their front end development. Now say I'm a GUI developer but I haven't used GWT before and don't really know what it is.

Scenario 1 - Don't research GWT before interview

Interviewer: "What do you know about GWT? Is it something you have experience in?"
You: "No it's not something I've used really, in my current work we tend to just use X"

Scenario2 - Research GWT for an evening before the interview

Interviewer: "What do you know about GWT? Is it something you have experience in?"
You: "I only have some limited experience from using it in my own projects, but I know that it's essentially a library for writing user interfaces in Java and compiling them into Javascript... etc"

See the difference here? Just by doing a little bit of research before the interview about a previously unknown technology the interviewer now see's that:

  • You are keen to learn new technology, even if it means going over and beyond what is expected of you at work.
  • You have some knowledge in a technology they are using, even if you are exaggerating slightly how much you have used it. 

Study Study Study

It took me approximately two months to find a job and most of that time I spent evenings and weekends studying for roles, completely coding exercises and brushing up on the basics. I cannot emphasise enough how important it is to really going over and beyond to know as much as you can about the technologies in the spec. For Java, there are some great resources online, here are some I found to be really useful:

  • http://java-success.blogspot.co.uk/ - This blog is absolutely amazing! The content is excellent, I would highly recommend any Java developer reading the entire site before any interview.
  • http://www.careercup.com/ - This can be really good for testing yourself on interview questions. They may even have questions for the company you are applying for, which is a big bonus.
  • http://www.techinterviews.com - This site contains lots of lists of typical programming questions, make sure you know them. 

Hope this helps some people out there!