Software Developer Interviews: Your First Dev Job
When you apply for a position, and the company likes your resume, they will likely contact you either through email or phone. This first call will be to set up a time for a first phone interview. Such first phone interviews are rarely technical in nature, and more to find out when you're available for the first "real" interview. This person might also scope you out a bit just to make sure you're really the person you claim to be.
Next will come the first real interview, which also might be over the phone. This will likely be with a technical manager who might ask you a few technical questions. Sometimes companies skip this step and move right on to the main interview: in person or video chat. This is your chance to shine. Follow the advice we're offering here.
How to Answer Technical Questions in a Developer Interview
For developer positions, you're going to encounter technical questions in the main interview. It's impossible to predict exactly what questions you're going to encounter. However, here is some general guidance on what to expect and what you'll want to study in advance.
Database questions. Regardless of the specific position, almost every developer needs to know about databases. There are different types of databases but these days the two primary types are relational and non-relational. Relational databases store data in tables similar to a spreadsheet. Each row in the table gets a key called an ID, which is often a number that uniquely identifies the row. (Think customer number of order number.) Other tables might include keys from other tables. (For example, an order table would likely contain a customer number in each row.)
Shell Commands. Every developer still needs to know how to use basic shell commands. In Linux, for example, the most common shell is the bash shell. Learn the commands: how to move to different directories; create directories; recursively delete files; recursively change the permissions on files. Know the basics of creating shell script files.
Git and Github. Source code control is fundamental, and today the most common tool is git. The prevailing website for managing your git repositories is GitHub. Learn both. Know how to create and initialize a git repository; how to add files to repository and how to commit them. Learn how to create branches, merge branches, and delete branches. Be able to push your branches up to Github and create pull requests. Know how to merge on Github, and understand the difference between merging locally and merging on Github.
Docker and AWS. These two technologies have become pretty ubiquitous, but might not apply to your particular position. Still, it's good to know a good bit about both in case questions come up. Docker is a tool for creating what are called containers, which are like miniature versions of virtual machines. AWS (Amazon Web Services), is Amazon's cloud platform. Know how to allocate virtual machines on EC2, and understand how security credentials work. Know how to store files and data on S3, and understand how permissions work. AWS has over 100 different types of services, and EC2 and S3 are just two. If the position you're applying for requires AWS, seriously consider getting an AWS certification. At the very least, study up the nuggets here on CBTNuggets.
Language Specifics. For virtually every developer position, you need to know the language you're interviewing for inside and out. Remember that programming languages evolve and there's always more to learn, even if you're an expert.
Confidence Matters in Your Technical Interview
Aside from answering technical questions, there are many other ways you can shine in the interview. This next advice applies to both technical and non-technical aspects of the interview: be confident!
Most technical people don't have a problem here. Just be sure to be warm and friendly. And if you're not confident, then practice being confident. However, this comes with a big caveat: know when to say you don't know, as we discuss next.
It's Okay Not to Know an Answer
This usually applies to technical questions, but occasionally can be for non-technical questions.
There is nothing wrong with admitting you don't know something. Technical fields are so broad that it simply isn't possible for us to know everything. Follow "I don't know" with "but" and then talk about how you would go about finding out the answer. What references would you use? Part of being in a technical field is being able to find answers fast.
Interviewers know this. And so if you insist that you already know all the answers, they'll see right through it and you're going to find yourself without a job offer.
But suppose you do have a good understanding of the topic, but there's a word thrown at you that you're not familiar with. Don't be afraid to ask what the word means. Then once they explain it, if that fills in the blanks for you, feel free to go with it and talk about it.
Keep it Short
Don't give overly short answers, but you also don't get carried away. Realistically an answer should take at least ten seconds and not more than a minute, maybe two, tops. If there is a topic you're really excited about, allow the interviewer to take time discussing it after you're finished, and allow a back-and-forth discussion to evolve.
But let the interviewer steer the discussion; don't dominate it. If the interviewer starts to change the subject, move on. Remember, the interviewer is still in charge. You don't want to come across as overly assertive.
Basic Interview Tips for Software Developers
And, of course, don't forget the basics.
- Dress Well. Plan to overdress, even if the company is a t-shirt and sandals place.
- Be on time. Find a nearby place to park and relax if you're early. Try to be three or four minutes early, no more, no less.
- Don't be nervous. But you will be anyway. Take a deep breath. You've got this.
- Smile and be friendly. Next to your technical skills, your personality is the most important part of the interview. They want to know if you're somebody they want to work with every day.
- Leave the phone in your pocket. Don't get it out, even for online video interviews.
- Ask lots of questions. Show genuine interest in what they're doing. If they ask, "Why do you want to work here?" answer honestly. Perhaps you're intrigued by their technology or you've heard it's a great place to work.
- Try to learn names. If multiple people interview you, try to remember their names and faces, because these are likely the people you'll be working with if they hire you.
Finally, if you're just not feeling it, and this job isn't for you, wait until afterward to say so. Stay through the interview, and be friendly. Afterwards, call the hiring manager and politely explain that you don't feel the job is for you.
Study up as needed and prepare well for the technical aspects of the interview. But again, much of the interview is about personality, not just what you know. An interview really is your chance to show the company that in addition to knowing your stuff, you're a great person to work with.
The more you impress them with your personality and warmth, the more likely you'll land a job offer — even more likely than the people who know more than you but aren't very friendly.