This is the final article in our Technical Interview series. For more on a technical resume & portfolio, please go here. To learn about technical tests and phone interviews, go here.
The technical interview in person: the last step of the job application process before your dream offer.
This is where all of your hard work can really pay off, but it’s not easy. It is important to remember that being nervous is normal and good preparation can help subside some nerves.
A technical interview for computer programming, engineering, or similar job often involves meeting with many people within a company over the course of several hours. An interviewee should expect to meet and talk with a variety of staff members from Human Resources Directors to programmers, to executive level leaders. From describing yourself, expressing your interest, and demonstrating your technical prowess - it is common to see promising candidates freeze or draw a blank at crucial moments.
Interviewing can be broken into parts and successful candidates come up with a way to handle each part before the interview. Once you do that, you will have a plan on how to properly prepare and be ready for the unexpected detours the day may lead us down.Each Technical Interview Is Unique
An in-person interview is your opportunity to take all your knowledge and abilities and apply them to a specific role within a company.
You are making use of everything you’ve learned up to this point in life. Clearly this includes your technical abilities, but also your ability to work with other people and handle situations that are difficult or uncomfortable.
It is also important to remember that each interview involves a single company. It is not standardized and your experience will change depending on the process, culture and people of the organization.
Also remember that you are applying to that company and the interview process is as much for you as it is for your potential employers. You need to determine if the company fits you, will help you reach your goals and is a place you’d like to further your career. If so, it is your job to express that to your interviewers.Common Technical Interview Elements to Expect
An interviewer’s goal is to get to know you as a professional and how you will fit into their company. They want to know if you can handle the job you are applying for on a technical level, if you have the personality traits needed to succeed on their team, and will be able to help move the company closer to their goals.
You will not know the specific questions they are going to ask you ahead of time, but you can prepare for the kinds of questions that you would expect, and you can practice being in an interview setting beforehand. Let’s look into both of those situations.
When going into an interview as a recent or current student, you are at a bit of a natural advantage with technical questions. Interviews often discuss algorithms and topics in a way that match a school environment closely. Make sure you pay attention in class, and during the your job search, have an algorithms book that you’re reviewing regularly to keep your mind refreshed and sharp.
The Algorithm Design Manual by Steven Skiena () is a good option as it teach algorithms and also lists them in a kind of encyclopedia, grouping them by type and function. It’s a great resource to prepare for open-ended interview questions like “How else could you solve this?” or “Is there a better way to do this?”
You never know when those in-person technical interview invitations will come and you should not wait until you have one to study-up. Sometimes the interview process is very fast regardless of the multiple steps and there is no time to cram.Coding Demonstration In-Person
In a technical interview, you will have to write code on a board while skilled programmers watch you.
Have you ever done this before? The answer is almost certainly no, unless you’ve interviewed before. Even if you haven’t, this is often the step that trips most otherwise successful candidates. Nerves take hold under the pressure and things go awry.
However, this is one of the technical interview steps that is most easy to prepare and practice. So, try it! Get some classmates together and ask each other some simple algorithm questions. It’s going to feel extremely awkward and hard, and you’ll make obvious mistakes at first, but working together will help you find ways to improve on your performance.
Here are a few ideas to get you started:
Ask them to implement a sorting algorithm. Once they’re done, ask them for the pros and cons of the algorithm they chose. Pick one of the cons and ask them for an algorithm that handles this shortcoming better. This model works for just about any major topic in an algorithms textbook.
Have everyone in the group study the MapReduce model. Choose one person to listen to a five minute presentation from each person describing the principles, maybe with a small pseudocode example. At the end, have that person give the pros and cons of each presentation. Next time, someone else is the interviewer on another topic.
Implement a function from the C standard library, in C. The string functions in particular are not difficult to do this with, assuming familiarity with the language. This is true of many languages actually.
If you practice hand written on-the-spot coding like a sport, coding for interviews will be much more comfortable. Practicing helps focus on solving the problem, not the discomfort. It’s incredible how few people take this advice, and yet by itself will help reduce a major source of the anxiety you will feel during the programming phase of the technical interview.
One thing to practice is how much you communicate during your whiteboard problem solving. In most cases, the interviewer is not as interested in your final answer as they are about seeing your workflow and thought process to get to a solution. So let them see that through talking through your work. Discuss out-loud how you are approaching the problem, and talk through the lines of code as you write them.
If you choose not to speak through your work, and you are choosing to give the interviewer an incomplete answer. An kind interviewer may ask “This is not quite complete. What’s missing?” Many won’t ask and will conclude you are not able to solve or discuss complex problems.
However, if you have talked your work through, even if you made a mistake or assumption about the data, any interviewer can get more specific with you. They may say, “You may have made a mistake in your assumptions. What assumptions are you making about the code?” This allows you to have a technical conversation, show how you respond to constructive criticism, and further demonstrate your expertise in a dialogue with your potential employer.Make Your Personality Come Through
Just as important as your technical answers is your ability to get along with fellow employees. The American Sociological Association found in a 2012 study that potential employers often hire people they would like to hang out with, rather than people with the very best technical skills for a position.
This often comes as a surprise to those early in technical industries, but consider what a programming job actually entails. Do you anticipate sitting in front of your desk 40 hours a week, never looking up and or talking to anyone?
This is not the case in most organizations and certainly not for a brand new hire, no matter how experienced or talented. You’ll go to meetings, sometimes with different departments and non-engineers. You’ll describe your progress with a manager or superior. The company will host events for employees. If you can handle the technical questions you are asked in an interview, you are more likely to assure that you can handle the work. If if comes down to three applicants that passed the technical test, they are going to lean towards the applicant that seems the easiest to get along with on a day-to-day basis.
Think back to your experience as a student, or in jobs you’ve had before. How did you get along with people? What role do you usually play in a group? Do you thrive on being in the middle of passionate discussion or do you prefer to observe? Are you a strong listener? Perhaps you’re very good at understanding direction or skilled at getting team members all on the same page to make an effective plan.
As you go through your time in school, take stock of your strengths and weaknesses. Companies often ask questions like “What is your greatest weakness?” and usually it’s because they’re trying to understand you as a person. They want to know what makes you tick, what brought you to that table right then and there.
Answer questions with a small story about yourself. You have the material you need if you’ve been paying attention to your own learning process. Maybe you loved an optimization class and hated a networking class. Or maybe you spent hours debugging graphics code, only to find, after sleeping and coming back the next day, that you made a dumb typo that you didn’t notice. (This story, by the way, is one that any programmer can relate to.) Tell a true story about a time where you struggled and succeeded and you’ll have your listeners hooked.
Have your technique down and stories about your education and life ready to go, and you should be able to have nice conversations with your potential coworkers. Practice friendly questions if you feel uncomfortable talking with strangers - make it a habit to ask people about their day or the routines around the office. Be ready to have conversational questions like this ready to go. Leave everyone happy to have talked with you, and your odds of getting an offer will be magnified.Culture and Worklife
When you created your excellent technical resume and completed the phone interview you learned a little about the company, but when the in-person interview comes, you have a chance to really dive deep into the culture and should have questions ready.
To prepare your questions, first be sure to do in-depth research on the company and where they are headed. If they are interviewing, they are looking for someone that can be a part of their team that will move the organization forward. A great place to learn about their new projects and goals is in the phone interview. But, also be sure to check out the company’s website, be familiar with the executive leaders and other management, be clear about the kinds of products they offer and where they are hoping to grow, research review sites, and try to find any other opportunities to learn more.
Also ask yourself what you want out of a job and company to stay satisfied with your work. Think of large issues and be sure to include little things too:
Thinking of the goals of the company, how does the role you’re interviewing for help the company reach that goal?
Is the role a new role or replacement role? Is this a new team or expanding an existing team?
In the near future is the company looking to expand on current product lines or to expand into new areas of expertise?
What perks does the company offer? Are there any? Perhaps free lunch daily or extended holidays off?
What are office hours? Does the company stick to classic 9-5 or is it a non-traditional environment?
Does the company have outings for its employees? Do employees tend to create friendships with one another, or does everyone prefer to keep to themselves?
What is the office set up including, what kind of chair will you sit in for 40 hours a week?
What kind of hardware will you be working with?
What are the methods and tools used for internal communication amongst teams and employees?
Are there programs to support professional development and continued education? To what extent?
Why do people love working at the company? What do they find challenging about the company?
Things like this may seem small and unimportant, but they are the kinds of things that will be key to your success as time goes by. If you are really looking for a place where everyone who works together plays together and you find that the company doesn’t operate that way, then the lack of social interaction will wear on you over time. If you are looking for a company that is always creating new products and starting projects with a more “darts on-the-wall to see what sticks” approach but the company you’re interviewing believes that staying niche and refining their offering slow and steady to be the best way to work, it’ll be difficult for you to stay long term.
Be sure to know what are deal-breakers for you and what is negotiable or simply a “nice to have.” You know your own boundaries, routines, and what makes you work at peak performance. Don’t be hesitant to ask about how the company handles the most important issues for you.
A great place to get some questions answered is on the office tour. If you don’t get offered one - insist that you see where you might be working! Pay attention to important details. How are things lit? Is it at a level you like? Do the chairs look nice? Do people look satisfied? Are there comfortable meeting rooms and private workspaces or is it an open floor plan with an area of couches for a meeting room?
Think of everything that makes you feel happy and productive, and everything you’ve had to deal with that keeps you from working at your best personally (loud people in the room, excessive emails about deadlines, too little interaction, etc.). Ask the company about them, and listen carefully to the answers. Don’t ignore anything that feels like a big red flag - if it bothers you now, it will probably bother you as time goes on.Evaluate
Afterward the interview is complete (and thank you emails are sent that evening), think seriously about your life if you worked at this company. Would you like it?
You probably have a sense of that answer from your experience at the office, but think about everything you liked and everything you didn’t. Weigh the good and bad and ask yourself: “Would I choose this offer if I received it?”
Try to have this answer before you get a response from them on the interview. If they offer you a job, and you have specific concern or question about the position, don’t hesitate to ask the HR representative about it. They are often able to accommodate you depending on the issue. They may or may not be able to offer you a higher salary, but more PTO, a stipend for moving expenses, or a nicer desk or office are not impossible to secure.
The longer you prepare for your technical interview, the better prepared you will be to answer technical questions and to know what you want out of a work environment. But getting into the habit of observing your own work patterns and your own strengths and weaknesses will help you be more comfortable and confident while interviewing.No Magic Answers
There’s no one formula that will guarantee a dream job offer. You will be perfect for some roles and clearly not fit others. The best way to increase your odds of getting offered a job you love are to keep up to speed on your algorithms (both general and those specific to your concentration in school) and be capable of discussing your own method of getting work done.
By describing your strengths and weaknesses clearly and confidently, you better be able to influence your interviewers to believing that they will want to work with you over other applicants. Consider yourself working together in this environment.
If they offer you a job, do not give a yes or no right away. Thank them for the offer, ask for day or two to consider the offer and get ready to negotiate. Consider your good and bad list again and see if they can accommodate you in anyway to help make the even offer better for both of you!