Cracking the Tech Interview and Resume

Paula Dozsa
HackAD
Published in
7 min readMay 3, 2018

As a senior close to graduating with a degree in Computer Science, I’ve been through quite a few interviews in the past few years, both for internships and full-time positions at various tech companies. I’ve completed coding challenges, had phone interviews, and have also done on-site interviews on whiteboards, both for bigger tech companies and smaller ones. Throughout the past four years I’ve been gathering resources, both online and physical ones, in order to prep for these interviews, as well as talking to and asking for advice from recruiters and interviewers.

As part of HackAD’s series of workshops, I gave a talk on how to prepare for tech interviews (both technical and behavioral) and how to craft a resume. During this talk, I shared some of the things I learned, some of the things I did, and some of the things I wish I’d done. Just to give you a quick overview of the outcome of my prep, I spent the last three summers interning at various Google offices in both Europe and the US and will be working as a technology analyst in Goldman Sachs’ Hong Kong office after graduation. Through this post I will go over the topics covered during the talk and give some more personal insight into my experiences applying, preparing and interviewing for both internship and full-time Software Engineering positions.

HOW TO PREPARE FOR AN INTERVIEW

I had my first interview in January of my freshman year, back in 2015. I honestly wasn’t expecting to be interviewed, as the email from the recruiter came a bit out of the blue, and I only had three weeks to prepare for it. However, I’d also had four prior years of experience coding in high school, so thankfully I was able to pass the interview by brushing up on those skills. But ideally, you should start preparing at least six months in advance.

Here is a timeline of things you should do during these six months:

6 months before:

Start working on personal projects, or find classes with large projects. Recruiters are generally impressed by students who have done programming work outside of their classes, or devoted an extensive period of time to building something. Also make a website or a portfolio that showcases your experience.

3–6 months before:

Draft a resume and show it to people who have experience analyzing them, such as career counselors or professors. Start brushing up on your data structures and algorithms, using materials that I will talk about in a bit. Start practicing interview questions, and find people who will mock interview you. Although preparing on your own is important, it’s really hard to replicate the experience of an interview unless you have another person pretending to interview you.

1–3 months before:
Finalize your resume! Make sure it doesn’t have any typos. Start researching companies and if you are particularly interested in one, especially smaller ones, reach out to people who work there. Find an interview prep buddy so you can keep each other accountable, as it can sometimes be hard to motivate yourself to keep practicing on your own. Start doing mock interviews, either with your interview prep buddy or more experienced upperclassmen or people who might already be working in the industry.

1 month before:

Apply to companies! However, applying to a company doesn’t necessarily mean you will get an interview. This is where networking comes in, as referrals, especially in bigger companies, can be crucial towards getting an interview. Therefore, If you’re applying to a bigger company, try to find acquaintances who work there, as referrals could speed up the process significantly. And keep studying for your interviews, as they could be coming up any time now!

There are several types of interviews you might encounter once your resume passes the screening process, the most common are:

  • coding challenges
  • phone interviews
  • on-site interviews
  • HR interviews
  • behavioral interviews

Coding challenges are interviews that do not involve the participation of a human interviewer, as you are required to solve a programming problem using a website. Your program is then checked against several test cases, and according to the results you are given a score. A commonly used tool for this type of interviews is HackerRank. I recommend that you sign up for an account as this will give you access to sample questions and interviews.

My main tips are for a coding challenge are to read the instructions carefully and write clean and commented code, as your code might end up being read by a human, even if it does pass all the test cases.

Phone interviews, the most frequently encountered interviews for both internship and fulltime positions, are generally with a software engineer who works at the company and consist of one or two coding questions that you are required to solve during your interview using a browser app like CoderPad. The interviewer can see you code live and sometimes even require you to run your code.

On-site interviews generally occur for full-time positions, after you have successfully passed a screening coding challenge of phone interview. They are similar to phone interviews, except they happen in-person, in the office of the company you’re interviewing for, and you code on either a whiteboard or a computer.

As for the last two types of interviews, my recommendations are to ask questions before jumping into solving a problem, making sure that the instructions you were given are clear. While coding, make sure to explain what you are trying to do. Also be prepared for different types of questions: you might get a more traditional question, like implementing an algorithm or a data structure, or you might be asked a quiz question. I was recently asked a question involving figuring out how to weigh a set of balls to figure out which ball out of the group had a different weight. You might also be asked language-specific questions regarding the programming languages you mentioned on your resume.

As for behavioral and HR interviews, which might be either automated or with a recruiter, I recommend that you look over and fill out this behavioral grid created by Gayle Laakmann McDowell, in order to figure out what the selling points of your experiences so far are.

When it comes to questions that you can ask your interviewers, these are some general questions I have asked in the past:

  • How is your team structured?
  • What does your day-to-day job look like?
  • How much training do you receive?
  • What did you study/where did you work before?
  • How do you get satisfaction from what you do?

As for resources for interview prep, I recommend the following set of websites and books:

HOW TO WRITE A TECH RESUME

When it comes to resumes, the main things that a recruiter wants to know is that you are smart, able to code, and that you are a team player. Here are some tips for describing various sections of your resume:

  • internships/projects: make sure to highlight the technologies used and the impact your project had. You can include both independent and course projects, but independent projects are generally preferred. You don’t have to start a project from scratch, you could join existing teams in your university, for example the web development team for your school paper, as this demonstrates your ability to work with legacy code and with a team, which very closely mimics the working environment in a company.
  • education: the general advice is to list your GPA if it’s over 3.5, as recruiters will generally assume it is under that if you don’t. However, if you are close to the top of your class despite having a lower GPA, due to a particularly difficult and competitive program, list your class ranking. List your areas of interest in college, even if you did not major or minor in them.
  • programming language skills: list both the languages as well as your level of experience in each. I do so by estimating the number of lines of code I’ve written in each language (<5000, 5000–10000, >10000).
  • extracurriculars: mention the ones where you had a leadership position or were part of a team that created or organized something. If your interviewer brings this up while talking to you, be ready to talk about the impact you had on the project or your community, and you can prepare for this using the behavioral grid I mentioned earlier.
  • contact info: include links to your personal website, Github and LinkedIn.

As for the formatting of the resume, make sure that it is only one page long and that it is easy to parse by software, as many bigger companies parse your information using software as opposed to a human.

Also make sure you have a solid online resume, which is basically what a potential employer would find by googling your name. Try to improve your online presence by creating your own website, or perhaps by starting a blog or writing on Medium.

When it comes to cover letters, I recommend that you write one if you are given the option to do so, especially if you haven’t received any internal referrals.

I hope you find this advice helpful, and please feel free to reach out to me on LinkedIn if you have any questions!

--

--