Avi is a senior developer with a passion for Java technologies… http://www.aviyehuda.com/ Avi is a DZone MVB and is not an employee of DZone and has posted 25 posts at DZone. You can read more from them at their website. View Full User Profile

Getting Ready for Job Interviews

02.09.2010
| 9722 views |
  • submit to reddit

Searching for a job can be a rather discouraging experience. In a few occasions in the past I have found myself looking for a job as a Java developer. During these occasions I have managed to gather a few principles that have helped me along the way, perhaps it will be useful to you.

Who is this post for?

Even though this post is mainly for Java developers, there is no reason why other kinds of developers wont also benefit from it. This post if obviously not for developers with 10 years experience, it is for the lesser experienced.

Why even getting ready for an interview?

Many would say that you don’t need special training for interviews, you need to show what you really know in the interview so you will get the job that is right for you they would say.
There is much truth in that, but I still think there is much that can be done in order to improve your chances in finding a job, and not just any job – the right job for you. I do not suggest you lie in your interview, quite the opposite, you need to show your real self. For some people it comes naturally but others (like me) need to practice to be able to display that. At start, whenever I went to a job interview I said the things the interviewer would want to hear and even though it sometimes worked and I did got the jobs, these weren’t necessary the right jobs for me.
More over, I feel that the times I have searched for a job have actually made me a better developer. It has pushed me to study new stuff, it made me understand the companies perspectives and the common technologies that are being used. There is no reason not to use the motivation job searching gives you to improve.

 

An interview structure

Even though software development interviews may differ, you can still find a clear distinction between different parts of the interview.

  • Tell about yourself and your experiences
  • General riddles
  • Java riddles and syntax
  • Specific technologies questions
  • Java short design questions
  • General Design questions – classes design and DB design

Probably most interviews will not include all of these parts, but surely most of them.

Tell about yourself, your current job and your experiences

This is the part I probably hate the most. It’s always making me uncomfortable talking about myself as if I am trying to sell something. But there is nothing much to do, it is important.

Don’t get me wrong, the professional parts of the interview are no doubt more important, but still, this part may be the one extra point you need to be chosen over another guy.

Advice:

  • Never ever trash your current or any of your previous jobs or bosses. Your interviewer may assume that you are a difficult person.
  • I have found that many of the interviewers love the fact that I have other interests besides programming. I guess a part of being a good programmer is to be curious and that can be acknowledged by having diverse interests.

How to practice?

  • practice how to define yourself
    • What are you really good at?
    • What are you looking for?
    • Why do you want to quit your job or how did you lose it?
  • practice how to explain what you did in your last job/current job (This is a very important part)
    You have to know:
    • General design of the product you worked on.
    • What would you change in that design?
    • Class diagram – why did you designed it like that?
    • Which design patterns did you use?
    • What problems did you solve?
  • Practice while talking out loud. Don’t feel stupid, doing it will make you sound more conformable and confident in the real interview.
  • Work on your confidence. The way you sit, the way you walk and the way you talk, should all show you are a confident person.

General riddles

Some of the work places want to see the way you think by answering general riddles that not necessarily have something to do with programming. This is in order to see if you have a creative way of thought.

How to practice?
Search the internet for riddles. Even though you can’t learn every one of them by heart, you can certainly adjust your brain to think in certain ways. There are repeating tricks in many of them. Who knows you might even like it and it actually can help you develop a way to think outside the box. I like to search riddles like that from time to time, just for fun and to keep my thinking fresh.

 

Java riddles and syntax

Probably all of the interviews I have been in perform this part in one way or another. In this part you will not be asked to design anything or answer hard programming questions. You would simply be asked to show your plain knowledge in java syntax, objects and main principles of Java. For example: What is the difference between ArrayList and Vector. You may also be asked some short java riddles, like what is the best way to sort an array or to find loops in a linked list.

How to practice?

  • Search the internet and collect questions, copy them to a document and go over them every day.
  • Search the internet for java code examples. Copy them and experience with them.
  • Acknowledge repeating tricks like going over a list with 2 iterators instead of 1 is a principle that I ran into in many java riddles regarding lists.

Specific technologies questions

In this part you will probably be asked about specific technologies according to your resume. Like Spring framework, Hibernate, Struts and so on.

Advice

  • It’s always a good idea to keep track on the current trends. Read the java magazines and experience with the most used technologies out there.
  • If you don’t know a certain technology, don’t say that you do. If you fixed a bug one time in Hibernate that does not mean you are a Hibernate expert. Believe me, an interviewer will probably see that after one question and then your chances to pass the interview are next to nothing.
  • It may be a good idea to also strengthen your knowledge in technologies you already know. It may be that you worked with Struts for years but you never had the chance to build a project using it from scratch or you never thought about the life cycle of it. This is the time to open books and learn just that. This is the time to open your IDE and start a project from scratch. This will make you realize things you haven realized till that point. This will make the difference between a struts developer to struts expert.

Java short design questions

This part also requires java knowledge, but it’s not questions of syntax. In this part you will be asked to answer harder programming questions like how to write reader’s/writer’s lock, what is the best way to create a singleton or how to create a thread pool or a caching system.

  • Search the internet for java code examples. Copy them and experience with them.
  • Also here there are many repeating tricks like multi-threading problems many times include the use of wait/notify.
  • Learn Design patterns. Although I am not a big fan of design pattern, it is something that can’t be overlooked in the world of software programming. I suggest you go over them and take 2-3 and study just them really good.

General Design questions / DB tables designs

As appose to the last part, here your java knowledge doesn’t matter, only your design abilities matter. These are pure design questions. Like designing a game of chess, design a book store DB or a tickets web site.

  • The internet is full with design question, but you actually don’t have to search, you can just look around. Look at the system around you. Choose a system (like a computer game) and design to your self. When you finish look at it again and try to improve that. I assure you that your first design can be improved, you just need to find how. If you repeat this step I assure you, you will see improvement in your designing skills.
  • Design patterns – read previous section.
  • There are patterns that repeats a lot:
    • Many times a use of layers is a good idea. If you are asked to design a large system, than you probably need to create a data layer, business layer, user interface layer and so on.
    • DECOUPLE- every time you have a piece of code that is doing something unique, you should take it out and add also an interface so you could change the implementation easily. Almost always there is an interface or an abstract class, even if no inheritance is needed.
    • Almost always there is a factory or a singleton or both.
    • Many times there is a worker – a Daemon thread
    • Many times a use of cache is required to improve performance.
    • Multi-threading problems many times should include the use of wait/notify.
    • Multi-threading problems many times should include a thread pool.

 

General tips

  • Ask questions
    Remember – you are not just being interviewed, you are also the interviewer yourself.
    In the past I had a different approach, I have tried to pass the interview no matter what, this was my only goal during the interview. This approach is no good. Even though you don’t have to decide during the interview if this job could be right for you you still need to gather as much information that will help you take this decision later. Do that by asking questions, about the product, about the business, about the way they work and about anything else.
    This not only help you deciding whether to work there or not this will actually improve your chances in getting that job. Asking questions shows that you wont settle for any job, that you have standards, it also shows that you are curious and that is great.
  • Most important – show interest in the company and in the job your interviewing for. This can help you in many ways.
  • Click with your interviewer.
  • if you don’t know something just say “I don’t know”, it is a lot better than mumbling. if you find yourself saying “I don’t know” too many times, maybe this is not the place for you but don’t give up, there were many times that I passed interviews while I was sure I failed.

If you didn’t get the job

  • Perhaps it wasn’t meant to be. It’s sounds corny but it’s true – perhaps they didn’t take you to that job because they truly believe it’s not the right place for you. Maybe they are right.
  • Learn from your mistakes. Go over the interview in your head, try to see the interviewer point of view. What questions did you fail?
  • See your improvement, every failed interview is making you smarter. In fact, the periods in my life that I was unemployed were the times I’d probably learned the most and not just professionally, I actually learned about myself and how to define myself better.
 All I have written here demands a lot of work from your part. You certainly can not do it all, but let me tell you, you can really truly improve.

Hope it will help. Good luck.

From http://www.aviyehuda.com/
Published at DZone with permission of Avi Yehuda, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Tags:

Comments

John J. Franey replied on Tue, 2010/02/09 - 9:12am

If preciouss asks, and it doesn't answer, we eats it my preciouss. If it asks, and we doesn't answer, then we offer competitive salary with comprehensive medical coverage.

If an interviewer values a candidates work history and checks up on references, then asking riddles is simply entertainment, or a power play in the early stage of a blossoming competitive relationship.

Sancar G. replied on Tue, 2010/02/09 - 9:29am

You already have a large collection of general riddles and java riddles I guess. Why don't you share? Not that I search for a job and also it is not common practice to ask riddles during an interview, but I like solving them;)

Ashish Tiwari replied on Tue, 2010/02/09 - 11:15am

Hi Avi Y., You just spot on the interview strategy. I have appeared in so many interviews either face to face or telephonic, but I felt that if they have requirement (and you have luck at the same time), then they(interviewer) will definately select you no matter how good or bad you performed.

Adedayo Abiodun replied on Wed, 2010/02/10 - 12:35am

Its not really a pleasant experience when one has to look for a job, but this tips are certainly worth considering and deserve serious attention. I think a failed interview should be an added experience, for a better representation in the next interview.

Avi Yehuda replied on Wed, 2010/02/10 - 12:51am in response to: Sancar G.

Hi Sancar,

Thank you for your comment.

Well the post was already long as it is, I didn't want to overload it with also java riddles, this probably requiers another post, and as you said, it's fun so why not. 

 I don't know why you said you haven't been asked any java riddles during interviews, I certainly was asked in many of them (not all of them though), perhaps its different in different places.

 

Jeroen Wenting replied on Wed, 2010/02/10 - 1:05am

The only interview where I was asked "riddles" got them from a book I happened to have been reading on the train to the interview. I recognised them, pulled out the book, and had a nice conversation piece :)
More often the only thing that matters in an interview is whether someone likes the way you look. If you're overweight and everyone you see walking towards the interview room looks athletic, you're unlikely to get hired no matter how good you are. Same if you're over 35 and everyone else is under 30. One company called me in for an interview, asked if I was married, and concluded based on the fact that I wasn't that I'd not make a good addition because they "are a family oriented company". Actual practical (or even theoretical) skills have nothing to do with it.
In fact I've only ever been asked to write some code (more than a one liner) once during an interview, been asked to give my analysis/opinion of an existing bit of code maybe twice more.

Avi Yehuda replied on Wed, 2010/02/10 - 1:13am in response to: Ashish Tiwari

Hi Ashish,

As a developer I had 2 periods in my life where I was searching for a new job. The first period was in about the end of 2006 where the software job market was overflowing with open positions. Back than it was much easier to get a job. As you said, no matter how I did in the interview, if my expirience was as they requierd they wanted me almost always. The seconed period of job searching was not too long ago, that was in the middle of 2009, where the software job market was at all time low (at least where I come from). Let me tell you, times were bad. They where hardly any interviews at all (I am talking less that a single interview a week).  That was when I decided to stop counting on luck and start doing the best I can. And I am not just talking about getting a job, I am talking about making sure that if the same situation will come up in the future I will be prepered. Those where the times I learned all the principles I wrote in the post.

Looking back I am really thankfull for those times. It really made me better and I can see that in my current job, and thats what I am actually trying say in the post - if you are searching for a job, make the most of it.

Anyway, thanks very much for your comment.

Sancar G. replied on Wed, 2010/02/10 - 8:27am

Hi Avi, thanks for your answer and sorry that my post wasn't clear enough. It is not common practice here in Germany afaik, I've been at a few job interviews already and never been asked a riddle. Maybe you should start a section on your blog containing riddles. I definitely would like it.

Cej Hah replied on Wed, 2010/02/10 - 4:16pm in response to: Jeroen Wenting

WTF!?!  Not sure what country you are in, but it's illegal, in the US, to ask if you're married or not in a job interview along with a whole bunch of other questions that are discriminatory.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.