Bookmark this now. It’s a long post.
If you’re reading this then it means you’ve decided you want a new job. You’ve made the right decision. The market is in your favour- there are lots of jobs going and not nearly enough programmers out there to fit demand. As a result wages are going up and the best developers can ask for a lot. You’re no longer limited to the standard 10% bump when you change jobs.
So, all that stands between you and a ton of cash is getting an interview. Then being amazing at the interview.
I’ve tried to condense the basics of the process from start (resume) to finish (yay job!) in this post. That means it’s a big post. If you’ve got time now then great, otherwise bookmark it. This will be your go-to place for your job hunt.
Read the whole thing through from start to finish. Then come back and remind your self of the various bits as and when you need them. Even if you don’t think you don’t need a section, read it anyway. You will find something useful I promise.
BOOKMARK THIS PAGE NOW
But why are you doing this?
Because I’m convinced you’re going to find this page so useful you’ll then buy my amazing book, Java Interview Bootcamp, which is like this page but on steroids. It’s 84 pages of greatness on how to smash the interview process.
But this page isn’t a sales page. It’s an honest attempt at condensing the whole process down into one consumable page in the hope that it will help people. If at the end you decide you want more then the book is there.
I get emails from people most days to say thanks, either for the book or the website, as it’s helped them get a new job. That feels awesome. If I help you, then do drop me an email, as I’d love to hear from you.
But who are you?
Hi, I’m Sam Atkinson. I’m a Lead Java Developer and been working in financial institutions for over 7 years now and have been lucky enough to be involved in the hiring process for most of my career, culminating in designing the interview process for my most recent department. I’ve interviewed candidates of all levels from graduate to senior in my time and became increasingly frustrated with the process. Interviews aren’t hard, they just require a bit of preparation on the part of the candidate.
Remember, read the whole thing from top to bottom!
Step 1: Resume
To get a job, first you must have a resume. Resumes are easy if you know what you’re doing, which you will do after you read this.
Here are the 2 main pieces of advice you need.
- It must be shorter than 2 pages
- Do not lie
If you take nothing away from this page, just heed those words. When we’re hiring we get a lot (and I mean a lot) of resumes. No one has time to read them. Normally we’ll be looking for a couple of key phrases (for me it’s normally TDD), but generally we’re just looking to make sure you are a Java developer and you’ve got sufficient experience. If you send me 4 pages I will not read it past the first 2 pages.
If you send me a 1 page CV, I will herald you as a hero and you will get bonus points.
Do not lie. Even on a resume it’s obvious when you lie. If you do sneak it past you’ll get found out on interview and tarnish your reputation (and that matters, because the world of Java devs is a surprisingly small one, despite being huge in number).
An extension of this- do not put a huge list of technologies on your CV. You cannot be good at all those technologies. This amounts to a lie. When you’re describing each role you’ve had, mention the key technologies you’ve used in there.
It’s ok to have multiple resumes- if a role specifically says you need to have AWS experience, tweak your resume to highlight your AWS experience. That’s much better than listing all the technologies in the world and hoping you hit a match.
Don’t list any Microsoft office product. Kinda goes without saying you can type a word doc. (Yes, people really do do this.)
Google Docs has a whole bunch of pretty resume templates. Use one of those.
Keep your document well spaced out. When I say max 2 pages, I mean 2 pages at 12 or 14pt, not at 7pt with no whitespace.
Step 2. What to do with your resume
If you can and are willing, use a recruiter. Sure, they have a bad rep. There are some terrible ones out there. But it’s their job to get you a job (that’s how they get paid). It also means you don’t have to write cover letter after cover letter. Cover letters are depressing, even more so when you never hear back.
Ask friends. They may know or have used a recruiter and recommend/tolerate them. Go with these people. If not, just do some basic research on linkedin/twitter/the web to see if you can find out any info.
Go for coffee with recruiters. They’ll pay and free coffee is great. If you like them then roll with it. But remember- they’re working for you. Don’t let them pressure you into any jobs you don’t want to do, or later on to take a salary you’re not comfortable with. They’re just after their pot of gold, and you need to look after your own.
If you can’t/won’t use recruiters, then there are any number of job sites out there; stackoverflow has a good job section and HackerNews has a monthly jobs section full of gold. Then there’s the usual boring ones like indeed, monster etc. which serve a purpose if you’re short on places to send it to.
Whatever you do, make a spreadsheet which says:
- Where you sent your resume
- How you sent it
- What date
Because it will quickly become a bloodbath as you send it everywhere and utterly lose track. Either way, the interviews will start to roll in.
If you do have to do a cover letter, start by writing one generic one that’s really good, then customise it per-time. They’ll mostly end up very similar anyway. Talk about why the role excites you (new challenges! Opportunities to work with new people! Broadening of horizons!).
Step 3: Phone Interview
This will vary depending on the company- not everyone does a phone interview, but it tends to be pretty common. The main purpose of a phone interview is two fold:
- Check if you can kinda program Java
- Check if you are insane
I’m only being a little facetious here. I’ve had phone interviews with people that would struggle with Hello World, because they’ve been told to write a CV that emphasises Java when in fact they’re a python dev.
As far as sanity goes, there are a lot of people who you can tell quite quickly would not fit on your team, either because they’re too quiet/loud/obnoxious/weird. Phone interviews are good for screening this.
From your perspective as the interviewee, do some Java prep. Just some basic core Java stuff (I’ll discuss this in more detail below). Most people think that because they’re programming Java day in day out that they don’t need to prepare.
They are wrong.
The fact is most interviews I’ve experienced have nothing to do with the day to day life of a Java programmer. You can read post after post after post online about how the interview process for developers is broken, and they’re all spot on. It’s terrible.
However, if you acknowledge that fact then it’s incredibly easy to game the system. The first step is to do some basic revision. It is a test after all! We’re not talking about weekends spent knee deep in Effective Java. Just some basic core Java revision. See below for more.
The second thing you can do is learn some manners. Here’s how the start of a regular phone interview should go.
Hi is that John?
Hello, yes this is John
Hi John, it’s Sam from Awesome Co.
Hi Sam! I’ve been expecting your call, how are things?
Good thanks, how are you?
Good, a little nervous but good
Awesome, well no need to be nervous. We’re just going to have a short phone interview today to get a basic understanding of your Java skills and some stuff around dev practices, and then you can ask us some questions. Does that sound good?
Sure, sounds good
That’s not a difficult conversation right? John was expecting the call, had the good courtesy to ask me how I was, and was capable of having a conversation of multiple sentences.
I have (repeatedly) had the following on phone interviews:
- The person hasn’t found a room/quiet space to take the call in so the first 5 minutes are spent with them running around trying to find a free room
- The candidate will refuse to engage in any sort of conversation, and will limit all sentences to 2 words or less.
- The candidate has forgotten the interview all together
- And my personal favourite, the candidate sounds like I’ve really inconvenienced them and/or they really could not care less about the interview
So, here’s the simplest phone interview advice I can give. Be prepared for the call with a good phone line and a quiet room. Sound like you care about the job and interview. Sound passionate about the job and the technologies you’ve worked with/will work on.
This will put you ahead of at least 60% of your rivals.
Do some core Java practice before the call.
This will put you ahead of 90% of your rivals.
Step 4: Face to Face interview
Well done! You get to go in and talk in person!
Here’s some Deja Vu. A candidate comes in for an interview. I go to meet them from reception.
Hi Dave, I’m Sam, how’s things?
Good thanks! Nice building you’ve got here
Yeh it’s not bad but the lifts are terrible! You in work today?
Yeh just nipped out, said I had a doctors appointment. We’re just building up to a release at the moment but it’s not till the end of the week
How often do you guys release?
Isn’t that a nice easy conversation? Here’s what happens surprisingly often:
- Candidate will refuse to engage in conversation and will only respond in one or two word sentences. This is not an exaggeration by the way- I’ve repeatedly had candidates appear actively hostile
- Candidate has a limp hand shake
- Candidate crushes my hand
- Candidate is dressed in jeans and t-shirt
Again, the simplest piece of advice I can offer is don’t be hostile to your interviewer. Studies show that a first impression is made in 7 seconds. Dress well (I prefer trousers and shirt. Suits are too formal, but whatever you’re comfortable in… as long as it’s not jeans and t-shirt. Unless you’re going to a startup maybe?), smile, make conversation. Have a quick read of DZone or Engadget before you go to the interview so you have some general nerd news to discuss, and be prepared to answer questions about your project/how your team works.
It’s genuinely worth practicing your handshake if you’re not confident with yours. It really does make a difference to your first impression.
Now you’re past the first 7 seconds, you can get onto the actual interview. All companies are different; maybe you’ll get 3 people in a panel, maybe you’ll get three people one after an other, or maybe you’ll get something completely different. Just try and be calm- your interviewer knows it’s a high stress situation. Take a deep breath when you get a question, or maybe a sip of water, and think about what you’re going to say. Otherwise you’ll just ramble on and on and not have a concise focused point. This is hard, and the area I used to suffer with most. Give concise answers, and ask “would you like me to elaborate?”. That way the interview can drive how long your answer should be.
In terms of questions, you are going to get asked about algorithms and big o. It happens in basically every Java interview in existence. They’ll give you some data problem and ask how you would sort/search/organise it. Then they’ll ask the big o of it. It sucks, because the correct answer is.
“I’d Google it”.
But that doesn’t seem to cut the mustard. Any interview question where the answer could be “I’d Google it” means it’s probably a crappy interview question. But it still stands between you and the pot of gold.
SO READ UP ON IT AND PRACTICE.
Just as with the phone interviews, you need to practice Core Java again, as they’ll probably pull some sort of patterns question up. Make sure, before this interview and before the phone interview, you’ve got a good, well rehearsed answer for:
- What is deadlock? What is livelock?
- How would you implement Singleton in Java?
- What are your thoughts on checked exceptions?
- How does an ArrayList/LinkedList work? Why would you choose each?
That’s a random set of 4 questions, but at least one of these (or something similar) seems to come up all the time. I had an email only last week from someone who got asked the Singleton question, and ironically the interviewer didn’t know you could make a Singleton using an enum in Java.
You really do need to prepare for this stuff. I’ve seen the most senior developers trip over their tongue trying to explain deadlock, which is a pretty easy concept in reality. It’s not that they didn’t know what it was, they were just poor at explaining it. And that’s the ball game! Being able to explain complex things in a simple manner is one of the most important traits the best developers have. Practice your answers kids.
Make sure you’ve done your research on:
- Threading & Executors
- Data Structures and Algorithms
- Multithreading and collections
- JVM, Tuning and Memory Leaks
- Basic OOP
- Design Patterns
Above and beyond this will depend on the interview. If you know they’re big into Spring then practice Spring. If it’s a web dev team then build yourself a full stack project at home to practice.
Reading up on this stuff is a must, but if you can then use that to build yourself little projects and code samples at home then it’s even better. It’s a great way to learn by doing, particularly if you can build something useful. Then you can throw it up on GitHub and reference it in the interview. “Oh Spring Boot, yeh, I’ve been playing with that the last couple of weeks to build interesting thing here, I can send you a link to the GitHub if you like?”. As an interviewer I get really excited by developers who play with code outside work.
The internet has given the impression that you won’t get a job unless you’ve got a super high score on stack overflow and a 100 contributions to open source.
This is baloney.
Sure, if you’re going for the Netflixs of this world then that stuff will really help, but for the majority of Java jobs it’s no big deal, because most Java devs are happy to go home and stop coding. They go outside and have families and things.
If you have a few projects or websites or really anything, then that’s cool. Put it on your resume and talk about it at interviews. It clearly demonstrates that you’re actually interested in technology, and it makes me really want to hire you.
Step 5: Programming interview
I hope you have a programming interview. If someone is willing to hire you, as a programmer, without seeing you program, you should be very worried. This is still the case with most interviews though.
If you’re lucky enough to be interviewing for a team awesome enough to want to see your coding skills, then take a long deep breath. It’s a really scary prospect, coding in front of people and having them judge you.
Talk as you code. If you go silent the interviewers won’t know what you’re thinking, and a good pairing session involves lots of sharing. However, be sensible and try to stay focused. They don’t need you to talk through how you’re creating a List as they can see the code. Talk about your design and solution.
One of the main things we’re looking for is your ability to handle the IDE. You’re spending something around 4–6 hours a day in your dev environment and we expect you to be able to use it properly. Specifically, know your shortcuts. Simple things like knowing how to create variables, insert new parameters and extract fields should be part of your toolbox already but if not then now is the time to learn. There is no way to get to a no faster than manually copying and pasting a new parameter around the codebase.
That said, if you don’t know a shortcut but think there may be one then ask. It shows you’re keen to learn and want to be efficient, and that’s good.
Don’t eagerly optimise. Do the minimum to make it work, and if you’re concerned about performance explain to your interviewer after you’ve got a green test and the optomise from their if necessary. A lot of people try to implement a full scale Amazon stack when they’re being asked to sort 10 items.
Step 6: Job offer
Because you’ve read all this, and bought the book, and done your practice, you’ve now got job offers coming in. Great! Feel free to donate some of your new paycheck my way.
This can still be a complex bit. We nerds suck at negotiation, and that’s fine, because it’s hard.
The big secret is that, with the exception of maybe some tiny companies, your future boss doesn’t care what you want for your salary. As long as it’s not stratospherically above your peerage, they’ll generally just give it a green light. So, don’t limit yourself to +10%.
Try not to commit to a number at the start of the interview process. Lines such as “I’m sure we can work something out if both parties are keen” will do just fine. Then when the negotiation starts, aim high. Ideally, you’ll have them come to you with a figure first (don’t let them know what you’re on at the moment. That’s irrelevant. The pay should be related to the market, not to what your last firm is paying you).
Then ask for more. Like, $15,000 more. Or whatever “A hell of a lot more” is in your currency.
Do you realise, as someone trying to hire, how hard it is to find good staff? It’s near impossible. If I’ve dragged you through 3 or 4 stages of interview and I, along with my team, have decided we want you on board, then we’re going to be willing to bend over backwards somewhat for you. You have the power. It just might not be that obvious.
You may not get the 15k, but it’s a point to start negotiations at. Pure cash can be replaced with benefits, holidays, conference trips or whatever you find valuable. The reality is on a MegaCorp spreadsheet you are an insignificant decimal point anomaly. You are very important to the team, but insignificant to the firms balance sheet.
Whatever you do, make sure you earn enough money that money is no longer a problem. If you go to work and you’re thinking about how you should be earning more you will not be happy and you will not last.
So, in summary of this entire piece…
- Be a nice person to your interviewers and anyone involved in the process
- Take the time to prepare for interviews
What you need now
So I told you I had a book. I hope you’ve found this missive to be eminently useful to you. However there is still much more to learn, and that’s all in Java Interview Bootcamp.
The book covers all of the soft skills stuff in a lot more detail. Like, incredibly precise, do-this-and-you-will-get-the-job detail.
It also covers all the Core Java stuff you need to review in details. It’s got one of the best overviews of Big O notation available (according to people that have read it, not just my ego).
Here’s what you get:
- Java Interview Bootcamp eBook in PDF, ePUB and .mobi formats: In the first section of the book you will learn to craft the perfect resume, land interviews and thoroughly prepare whether it be a phone, face to face or programming test.
- 2 example resumes: A Junior and Senior resume for you to use as a base to write your own
- Online resume template: It’s good to keep your resume online so you can guarantee the latest version. A free template for you to customise and host.
And as a bonus, if you sign up now I’ll send you a practice interview and solution sheet, a full PDF script of an example interview along with all the answers to help you prepare.
You’ll get all this in your inbox today for just $14.
That’s the cost of lunch.
Read the book risk free: If you buy and you’re not satisfied, you can have your money back. 100% refund. I don’t want your money if I’ve not helped you with your interviews.
Click the big BUY button below.
I just wanted to thank you for writing the book and sharing your experience with Java interviews. It was helpful in guiding me to concentrate on the important topics and the key knowledge from each, allowing me to drill down into each topic and not lose focus on the way.
I am usually quite nervous at interviews, but the tips you mention in the book helped calm my nerves. I just want to applaud you in writing this book for fellow programmers!”
“I’ve already bought your book ‘Java Interview Bootcamp’ and have got some great pointers and tips from it – Its a great piece of work. I’ve been in the IT world for more than 20 years and wanted a book to just review Java”
“Thanks Sam, It was really helpful. It helped me summarize the topics I should be concentrating upon.”
“When I was reading this book I asked my self a lot: “Why I didn’t read this book before?” Several days before I started reading the book I had an interview. And I was quite surprised when I noticed that the book describes an interview which is exactly the same. All that questions I was asked are here, just in front of me. But it’s a little bit late. So here’s an obvious advice: if you want to be prepared for the interview try to read this book before, not after.
The book contains two big and logically separated parts. First part describes an interview process starting with CV and ending with personal talk. Here you’ll find an information how to prepare yourself to the interview. One of the key points is soft skills. Second part is about technical stuff like OOP, core Java and algorithms. If you’re new in Java, this part will help you to find main topics to learn and improve. If you’re already good as a Java programmer, you can use this part as a reference. It’s quite helpful to refresh your knowledge, especially if you had no interview practice for some time.”
“Java Interview Bootcamp is very well written in a clear and concise fashion, which is something that can be rare in books about programming. Atkinson writes in a friendly and conversational tone, without ever sounding less than professional. It focuses specifically on Java, but I think it is general enough to apply to any programming interview. Certainly the first half is, which focuses on interview skills and developing a good resume.
The second section focusses on core Java knowledge, and is clearly explained and gets right to the point. It’s a great resource to have an experienced programmer and interviewer lay out exactly what knowledge is important to carry into an interview and a job. As someone who is preparing to break into programming professionally, I am so glad that Atkinson wrote this book. Many times I have wondered what, specifically, to focus on for the interview process.
The field of programming is so vast that, at times, it is easy to become overwhelmed with what to focus on. Java Interview Bootcamp does a great job in narrowing that down. Highly recomended!!!”
Q: I’m a Junior Developer, is this for me?
A: Yes! Any interviewer is going to want to know you have a good grasp of the basics of Java upon which to base any training they give you. The book will get you fully prepared around Core Java concepts. You’ve probably also not done much interviewing, from either side of the table. This will help you prepare, and you really do need to prepare. Interviews are very daunting for a junior.
Q: I’m a Senior Developer. Is this for me?
Yes! Most of the dumb stuff I’ve seen in interviews is from senior candidates who think they don’t need to prepare in any way because they’re senior. Do not fall into this trap. You’re going to be expected to be exceptionally good at the soft skills as well as development. Java Interview Bootcamp will help you with all of this. It’s a tool in your weaponry- it shouldn’t be your only preperation, but it’s a vital tool in helping you.
Q: I really need help preparing for Spring/Hibernate/Web Development!
Upon buying the book you’ll recieve an email course which includes all of the content from Java Interview Bootcamp as well as pointing you to my favourite courses online to take to prepare for all those things and much more.