Getting ready for job interviews

Searching for a job can be a rather discouraging experience. In a few occasions in the past I 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 you will find them useful.

Who is this post for?
Even though this post is mainly for java developers, there is no reason why other kinds of developers won’t benefit from it as well.

This post is obviously not for developers with 10+ years experience, it is for the lesser experienced.

Why even prepar for an interview?
Many would say that you don’t need special training for interviews, but rather show what you really know in the interview so you will get the job that is right for you.
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 first, 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 job, these weren’t necessarily the right jobs for me.
More over, I feel that the periods in which I searched for a job have actually made me a better developer. Job hunting pushed me to study new stuff and made me understand the companies perspectives and the common technologies that are being used. There is no reason not to use the motivation job hunting 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 always makes me uncomfortable talking about myself as if I am trying to sell something. But there is nothing much to do about it, 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 past employers. 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 describing what you did in your last job/current job (This is a very important part)
    You have to know:

    • The 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 don’t necessarily have something to do with programming. This is in order to establish if you are a creative person and are able to think “out of the box” .

How to practice?
Search the internet for riddles. Even though you can’t learn every one of them by heart, you can certainly adjust yourself to think in certain ways. There are repeating tricks in many of them. Who knows you might even like it and it can actually help you develop a way to think outside of the box. I like to search riddles like that from time to time, just for fun and to keep my mind 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 will simply be asked to show your plain knowledge in java syntax, objects and main principles of Java. For example: this question or 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.

Advices

  • It’s always a good idea to keep track on the current trends. Read the java magazines and experience with the most popular 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 have’nt realized until that point. This will make the difference between a struts developer and a 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 patterns, 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 opposed to the last part, here your java knowledge doesn’t matter, only your design abilities. 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 for yourself. When you finish look at it again and try to improve on it. I assure you that your first design can be improved, you just need to find how. If you repeat this step you will most certainly see improvement in your designing skills.
  • Design patterns – read previous section.
  • There are patterns that repeat 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 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 make the decision later on. Do that by asking questions: about the product, about the business, about the way the company works and about anything else.
    This will not only help you decide whether to work there or not but will actually improve your chances of getting the job. Asking questions shows that you won’t 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 you are 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 I aced interviews which I was sure I failed.

If you didn’t get the job

  • Perhaps it wasn’t meant to be. It sounds corny but it’s true – perhaps they didn’t take you for the 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’s point of view. In which part did you fail?
  • See your improvement. Every failed interview makes you smarter. In fact, the periods in my life in which I was unemployed were the times I probably learned the most, and not just professionally, I actually learned about myself and how to define myself better, as well as focus more on what kind of job I was looking for.

All I have written here demands a lot of work on 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.

2 Replies to “Getting ready for job interviews”

  1. Thanks for the article. Its pretty useful to me because I am acutally looking for a new job and have sooner or later to prepare myself for that.

Leave a Reply

Your email address will not be published.