How to prepare for a software engineering interview
Preparing for a software interview is very tricky. But, the fact that you are reading this page gives you a bit of a head start on the competition. And, you absolutely must prepare to give yourself the best possible chance to succeed at an interview. A good way to approach it is to think of a software engineering interview as an exam for which you must study – but the only thing is that you usually have less of an idea of what will be on the exam than you would in a college or high school exam. But, if you do your research and put in the preparation you should have some general idea of the kind of questions that will be asked in a specific company, and you should also have some answers for those questions. This leads us to our first piece of advice.
The golden rule to preparing for a software engineering interview
Here’s my golden rule that I really think everyone should follow when looking for a new job in the software industry: Do not even start applying to jobs until you have already put in at least 40-50 hours of preparation time.
The reason I say that you shouldn’t even apply to a job until you have put in some serious preparation time is because of the fact that you will – assuming you have a decent resume – start getting a lot of responses very quickly from companies, and you will quickly be overwhelmed just talking to various recruiters, sending emails, and setting up appointments to chat with people in human resources or whoever is handling hiring. This means that you probably will not have much time to prepare, because all this communication with the companies is a very time consuming job in itself.
And, if you do have a few interviews and you completely fail because of your lack of preparation, then you are already losing out on what could have been some great opportunities. Wouldn’t that be foolish when if you just set some more time aside to prepare you could have easily got some job offers?
What to do if you’ve already applied, but haven’t prepared
You may be reading this article after already having applied to a number of jobs, or even after having faced a few rejections from different companies. In this case, my advice would be to try to postpone any interviews you have set up in the future in order to give yourself more time to prepare – an extra week or two could be very valuable in terms of giving you more time to do the necessary prep work. Just because the software job market is hot does not guarantee that you will get a job – you absolutely must put in the time to prepare for every interview you have.
Looking for a job while already employed in software
And, if you are looking for a new job while already working full time, you are almost certainly setting yourself up for failure if you don’t do your prep work before applying for jobs. This is because having a full time job means that you will have even less time to prepare than your competition – some of whom may not even be working full time, and therefore have more time to prepare. Many people don’t think of getting a job in terms of the competition out there, but that is the reality of the situation – you are trying to beat other people to land a job – and the most well-prepared person wins. You might be the most well qualified person, but if you can’t answer every technical question asked in the interview, you certainly will not look like the most qualified person!
I have seen too many people make the mistake of preparing for a software interview just 2 days or 1 day before an actual interview. While that might be OK if you really, really know your stuff, I think for 95% of programmers out there that my golden rule holds true. The reason why you absolutely must put in so much time is that software interviews can potentially cover a huge variety of subjects – from data structures to SQL to operating system concepts. And those are just a few of the subjects that every programmer is expected to know and could be covered in any software developer interview.
How many hours should I spend preparing for a software interview?
You might be thinking that the 40-50 hours of preparation time we mentioned earlier for a programmer interview sounds excessive. But, believe me, it’s not. In fact, you may even need to put in a lot more time, depending on how efficient and intense you are when you study. Especially if you are currently working a very non-challenging job where you do the same thing every day – you will definitely not be ready for the type of questions that interviewers will ask you, because they will throw you out of your comfort zone. A common mistake that people make is to think that number of years of experience translates to ability to perform a job – but that is absolutely not true because some people can achieve in 2 months what it takes others to achieve in 2 years. So, don’t delude yourself into thinking that your 5 years of experience (or whatever it may be) has any merit – you can’t rest on your laurels when interviewing.
Broad versus specific subjects covered in an interview
I want to make a distinction between the “broad” subjects that could be covered in any interview and the more specific interview questions that would only be asked for more specific programming positions that you may be interviewing for – like Java Developer, LAMP (Linux Apache MySQL Php) developer, or a C++ developer. When I say “broad” subjects, I mean the things that every programmer is expected to know – read on for a list of these broad subjects.
A list of subjects every programmer should cover before an interview
Before jumping into an interview, every programmer should cover certain subjects that are considered programming fundamentals – because they are the foundation of software engineering, and are the types of knowledge that all software engineers are expected to know well. Of course, you may never use some of these things in your working life, but interviewers love to ask these types of questions. These subjects include: data structures, SQL/Databases, operating systems, and concepts like recursion, Big O Notation, inheritance, and polymorphism.
Preparing for more specific and advanced software interview questions
In any software job you apply to you will definitely be working with some very specific technologies and programming languages – like Python, Ruby On Rails, MySQL, etc – that you may be expected to have some experience with before you can get that job.
For example, if you are a PHP developer looking for a senior PHP developer role then you absolutely must review some advanced PHP interview questions, and of course you must also review your PHP fundamentals. Because you can’t possibly perform in an advanced PHP developer position if you don’t have any experience with programming in PHP, and you must be able to demonstrate that ability in an interview. And the same holds true for any software position that demands someone with a more specialized skill set – because you will of course be working with some specific technologies on the job, whether it’s Java, PHP, C++, etc. So, if you are not already, be well aware of what kind of technologies you will be expected to know for the job that you are applying for, and be sure to prepare to face those technology-specific interview questions.
How to allocate your time when preparing for a software interview
When budgeting your study time before an interview, you should first try to cover all of the general subjects that we mentioned earlier, simply because those types of questions are the ones that you could encounter in any interview. Then, you absolutely must study up on specific interview questions, especially if you have been working in a very specific field of programming (like a senior Oracle developer) and you are only interviewing for those types of positions.
Very highly advanced and experienced programmers should naturally expect most of the questions to be in their target area of expertise, and they probably won’t even face the more basic programming fundamental type questions since those would be considered far too easy for people who have some really great experience.
Know the company that you are interviewing for
Companies like Google, Microsoft, Facebook, etc all have well documented interview processes, and their technical interview questions also tend to follow the same patterns. You should always search the internet to see what kind of experience other people have had with the company that you are interviewing with so that you can learn from other interviewee’s mistakes and advice. This is very important research that you absolutely must do in order to be successful – I really can’t emphasize this enough. Think of information as a currency, and the more you have about the interview process at a company you are about to face, the wealthier you are (and the wealthier you may be if you get the job!).
What if I am coming out of college and interviewing for a developer job?
Coming straight out of college, you are more likely to face some of the “broader” subject matter type interview questions that we mentioned earlier. This is because you probably don’t have any real experience as a working software engineer so a lot of the questions will focus on stuff like data structures, recursion, operating system concepts, etc. And, the interviewers are likely to ask you questions about the projects that you worked on while in college. If you have had any internships while attending college, then be ready to answer questions about the work you did there as well.
Summary of preparing for a software engineering interview
The main thing that we emphasized in this article is that you must put in the preparation time before you show up for an interview to increase your chances of landing a job. And, even more important, is that you use the preparation time intelligently and somewhat strategically to cover the topics that you will most likely face during the interview process. Of course, the whole idea of this site is to help people prepare for software interviews – so use it to your advantage!