Technical Interviews: Technical Test & Phone Interview

Death_to_stock_photography_weekend_work (7 of 10)_0.jpg

This is the second article in our Technical Interview series. For more on a technical resume & portfolio, please go here. To learn about how to master the in-person interview, go here

Once a qualified programmer has submitted a well developed resume/portfolio that has gotten on the short list, he or she may receive an invitation to the next steps in the hiring process. Typically these next steps will be a technical test and follow-up phone interview depending on your test answers.

The technical test and phone interview are designed to determine if you have the necessary technical skills to succeed in the position. Companies are also determining if your personality will work well with the team and culture already at the company, which is just as important. This portion of the hiring process is equal parts art and science, but both can be mastered through practice and repetition.

Take Home Technical Test

Most often, companies will send a test to be completed at home before they speak to a candidate for any type of interview. Only a portion of submitted resumes will be sent a test and the technical test is to determine if you have the skills they need. On occasion, you may find a company that will go right to a phone interview without the test, but home tests serve to further filter out those who are unprepared for the role, so be ready to get one.

The company has put together a test to show a couple different aspects of your abilities. They want to understand your general comfort with computer science problems, and they want to see how you can handle some problems that will be relevant to the job. This makes it difficult to know what specific questions a company may ask, but thanks to their need to test your general computer science skills, it is straightforward to prepare for this test.

A good approach to get ready for a technical test is to train yourself to answer both theoretical questions about solving problems and specific technical questions. A strong data structures textbook is one of the best resources to help you prepare for both. A good book has hundreds of answers to commons questions in it. Organization and application of information is the job of any software engineer.

Resources for Technical Test Preparation

Steve Yegge, while working at Google, wrote a blog that is cited often during discussions about how to study for a technical interview. Yegge recommends programmers familiarize themselves with Steven Skiena’s The Algorithm Design Manual.

Skiena’s book serves two purposes; it is an in-depth review of the underlying math of data structures to foster comprehension, and an encyclopedia of data structures organized by type. This phenomenal resource is what you want your preparation materials to do; provide background and practical questions in which to test yourself.

Another strong resource is the Algorithms Series by Robert Sedgewick. Sedgewick has written several versions of this textbook in C, C++, and Java. It is particularly useful due to the sheer number of questions at the end of each section to help a programmer practice.

The material in these textbooks will almost certainly reflect the test you are given.  Core concepts of data structures will be the focus in most every test. Be familiar with that material. However, the test will also likely relate to the job. For example, if it is a computer graphics job there will be some linear algebra as well, so be sure to also familiarize yourself with the standard library of your specialization as well.

Taking the Technical Test

When taking your technical test always answer truthfully, to the best of your ability, and be sure read the instructions carefully. They may ask that you not use any outside references or they may permit it. Each company is different and do not stray from the instructions. If they ask you not to use online resources, then they won’t expect perfect code - in fact, they may almost be suspicious if everything you submit seems perfect.

When answering the questions on the technical test be sure your best work possible. Give extra effort and practice your answers by writing code out by hand instead of just typing it into an IDE. This little trick is shockingly helpful. It will also benefit you to write code on paper before interviewing to make sure you are comfortable with the feel as this will be expected of you in an in person interview. Consider writing the answers from your data structures textbook on paper first, and then typing it into a computer later to test it. This will also reflect what you will do on the job as software engineer roles tend to involve more code reading than writing.

The earlier you begin the preparation process, the easier time you will have with the technical aspect of interviewing. Cramming for an interview is very difficult after you get the notice you’ve been selected. You will only have a limited amount of time to complete the technical test. Putting yourself on a schedule to prepare just a few hours a week of will make a massive difference in your skill level, help you be more confident, and allow you to stand out among interviewees. There’s no reason to wait until you’re nearing graduation to start preparing.

Phone Interview

If your submitted technical test meets what the company is looking for, you will traditionally be invited to phone interview.

Phone interviews after technical tests are exceedingly common over an in-person interview. Companies are trying to assess if your personality will potentially fit the culture and in-person interviews can be expensive endeavors. In-person interviews often require a candidate to travel extensively and meet with many departments. Important players with senior titles do not have a lot of time to spare for their regular jobs and conducting interviews can take several hours or an entire day. Because of this, a company will do a phone interview first to see if a candidate warrants the larger investment in both money, time and lost productivity.

Phone Interview Questions

During the phone interview, you will be asked technical questions again, though they probably won’t be as in-depth as the written test. The technical phone interview is more a chance for them to get an idea of your personality, how you talk about problems, and how well you can communicate what you are thinking. These are critical skills, and it’s important that you get as much practice as you can in communication, both written and oral.

There is a temptation to believe that raw programming skills will trump any other element of an interview, but this is not all there is. Code is written in teams and great software is developed by a large group of people. If you are unable to show that you can work well with others, you risk your chances of getting the job. Ability to positively communicate and interact with other people is a big part of getting an offer, even in a technical field.

Showing that you can work with others or effectively solve problems doesn’t mean that you need to fake being extroverted or try to crack the room up with jokes. It is demonstrating your style of coping with conflict and finding solutions. No one wants to work with someone who insists they are always right or doesn’t contribute new ideas. Be ready to tell stories that show your best soft skills and remember it has very little to do with how social or talkative you are.

Interviewers assess your softer skills by asking open ended questions:

●      “What is the biggest challenge you’ve faced?”

●      “Tell me a time when you were frustrated with a project you had to finish.”

●      “What is your biggest weakness?”

These questions are not designed to frustrate you. They are designed to give you an opportunity to talk about yourself. They want to hear how you have worked in the past, how you handle stress, and get an idea of your mindset around working in a team environment.

Answering Soft Skills Questions

Consider answering these types of questions in stories that are about 30-60 seconds in length. You probably have more material than your realize.

As an exercise, think of a time when you worked with a partner. What went right? What went wrong? Either of those questions can lead to a story that your interviewer would love to hear. Think of a time when you tried to get something working and it took you much longer than you expected it to. Why? And how would you prevent that from happening again? What was your least favorite class and why? Did you not like the material? The professor?

Imagine you are a Java programmer, and you took a class in networking. You were excited at first, but it was in C, and by the end of the class you had lost interest with networking. You never wanted to touch it again, and you definitely are not applying for a networking job. Consider this exchange between an interviewer and applicant:

“Tell me about your biggest weakness.”

“Sure. {pause to recollect and prepare} When I get asked that, I can’t help but think about a class I took on networking. I learned after enrolling that it was going to be in C, which is not really my strongest language. I decided to tough it out because it would be a good learning experience. Just getting sockets to talk to each other the first time took me hours! I have to admit, I struggled in that class - it didn’t help that I had a full load that semester either! By the end of the class, I was able to get enough working to earn a B. I wasn’t happy about that grade, but I was proud that I had challenged myself. I learned a bit about C and now know that I’m not that interested in networking. So that’s why I’m applying for a systems engineering job and not a networking position!”

If this is said with a positive attitude it will say quite a bit about you. Even though you are admitting to a less than ideal grade and that you were having trouble with the material, it’s not the kind of coding you’re applying for and won’t mark you off with the interviewer. It shows your willingness to try something new, to work hard in the face of trouble, admit when you’re wrong, and value your experiences as helpful to your development regardless of the outcome. This demonstrates you as someone who is easy to work with even during tense times.

Preparing for the Phone Interview

As unusual as it may sound, practicing your answers to these types of questions will make you better at answering them. Just like any programming language, smoothly getting through these types of questions is a skill you can improve. The reality is that someone who is as smart as you but better able to express themselves will win the job 9 times out of 10.

Find friends that are as serious as you are about getting a good job and practice with them. Start with easy questions for each other. Listen to each other. Give honest feedback about the things that sounded natural and positive, and those that didn’t. You’re trying to get the best career for yourself as possible you so be willing to put work into getting yourself there.

Another resource to help is your teachers. Odds are, they have conducted interviews somewhere in their careers, and asking them will add some pressure to succeed. However, be sure to ask politely and schedule a time with them in accordance to their availability. Don’t just drop-in on them or send a casual email filled with assumptions that they are obligated to practice your interview questions with you. If you are respectful when you ask for their time and expertise, most teachers are happy to help and feel honored that you trust them to with this aspect of your career development.

In Summary

The programming test and phone interview are designed to see both the hard and soft skills that you bring to the table. Obviously the technical answers need to be right, but your presentation skills and personality need to be there too. You certainly do not need to be the most entertaining interviewee in the world, but it doesn’t take too many hours to build up a base competency and comfort with the interview process. Doing so can make you stand out from the crowd.

Once you have that, you are an interview away from a job offer, and you will be going into that interview as a candidate that they are looking forward to hearing more from.

Get more information about how University of Chicago Master's Program In Computer Science can help prepare you for your technology career.