Part I covers many of the essentials for a technical developer interview, from writing an appropriate resume to more technical topics, regardless of any language specifics.
Chapter 1 discusses the different types of interviews that are used for assessing candidates.
Chapter 2 explains how to write an appropriate resume and cover letter, and highlights the points that interviewers often look for when reading resumes.
Chapter 3 describes how to approach the different interview types.
Chapter 4 covers some basic algorithms, such as sorting and searching. These are popular topics for an interview and are essential for understanding in a day-to-day programming job.
Chapter 5 covers some important data structures. These too are often discussed in interviews, and knowledge of these is essential in most development roles.
Chapter 6 is on design patterns. Design patterns are often a favorite interview topic.
Chapter 7 looks at some useful interview questions, which are often used across a variety of programming languages, not just for Java interviews.
Chapter 1
Dissecting Interview Types
Simply put, employers conduct interviews to recruit new talent, or to fill a necessary gap to improve a teams productivity. Within a development team or department, you will find a wide range of skills, and on the whole, this is key to making a team gel. It is simply not possible for one person to develop and manage a professional-grade application, there is too much to manage: developing feature requests for product owners, maintaining test environments, and answering any ad-hoc queries from the operations team are all daily tasks for the team managing the development of an application. Development teams will often need one or several application developers. They may even have dedicated front-end developers and database developers. Some teams are even lucky enough to have a dedicated build manager.
Varying ranges of experience are important, too. Having developers who have put several applications live and supported them is key to any new projects success. Graduates, or developers with a couple of years experience, are also vital: These employees can often bring a different perspective and approach to developing an application, and the more experienced team members can mentor and coach them in the delicate process of developing large enterprise-scale applications within a team of many people.
When it comes to interviewing for new talent, the process and experience for the interviewee can be quite different from company to company. Understandably, it falls on the shoulders of the teams developers to interview for new developers. First and foremost, a developers day job is to write and produce tested, working applications, and not to interview people. As a result, a developer interviewing people for additional roles may often be under-prepared, and perhaps even uninterested in performing an interview. In a face-to-face interview, this is going to be one of the first hurdles to cross: You need to make the interviewer interested in you.
Companies, and especially technology and digital companies, are getting much better at realizing how important the recruitment process is. Some of the more progressive employers often put emphasis on recruitment within internal company objectives. This puts the responsibility on the employees to make the company an attractive place to work, with the hope that this will attract the top talent, which in turn will bring productivity, success, and profitability.
The first impression for an interviewer will be the resume, sometimes called a curriculum vitae , or CV . How to make an eye-catching resume is covered in the next chapter.
As you move through the interview process for a particular role or company, you will encounter different styles and methods of interviews. Generally, the interview pipeline for a candidate is designed to be as efficient as possible for the employer, with the face-to-face interviews coming late in the process.
The interview pipeline will usually start with a phone screening, followed by one or more technical tests, and finally some face-to-face interviews.
Looking at the Phone Screening Process
Companies often start the interview process with a telephone screening. This is advantageous from the companys side, because it can take a lot of people to organize a face-to-face interview: finding available times for all the interviewers, HR, and possibly a recruitment team, meeting rooms, and so on. This is also helpful for you, because you wont need to take much time away from work. Many people like to keep it quiet from their current employer that they are looking for jobs, so it shouldnt be too hard to find a quiet corner of the office or a meeting room for an hour to take a phone interview.
If you do an interview over the telephone, make sure you are prepared well before the time of the interview. If you have to take the call while at work, book a quiet meeting room or find a quiet corner of the office. If that is not possible, you could go to a local coffee shop. Make sure beforehand that the noise level is appropriate: You dont want to be distracted by baristas calling across the caf or loud music playing in the background.
If you are expecting to do a remote live-coding exercise, make sure you have Internet access wherever you are. Have a pen and paper handy in case you want to make notes during the call for questions to ask later. Use a hands-free kit when typing: It will make the call much clearer for the interviewer. You dont want to waste precious time repeating questions or re-explaining your answersthis is very frustrating for all involved.
It might not even hurt to have a few notes in front of you for any topics that may come up during the call. This is not cheating; it can help calm any nerves and get you settled into the uncomfortable, alien experience of having to convey technical explanations over the phone to someone you have never met before. Note, however, that if and when you have an interview face-to-face with the team, you wont be able to have any notes in front of you.
Usually a phone screen lasts for 30 to 60 minutes, and you should expect some very high-level questions. The kinds of questions that come up in a telephone interview are often about language-agnostic algorithms. You may be asked to verbally describe these, or you may even be asked to attempt some live-coding challenges in a shared, collaborative document editor, such as Google Docs, or perhaps a bespoke interview-hosting website, such as Interview Zen ( www.interviewzen.com ).
At any point in the interview process you should know the basics about a company. Look at the about us page on their website. Read their blog; find out if they have a Twitter account. If you are applying for a small company or a startup, try to find out some more about the senior members of the company, such as the CEO and CTO. They can often be quite active in a local development community.
At the end of any interview, the interviewer will often ask if you have any questions for them. Answering no to this question will leave a bad impression; it will show that you do not care enough about the role. Considering you now know that this question will more than likely come up, think about what questions you want to ask long before you even go for the interview. Think about what you want to know about the team dynamic, how the team works together, and what the office environment is like. Only you can come up with these questions. This is not the time to talk about the salary or anything else to do with the package that comes with the job. There will be plenty of time to talk about that once you have been offered the role.