The Software Engineering Study Guide for Interviews
The intern edition
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!
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.
- 985. Sum of Even Numbers After Queries
- 657. Robot Return to Origin
- 961. N-Repeated Element in Size 2N Array
- 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.
Data Structures and Algorithm Videos
- Data Structures & Algorithms #1 — What Are Data Structures? — Video
- Multi-dim — Video
- Dynamic Arrays — Video
- Resizing arrays — Video
- Data Structures: Linked Lists — Video
- Core Linked Lists Vs Arrays — Video
- Pointers to Pointers — Video
- Data Structures: Trees — Video
- Data Structures: Heaps — Video
- Data Structures: Hash Tables — Video
- Phone Book Problem — Video
- Data Structures: Stacks and Queues — Video
- Using Stacks Last-In-First-Out — Video
- Data Structures: Crash Course Computer Science #14 — Video
- Data Structures: Tries — Video
- Algorithms: Graph Search, DFS and BFS — Video
- BFS(breadth-first search) and DFS(depth-first search) — Video
- Algorithms: Binary Search — Video
- Binary Search Tree Review — Video
- Python Algorithms for Interviews — Video
- Algorithms: Recursion — Video
- Algorithms: Bubble Sort — Video
- Algorithms: Merge Sort — Video
- Algorithms: Quicksort — Video
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.
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.
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!
- Programming Tutorial — 49 — Inheritance — Video
- Java Programming Tutorial — 55 — Introduction to Polymorphism — Video
- Java Programming Tutorial — 58 — Abstract and Concrete Classes — Video
- Java Programming Tutorial — 57 — Overriding Rules — Video
- Java Programming Tutorial — 59 — Class to Hold Objects
- Object-Oriented Programming — Video
- Factory Design Pattern — Video
- Observer Design Pattern — Video
- Adapter Design Pattern — Video
- Facade Design Pattern — Video
- Chain of Responsibility Design Pattern — Video
- Interpreter Design Pattern — Video
- Singleton Design Pattern Tutorial — Video
- Chapter 6 (Part 1) — Patterns (video) — Video
- Head First Design Patterns — Video
This is the last section. You probably won’t be asked too many SQL questions, however, it’s always good to have them in your back pocket.
Sometimes interviews will throw in a few to make sure you have a broad skill set.
SQL — Problems
- 262. Trips and Users
- 601. Human Traffic of Stadium
- 185. Department Top Three Salaries
- 626. Exchange Seats
- Hackerrank The Report
- 177. Nth Highest Salary
- Symmetric Pairs
- Ollivander’s Inventory
SQL — Videos
- IQ15: 6 SQL Query Interview Questions — Video
- Learning about ROW_NUMBER and Analytic Functions — Video
- Advanced Implementation Of Analytic Functions — Video
- Advanced Implementation Of Analytic Functions Part 2 — Video
- Wise Owl SQL Videos — Video
Post SQL Problems
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!