How to Prepare for (and Ace) the Technical Interview

The job interview process is a tough road with many pitfalls that can catch job seekers off-guard and cause great opportunities to fall to the wayside. One often over-looked part of the process is the technical interview. Here's how to be ready for it.

As developers and IT pros you need to do all the things everyone else does to prepare for a job interview such as update and focus your resume as well as work on your communication and presentation skills. However, you also have the technical interview to deal with.

The good news is if you make it this far in the interview process, you've likely got a good shot at the position. How you prepare for this (or not prepare for this) can cost you the job. We spoke with CEOs, recruiters and other industry experts who agree you simply can't just go in there and muddle your way through it. You've got to prepare in a number of ways.

Technical Interviews are, for many companies, used for only the top candidates. This is a time-consuming and expensive task for employers and a stressful addition to the interview process for the candidates. "If we have three finalists for a role, this is where we do a technical interview to see who is the most proficient," says John Reed, Senior Executive Director at Robert Half Technology.

It's a chance for hiring managers to evaluate how you approach real-world problems, how you problem-solve, and the depth and breadth of your knowledge on the skills you're being hired for. It can consist of coding challenges, word problems, peer discussions, puzzles and brain teasers.

"All of this takes a lot of everybody's time and, although it's expensive, it's still a lot cheaper than having them wash out," says Rick Endres, president of The Washington Network.

Some employers will give homework in the form of a programming or logic problems to do before the interview. This eliminates more people out before the technical interview, says Endres. "Most people just want to show up and hope they can make it through the interview. Requiring this ahead of time really cuts down on the amount of spam," says Endres.

If you're really serious about getting the job, however, a little homework isn't going to slow you down. Beginning a job search is like taking on a new job in and of itself. It's not easy and there are many roadblocks, but the payoff is going to a job you love. So let's get started.

Be Articulate and Communicate Clearly

In a technical interview, or any job interview for that matter, communication is a deal-breaker. Interviewers don't know why they should hire you. That reason is what you need to be able to articulate through your answers to their questions, the stories of your achievements and the questions you ask. "Companies want to see the candidate think in "real time" and while you may be brilliant at what you do, in an interview you have to be able to communicate this brilliance," says Ed Nathanson, director of talent acquisition with Rapid7.

A good practice, according to Nathanson, is to spend some time going over what you would like to cover and how you want to present yourself.

"You are selling you - so know your product and your audience, and have a plan going in. Study the job description, do some research on the people you will be meeting and definitely do some homework on the company beyond just their products," says Nathanson. Check out social media places where you can research the company and its people like LinkedIn, Facebook and Glassdoor.

Be Ready to Whiteboard

While whiteboarding isn't a standard requirement for technical interviews, it happens often enough that you need to practice a bit. "This is a key way to prepare, because it is often used to interview candidates. Practicing on the whiteboard and being prepared to do so ahead of the interview can often make a big difference, especially to those to whom this kind of interaction does not come naturally," says Nathanson.

Be Familiar With the Job Listing

The best resource is the job listing itself. Human Resources puts a lot of time, thought and energy into these, and they will give you a deeper insight into the technologies used at the prospective company and how you may best apply your knowledge and skills to the problems they face.

"If it's in the job description, it's important to be able to talk to it and how you may solve the problems they are looking to fix. Make sure you really understand the technical requirements outlined in the job description. They were put there to provide guidance on what the company is looking for to ensure candidates are the right fit," says Nathanson.

Refresh on the Core Principles and Basics

Brush up on any aspects of the prospective programming language that may be rusty to you, or perhaps you know only the broad strokes, but could learn more. Expect questions ranging from the fundamentals to some higher-level concepts and anywhere in between.

What you have to be prepared for as a candidate is that you are going to have to demonstrate your programming skills and there isn't a standard process. That said, if you are interviewing for job that calls for PHP developer skills, you will probably want to brush up on those skills, maybe take some online tutorials. "You want to read through and familiarize yourself with formal technical jargon and acronyms around PHP. This is a good idea because many times when you go in and you have the skills and can perform the tasks, what you call something may not match up with the formal terminology, says Reed.

Bring in a Portfolio of Your Work

It's always a good idea to bring in a notebook with your work or a portfolio to show interviewers. "Bring in your code; bring in your network design diagrams. It could include proposals you've written or the parts you've contributed. We're looking for writing ability and the ability to communicate technical thoughts and recommendations. In that work product that you bring is also about the tools in your tool bag. We want to know what tools you use and what your mastery of those tools are. What tools do you use to manage your technology and people?" says Endres.

Prepare Yourself Mentally

We all have bad days, but when getting ready for the technical interview, as with most other interviews, you need to mentally focus and put yourself at ease. The day of your interview you need to get yourself in the right mindset. This is different for different people but there are some things that work for many. For example, you could try working on logic problems, listening to classical music simply poring over your notes.

"Mentally preparing yourself is really important. A lot of it is in the mindset you carry into the interview from a preparation standpoint. If you have a morning interview, are you up early enough? Are you creating a quiet reflective environment where you can really start to get your mind going to prepare for what's coming ahead? Go over your notes and terminology, prepare some mental notes. Think about things you want to say in the interview that demonstrates your expertise and ask yourself how will I say that? Think about what questions the interviewer will ask you. Then think about what you'd say to that," says Reed.

Don't Be Afraid to Ask Questions

"If they ask you a technical question, make sure you understand it before diving in and answering. If you don't know the answer, that doesn't mean you're dead in the water," says Tracy Cashman, a technology search consultant with WinterWyman.

There are two things to do. First, you may actually know the answer but you're nervous and you forget. "Be honest about it. Just apologize and say something like, 'I just used that command last week, but if I was on the job here is what I would do to find the answer.' That way you're walking them through the problem and showing them you're resourceful," says Cashman.

Second, says Cashman, if it's something you really don't know, you can say something along these lines, "Unfortunately, I haven't had the opportunity to work with C#; however, I have so much experience in VB.NET that I feel like I can transition easily."

Cashman adds, though: "Don't ever fudge it. If you're sure you don't know, don't pretend you do. Try and draw a parallel or make a connection between something relative that you have worked with." says Cashman.

You want to absolutely make sure you understand the question and then you want to finish up with a confirming question. Did that answer your question? Did I provide you with the answer you are looking for? Is there any part you'd like me to go into more detail on? "Don't assume, because many times there can be a disconnect, so ask them to confirm or clarify on the front end, answer the question and then confirm it on the backend," says Reed.

Have a Strong Closing

Many interviews end awkwardly or flat. Instead use this time to express your enthusiasm for the role and to let the interviewer know why you are the right person for the job. This is a great time to work in some of the points that you wanted to be sure you expressed to the hiring managers.

After the meeting, jot down any notes, thoughts or feedback you have while the memories are still fresh in your head. You should also write down the interviewers' names, roles and any other relevant information.

Follow-up and Send a Thank You Note

As with any interview, you want the interviewer to remember you for the right reasons and a thank you note with some additional details or thoughts will help do just that. Think about the interview and address any feedback you were given.

Prepare Yourself With These Sample Technical Questions

Cashman offers some actual questions and problems that employers use to qualify candidates. Each set of questions will be unique to the position and they will range from the core fundamentals to the higher principles, depending on the role at hand. However, these will give you some insight into what to expect. You can also look online to find some more of the common technical questions associated with your particular arena of knowledge.

Linux Engineer Questions

If a system fails and has to be rebooted what tool can we use took at monitoring and CPU usage for the past week?

If I need to set a U limit parameter higher than what the user is allowed, how do I do it?

If I want to make sure Init service does not come up at reboot, what do I do?

.NET Questions

Design patterns: What are they, why are they used? Ttalk about a few of them and describe how you have used them in the past?

What are some of the available .NET collection types? Give a quick comparison of their differences and explain why you would want to use one versus the other?

OOP Design Type Questions

How would you design a file system using class diagrams? What datastructures would you use and why?

How would you design an account management system where each account could be an index or a client account? Each account has holdings, each holding has related security information and holdings can consist of multiple lots for pricing purposes. How would you model this?

How would you design a class structure for animals in a zoo?

Coding Challenge Sample

We are looking for a solution that is compact and runs quickly. What quickly means to us depends on the language you use, but it should take no longer than 500 milliseconds to run. Please use what language you are most comfortable with. However, please know that we do not have Visual Studio so C++ solutions should have the ability to compile with the standard G++.

Problem:

Consider a word as any sequence of capital letters A-Z, not limited to just dictionary words. For any word with at least two different letters there are other words composed of the same letters but in a different order. For instance, stationarily and antiroyalist, which happen to both be dictionary words. For our purpose alianrostily is also a word composed of the same letters as these two. We can then assign a number to every word based on where it falls within an alphabetically sorted list of all words made up of the same set of letters.

One way to do this would be to generate the entire list of words and then find the desired ones, but this would be slow if the word is long. Write a program that takes a word as a command line argument and prints to standard output its number. Do not use the method above of generating the entire list. Your program should be able to accept any word 25 letters or less in length possibly with some letters repeated. It should use no more than 1 gig of memory and take no more than 500 milliseconds to run.

Some companies will have traditional processes and some will give you creative problems to solve. Some have gaming situations or puzzles and many times says Reed, "It's not about having the right answer, it's about gaining insight into how you understand a problem and how you approach solving that problem. There's as much insight there as there is in the question [and] answer?"