The intern edition

SeattleDataGuy
Jul 10 · 7 min read
Photo by Artem Sapegin on Unsplash

Recently, our team put together a checklist to help software engineers prepare for their future interviews. This checklist was geared for engineers who have 2–5 years of experience, so it covered a lot of subjects including dynamic programming and over a hundred technical questions and resources.

We wanted to prepare a similar checklist for interns. In addition to providing this checklist, our team has also worked on developing tips that go beyond just what you should study. That is because most engineers with 2–5 years of experience have had their fair share of interviews and are used to the process.

This piece will also provide some tips and tricks to approaching your interview.

First, let’s start with some warm-up. Often, the first interview will be conducted over the phone and involves very basic questions. These questions are used to gauge your ability to handle basic programming problems. In order to keep track of your work, you can follow along with this checklist!


Warm-Ups

  1. Fizz Buzz
  2. 560. Subarray Sum Equals K
  3. Nth Fibonacci

Now, let’s be clear, if you didn’t get through these problems, that is ok. You probably didn’t try to solve problems like this in school (and probably won’t have to figure them out at work either). Interview problems tend not to reflect the work you will be doing. Instead, it focuses more on problem-solving.

We say this because we don’t want you to be discouraged. Many of us didn’t get an internship offer on our first try. It took time, interviewing is a skill and it is ok if your first few are bombs.

While you are studying, make sure you find someone who can mock interview with you. Doing mock interviews teaches you how to communicate your problem-solving. This is key to coding interviews because if your interviewer is good, they will help you along the way. But they can’t help you if they don't know where you are going.

Younger interviewers might feel the need to solve the problem on their own. Instead, engage with your interviewer. Discuss what your plan is, how you will approach the problem before trying to solve it on the whiteboard. By doing this, you do a few things. One, you signal that you can communicate your plan. This is a good skill for any employee. Secondly, and more importantly, a good interviewer will have a sense when you are about to go the wrong way. They can help point you in the right direction because you might find yourself spending ten minutes writing your solution and it is completely off. So getting comfortable with explaining your plan is very helpful.

Ok, now let’s get started! Most tech companies want you to be familiar with data structures and algorithms before you interview because most interview questions focus on these topics. So let’s figure out which of these topics you are weak on first.


Algorithms and Data Structures

Let’s try a few data structures and algorithm problems. As you’re going through these problems make sure you don’t get overwhelmed. You probably won’t know the answer to any or all of these questions. That’s ok, it is part of the process. You don’t want to be going through these problems quickly. You need to think through your solutions. So don’t time yourself, don’t stress out.

  1. 985. Sum of Even Numbers After Queries
  2. 657. Robot Return to Origin
  3. 961. N-Repeated Element in Size 2N Array
  4. 110. Balanced Binary Tree

Here is what we recommend. Don’t just try to answer the question. That is not what is important. Instead, take a piece of paper and trying drawing pictures of what you want to do. If you want to reverse a list, draw out what needs to happen. What is pointing where, when, is there a loop, etc? Draw it out in images. This will help you crystallize what you want to code.

Once you have drawn it out, then code your solution. If you want to go to the next level, then find someone else and explain to them the solution. Each of these problems shouldn’t just be a five or ten-minute exercise. It’s ok to tackle one or two problems a day. It’s not about going through tons of problems, but understanding how to problem solve. There is no way you will be able to remember every problem, so focus on problem-solving.



Big O Notation

One subject some students forget to study is Big O notation, also known as time complexity. So we wanted to provide a few videos for you to gauge your skill level.

  1. Introduction to Big O Notation and Time Complexity (Data Structures & Algorithms #7) — Video
  2. Harvard CS50 — Asymptotic Notation — Video
  3. A Gentle Introduction to Algorithm Complexity Analysis — Post
  4. Cheatsheet — Post

More Programming Problems

After watching all of the videos you should try a few more problems. That way you can see how well you are doing!

  1. River Sizes
  2. Bigger Is Greater
  3. 6. ZigZag Conversion
  4. 7. Reverse Integer
  5. 40. Combination Sum II
  6. 43. Multiply Strings
  7. Larry’s Array

System Design

Don’t think that just because you are an intern, no one is going to ask you system design questions. System design is a very key portion of judging a person’s experience level. If you want to stand out from the other interns, then you want to do well on any interview round that involves system design.

If anything, we would at least recommend you watch the parking lot video. This is a good system design interview question for interns because it avoids too many complex components that you might not be accustom too and focuses more on design and dealing with ambiguity.

  1. Parking Lot System — Video
  2. WhatsApp — Video
  3. Uber design — Video
  4. Instagram — Video
  5. Tinder Service — Video

Object-Oriented Problems

These next few sections are not necessarily going to be covered in an interview, but just in case!

It can be valuable to have some object-oriented/design principles underneath your belt. This section is all videos, but make sure to watch them and take notes!

  1. Programming Tutorial — 49 — Inheritance — Video
  2. Java Programming Tutorial — 55 — Introduction to Polymorphism — Video
  3. Java Programming Tutorial — 58 — Abstract and Concrete Classes — Video
  4. Java Programming Tutorial — 57 — Overriding Rules — Video
  5. Java Programming Tutorial — 59 — Class to Hold Objects
  6. Object-Oriented Programming — Video
  7. Factory Design Pattern — Video
  8. Observer Design Pattern — Video
  9. Adapter Design Pattern — Video
  10. Facade Design Pattern — Video
  11. Chain of Responsibility Design Pattern — Video
  12. Interpreter Design Pattern — Video
  13. Singleton Design Pattern Tutorial — Video
  14. Chapter 6 (Part 1) — Patterns (video) — Video
  15. Head First Design Patterns — Video


Conclusion

Interviewing can be tough because you can feel like you are making no progress. Having this study guide will help you track your progress and give you a better read on how you are doing!

There are a few other concepts that rarely come up on intern interviews but are worth getting familiar with. This includes dynamic and functional programming

Better Programming

Advice for programmers.

SeattleDataGuy

Written by

#Data #Engineer, Strategy Development Consultant and All Around Data Guy #deeplearning #machinelearning #datascience #tech #management http://bit.ly/2uKsTVw

Better Programming

Advice for programmers.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade