The Interview Study Guide For Software Engineers
Tags: career, beginners, sql, python
Published: 2019-09-15 22:03:36

By [Ben Rogojan](https://www.linkedin.com/in/benjaminrogojan/)

Software engineering interviews, like other technical interviews, require plenty of preparation. There are a number of subjects that need to be covered in order to ensure you are ready for back-to-back questions on algorithms, data structures, design, optimization and honestly just an ever growing basket of subjects.

So I created a checklist on my last round of interviews that covers many of the popular topics.

To help you keep track of your progress, we've compiled a comprehensive checklist of the same problems listed below; [that list can be found here](https://docs.google.com/spreadsheets/d/19hSRrL4l3gRiJ5ucH9q4iwFo2QHgic9gGMNUrcn1mm0/edit?usp=sharing).

### **Warm Up With The Classics**

1.  [Fizz Buzz](https://www.hackerrank.com/challenges/fizzbuzz/problem)
2.  [560\. Subarray Sum Equals K](https://leetcode.com/problems/subarray-sum-equals-k/)
3.  [Arrays: Left Rotation](https://www.hackerrank.com/challenges/ctci-array-left-rotation/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=arrays)
4.  [Strings: Making Anagrams](https://www.hackerrank.com/challenges/ctci-making-anagrams/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=strings)
5.  [Nth Fibonacci](https://www.algoexpert.io/questions/Nth%20Fibonacci)

How did you do? Take a moment and rate yourself on these classics. We have been asked most of these at some point in the interview process---and often early on as weed-out style questions. They often have less to do with algorithms and data structures, but still require a good understanding of loops and arrays (yes, an array is a data structure).

### **Algorithms And Data Structures**

#### **Pre-Study Problems**

Before going through the video content about data structures and algorithms, consider trying out these problems below. See if you can answer them. This will help you know what to focus on.

1.  [985\. Sum of Even Numbers After Queries](https://leetcode.com/problems/sum-of-even-numbers-after-queries/)
2.  [657\. Robot Return to Origin](https://leetcode.com/problems/robot-return-to-origin/)
3.  [961\. N-Repeated Element in Size 2N Array](https://leetcode.com/problems/n-repeated-element-in-size-2n-array/)
4.  [110\. Balanced Binary Tree](https://leetcode.com/problems/balanced-binary-tree/)
5.  [3\. Longest Substring Without Repeating Characters](https://leetcode.com/problems/longest-substring-without-repeating-characters/)
6.  [19\. Remove Nth Node From End of List](https://leetcode.com/problems/remove-nth-node-from-end-of-list/)
7.  [23\. Merge k Sorted Lists](https://leetcode.com/problems/merge-k-sorted-lists/)
8.  [31\. Next Permutation](https://leetcode.com/problems/next-permutation/)

### Algorithms And Data Structures Videos

#### Data Structures

![](https://cdn-images-1.medium.com/max/1600/1*Dyu63sMUVL-gYEZISOE2BQ.jpeg)

1.  [Data Structures & Algorithms #1 --- What Are Data Structures?](https://www.youtube.com/watch?v=bum_19loj9A) --- Video
2.  [Multi-dim ](https://archive.org/details/0102WhatYouShouldKnow/02_05-multidimensionalArrays.mp4)--- Video
3.  [Dynamic Arrays](https://www.coursera.org/learn/data-structures/lecture/EwbnV/dynamic-arrays)[ ](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4)--- Video
4.  [Resizing arrays ](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4)--- Video
5.  [Data Structures: Linked Lists](https://youtu.be/njTh_OwMljA) --- Video
6.  [Core Linked Lists Vs Arrays ](https://www.coursera.org/learn/data-structures-optimizing-performance/lecture/rjBs9/core-linked-lists-vs-arrays)--- Video
7.  [Pointers to Pointers](https://www.eskimo.com/~scs/cclass/int/sx8.html)[ ](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4)--- Video
8.  [Data Structures: Trees](https://youtu.be/oSWTXtMglKE)[ ](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4)--- Video
9.  [Data Structures: Heaps](https://youtu.be/t0Cq6tVNRBA)[ ](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4)--- Video
10. [Data Structures: Hash Tables](https://youtu.be/shs0KM3wKv8)[ ](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4)--- Video
11. [Phone Book Problem ](https://www.coursera.org/learn/data-structures/lecture/NYZZP/phone-book-problem)--- Video
12. [Data Structures: Stacks and Queues](https://youtu.be/wjI1WNcIntg)[ ](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4)--- Video
13. [Using Stacks Last-In First-Out ](https://archive.org/details/0102WhatYouShouldKnow/05_01-usingStacksForLast-inFirst-out.mp4)--- Video
14. [Data Structures: Crash Course Computer Science #14](https://youtu.be/DuDz6B4cqVc)[ ](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4)--- Video
15. [Data Structures: Tries](https://www.youtube.com/watch?v=zIjfhVPRZCg)[ ](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4)--- Video

#### Algorithms

![](https://cdn-images-1.medium.com/max/1600/1*bPpvELo9_QqQsDz7CSbwXQ.gif)

1.  [Algorithms: Graph Search, DFS and BFS](https://www.youtube.com/watch?v=zaBhtODEL0w&list=PLX6IKgS15Ue02WDPRCmYKuZicQHit9kFt)[ ](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4)--- Video
2.  [BFS(breadth-first search) and DFS(depth-first search) ](https://www.youtube.com/watch?v=uWL6FJhq5fM)--- Video
3.  [Algorithms: Binary Search](https://youtu.be/P3YID7liBug) --- Video
4.  [Binary Search Tree Review](https://www.youtube.com/watch?v=x6At0nzX92o&index=1&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) --- Video
5.  [Python Algorithms for Interviews](https://www.youtube.com/watch?v=p65AHm9MX80)[ ](https://archive.org/details/0102WhatYouShouldKnow/03_01-resizableArrays.mp4)--- Video
6.  [Algorithms: Recursion](https://youtu.be/KEEKn7Me-ms) --- Video
7.  [Algorithms: Bubble Sort](https://youtu.be/6Gv8vg0kcHc) --- Video
8.  [Algorithms: Merge Sort](https://youtu.be/KF2j-9iSf4Q) --- Video
9.  [Algorithms: Quicksort](https://youtu.be/SLauY6PpjW4) --- Video

### **Big O Notation**

1.  [Introduction to Big O Notation and Time Complexity (Data Structures & Algorithms #7)](https://www.youtube.com/watch?v=D6xkbGLQesk) --- Video
2.  [Harvard CS50 --- Asymptotic Notation ](https://www.youtube.com/watch?v=iOq5kSKqeR4)--- Video
3.  [A Gentle Introduction to Algorithm Complexity Analysis](http://discrete.gr/complexity/) --- Post
4.  [Cheat sheet](http://bigocheatsheet.com/) --- Post

### **Dynamic Programming**

1.  [Dynamic Programming (Think Like a Programmer) --- Video](https://www.youtube.com/watch?v=iv_yHjmkv4I)
2.  [Algorithms: Memoization and Dynamic Programming --- Video](https://www.youtube.com/watch?v=P8Xa2BitN3I&t=13s)
3.  6[.006: Dynamic Programming I: Fibonacci, Shortest Paths --- Video](https://www.youtube.com/watch?v=OQ5jsbhAv_M&t=7s)
4.  [6.006: Dynamic Programming II: Text Justification, Blackjack --- Video](https://www.youtube.com/watch?v=ENyox7kNKeY&t=4s)
5.  [Dynamic Programming --- Post](https://www.topcoder.com/community/competitive-programming/tutorials/dynamic-programming-from-novice-to-advanced/)

### **String Manipulation**

1.  [Coding Interview Question and Answer: Longest Consecutive Characters](https://www.youtube.com/watch?v=qRNB8CV3_LU) --- Video
2.  [Sedgewick --- Substring Search ](https://www.coursera.org/learn/algorithms-part2/home/week/4)--- Video

#### Interview Problem Walk-throughs

1.  [Google Coding Interview --- Universal Value Tree Problem](https://www.youtube.com/watch?v=7HgsS8bRvjo) --- Video
2.  [Google Coding Interview Question and Answer #1: First Recurring Character](https://www.youtube.com/watch?v=GJdiM-muYqc) --- Video
3.  [Find min and max element in a binary search tree ](https://www.youtube.com/watch?v=Ut90klNN264&index=30&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P)--- Video
4.  [Find height of a binary tree ](https://www.youtube.com/watch?v=_pnqMz5nrRs&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P&index=31)--- Video
5.  [Check if a binary tree is binary search tree or not ](https://www.youtube.com/watch?v=yEwSGhSsT0U&index=35&list=PL2_aWCzGMAwI3W_JlcBbtYTwiQSsOTa6P)--- Video
6.  [What Is Tail Recursion? Why Is It So Bad?](https://www.quora.com/What-is-tail-recursion-Why-is-it-so-bad) --- Video

### **Post-Study Problems**

Now that you have studied for a bit, and watched a few videos, let's try some more problems!

1.  [Bigger Is Greater](https://www.hackerrank.com/challenges/bigger-is-greater/problem)
2.  [6\. ZigZag Conversion](https://leetcode.com/problems/zigzag-conversion/)
3.  [7\. Reverse Integer](https://leetcode.com/problems/reverse-integer/)
4.  [40\. Combination Sum II](https://leetcode.com/problems/combination-sum-ii/)
5.  [43\. Multiply Strings](https://leetcode.com/problems/multiply-strings/)
6.  [Larry's Array](https://www.hackerrank.com/challenges/larrys-array/problem)
7.  [Short Palindrome](https://www.hackerrank.com/challenges/short-palindrome/problem)
8.  [65\. Valid Number](https://leetcode.com/problems/valid-number/)
9.  [Bigger is Greater](https://www.hackerrank.com/challenges/bigger-is-greater/problem)
10. [The Full Counting Sort](https://www.hackerrank.com/challenges/countingsort4/problem)
11. [Lily's Homework](https://www.hackerrank.com/challenges/lilys-homework/problem)
12. [Common Child](https://www.hackerrank.com/challenges/common-child/problem)
13. [459\. Repeated Substring Pattern](https://leetcode.com/problems/repeated-substring-pattern/)
14. [27\. Remove Element](https://leetcode.com/problems/remove-element/)
15. [450\. Delete Node in a BST](https://leetcode.com/problems/delete-node-in-a-bst/)
16. [659\. Split Array into Consecutive Subsequences](https://leetcode.com/problems/split-array-into-consecutive-subsequences/)
17. [Number of Subarrays with Bounded Maximum](https://leetcode.com/problems/number-of-subarrays-with-bounded-maximum)
18. [Combination Sum IV](https://leetcode.com/problems/combination-sum-iv)
19. [Best Time to Buy and Sell Stock with Cooldown](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-with-cooldown)
20. [Longest Repeating Character Replacement](https://leetcode.com/problems/longest-repeating-character-replacement)
21. [Swap Nodes in Pairs](https://leetcode.com/problems/swap-nodes-in-pairs)
22. [Binary Tree Right Side View](https://leetcode.com/problems/binary-tree-right-side-view)
23. [Flatten Nested List Iterator](https://leetcode.com/problems/flatten-nested-list-iterator)
24. [Binary Tree Level Order Traversal](https://leetcode.com/problems/binary-tree-level-order-traversal)
25. [Binary Search Tree Iterator](https://leetcode.com/problems/binary-search-tree-iterator)
26. [Maximum Length of Pair Chain](https://leetcode.com/problems/maximum-length-of-pair-chain)
27. [Split Linked List in Parts](https://leetcode.com/problems/split-linked-list-in-parts)

### **Operational Programming Problems**

Some companies won't ask you algorithm problems. Instead, they might focus more on implementation and operational problems. These are usually more niche and involve practical problems, like looping through data and performing a task of some sort. These types of problems don't usually require as much practice because it is more about taking basic concepts like arrays and HashMaps and keeping track of what you are doing to them.

1.  [Kangaroo Problem](https://www.hackerrank.com/challenges/kangaroo/problem)
2.  [Breaking Records](https://www.hackerrank.com/challenges/breaking-best-and-worst-records/problem)
3.  [Find A String](https://www.hackerrank.com/challenges/find-a-string/problem)[iter](https://www.hackerrank.com/challenges/itertools-permutations/problem)
4.  [No Idea!](https://www.hackerrank.com/challenges/no-idea/problem)
5.  [Days of the programmer](https://www.hackerrank.com/challenges/day-of-the-programmer/problem)
6.  [Leaderboard](https://www.hackerrank.com/challenges/climbing-the-leaderboard/problem)
7.  [Word Order](https://www.hackerrank.com/challenges/word-order/problem)
8.  [Sherlock And Squares](https://www.hackerrank.com/challenges/sherlock-and-squares/problem)
9.  [Equalize The Array](https://www.hackerrank.com/challenges/equality-in-a-array/problem)
10. [Apples And Oranges](https://www.hackerrank.com/challenges/apple-and-orange/problem)
11. [More Operational Style Questions](https://www.hackerrank.com/domains/python)

### **System Design Videos**

System design questions are crucial questions that show you are more than just a coder. You need to be able to think big picture as an engineer. Where do certain services belong, what kind of servers do you need, how would you manage traffic, etc. All of these ideas show that you are able to design software, not just code what people tell you to code.

1.  [Parking Lot System](https://youtu.be/DSGsa0pu8-k) --- Video
2.  [Whats App](https://www.youtube.com/watch?v=vvhC64hQZMk) --- Video
3.  [Uber design](https://youtu.be/umWABit-wbk) --- Video
4.  [Instagram](https://www.youtube.com/watch?v=QmX2NPkJTKg) --- Video
5.  [Tinder Service](https://www.youtube.com/watch?v=xQnIN9bW0og) --- Video

### **Operating Systems**

Operating system questions are a little more rare, but it is good to have a solid understanding of concepts like threads, scheduling, memory, etc., even if it is just a basic understanding. It is very embarrassing to get asked what the difference is between a process and a thread and not know the answer.

1.  [Commonly Asked Operating Systems Interview Questions](https://www.geeksforgeeks.org/commonly-asked-operating-systems-interview-questions-set-1/)
2.  [What is Translation lookaside buffer?](https://www.geeksforgeeks.org/operating-system-translation-lookaside-buffer-tlb/)
3.  [Why does Round Robin avoid the Priority Inversion Problem?](https://leetcode.com/discuss/interview-question/operating-system/220604/Why-does-Round-Robin-avoid-the-Priority-Inversion-Problem)
4.  [Interrupt Vs System Call---What is 'inode' in file system?](https://leetcode.com/discuss/interview-question/operating-system/124838/Interrupt-Vs-System-Call)
5.  [Operating System Interview Questions and Answers --- Part I](https://www.youtube.com/watch?v=b18X4uOKjHs)
6.  [What is a kernel --- Gary explains](https://www.youtube.com/watch?v=mycVSMyShk8)
7.  [Round Robin Algorithm Tutorial (CPU Scheduling)](https://www.youtube.com/watch?v=aWlQYllBZDs)
8.  [The Magic of LRU Cache (100 Days of Google Dev) ](https://www.youtube.com/watch?v=R5ON3iwx78M)--- Video
9.  [MIT 6.004 L15: The Memory Hierarchy](https://www.youtube.com/watch?v=vjYF_fAZI5E&list=PLrRW1w6CGAcXbMtDFj205vALOGmiRc82-&index=24) --- Video
10. [Interrupts ](https://www.youtube.com/watch?v=uFKi2-J-6II&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8&index=3)--- Video
11. [Scheduling ](https://www.youtube.com/watch?v=-Gu5mYdKbu4&index=4&list=PLCiOXwirraUCBE9i_ukL8_Kfg6XNv7Se8)--- Video

### **Threads**

![](https://cdn-images-1.medium.com/max/1600/1*uSHd3KSxg363C1frMv2KwQ.png)

1.  [User Level thread Vs Kernel Level thread](https://leetcode.com/discuss/interview-question/operating-system/124631/User-Level-thread-Vs-Kernel-Level-thread)
2.  [Intro to Processes & Threads](https://www.youtube.com/watch?v=exbKr6fnoUw) --- Video
3.  [Difference Between Process and Thread --- Georgia Tech --- Advanced Operating Systems](https://www.youtube.com/watch?v=O3EyzlZxx3g&t=11s) --- Video
4.  [Difference between forking and multithreading](https://leetcode.com/discuss/interview-question/operating-system/125024/Difference-between-forking-and-multithreading)

### **Object Oriented**

![](https://cdn-images-1.medium.com/max/1600/1*8LHiDwWhrU4iegYiNnKX_A.png)

Similar to operating systems, not every interview will ask you about object-oriented programming, but you never know. You want to make sure you remember your basics from your computer 162 course.

1.  [Java Programming Tutorial --- 49 --- Inheritance](https://www.youtube.com/watch?v=9JpNY-XAseg) --- Video
2.  [Java Programming Tutorial --- 55 --- Introduction to Polymorphism](https://www.youtube.com/watch?v=0xw06loTm1k) --- Video
3.  [Java Programming Tutorial --- 58 --- Abstract and Concrete Classes](https://www.youtube.com/watch?v=TyPNvt6Zg8c) --- Video
4.  [Java Programming Tutorial --- 57 --- Overriding Rules](https://www.youtube.com/watch?v=zN9pKULyoj4&t=3s) --- Video
5.  [Java Programming Tutorial --- 59 --- Class to Hold Objects](https://www.youtube.com/watch?v=slY5Ag7IjM0)
6.  [Object-Oriented Programming](https://www.youtube.com/watch?v=lbXsrHGhBAU) --- Video

### **Design Patterns**

If you were like us, we weren't taught about all the various design patterns. So it's good to get an understanding of how they work and why you would use them. Some interview questions can be as simple as, "Why would you use a factory class?"

1.  [Factory Design Pattern](https://www.youtube.com/watch?v=ub0DXaeV6hA) --- Video
2.  [Observer Design Pattern](https://youtu.be/wiQdrH2YpT4) --- Video
3.  [Adapter Design Pattern](https://www.youtube.com/watch?v=qG286LQM6BU&list=PLF206E906175C7E07&index=13) --- Video
4.  [Facade Design Pattern](https://www.youtube.com/watch?v=B1Y8fcYrz5o&list=PLF206E906175C7E07&index=14) --- Video
5.  [Chain of Responsibility Design Pattern](https://www.youtube.com/watch?v=jDX6x8qmjbA&list=PLF206E906175C7E07&index=22) --- Video
6.  [Interpreter Design Pattern](https://www.youtube.com/watch?v=6CVymSJQuJE&list=PLF206E906175C7E07&index=23) --- Video
7.  [Singleton Design Pattern Tutorial](https://www.youtube.com/watch?v=NZaXM67fxbs&list=PLF206E906175C7E07&index=7) --- Video
8.  [Chapter 6 (Part 1) --- Patterns (video)](https://youtu.be/LAP2A80Ajrg?list=PLJ9pm_Rc9HesnkwKlal_buSIHA-jTZMpO&t=3344) --- Video
9.  [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124) --- Video

### SQL

This is the last section. Many of you probably won't be asked that many SQL questions. However, I always think it is good to have in your back pocket.

#### SQL --- Problems

1.  [262\. Trips and Users](https://leetcode.com/problems/trips-and-users/)
2.  [601\. Human Traffic of Stadium](https://leetcode.com/problems/human-traffic-of-stadium/)
3.  [185\. Department Top Three Salaries](https://leetcode.com/problems/department-top-three-salaries/)
4.  [626\. Exchange Seats](https://leetcode.com/problems/exchange-seats/)
5.  [Hackerrank The Report](https://www.hackerrank.com/challenges/the-report/problem)
6.  [177\. Nth Highest Salary](https://leetcode.com/problems/nth-highest-salary/)
7.  [Symmetric Pairs](https://www.hackerrank.com/challenges/symmetric-pairs/problem)
8.  [Occupations](https://www.hackerrank.com/challenges/occupations/problem)[Placements](https://www.hackerrank.com/challenges/placements/problem)
9.  [Ollivander's Inventory](https://www.hackerrank.com/challenges/harry-potter-and-wands/problem)

#### SQL --- Videos

1.  [IQ15: 6 SQL Query Interview Questions](https://www.youtube.com/watch?v=uAWWhEA57bE) --- Video
2.  [Learning about ROW_NUMBER and Analytic Functions](https://www.youtube.com/watch?v=QFj-hZi8MKk) --- Video
3.  [Advanced Implementation Of Analytic Functions](https://www.youtube.com/watch?v=G3kYPzLWtpo&t=4s) --- Video
4.  [Advanced Implementation Of Analytic Functions Part 2](https://www.youtube.com/watch?v=XecU6Ieyu-4&t=54s) --- Video
5.  [Wise Owl SQL Videos](https://www.youtube.com/watch?v=2-1XQHAgDsM&list=PL6EDEB03D20332309) --- Video

#### Post SQL Problems

1.  [Binary Tree Nodes](https://www.hackerrank.com/challenges/binary-search-tree-1/problem)
2.  [Weather Observation Station 18](https://www.hackerrank.com/challenges/weather-observation-station-18/problem)
3.  [Challenges](https://www.hackerrank.com/challenges/challenges/problem)[Print Prime Numbers](https://www.hackerrank.com/challenges/print-prime-numbers/problem)
4.  [595\. Big Countries](https://leetcode.com/problems/big-countries/)
5.  [626\. Exchange Seats](https://leetcode.com/problems/exchange-seats/)
6.  [SQL Interview Questions: 3 Tech Screening Exercises (For Data Analysts)](https://data36.com/sql-interview-questions-tech-screening-data-analysts/)

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!

Good luck!

Also, if you are looking to read/watch more great posts or videos:
[Connecting To Big Query Using Jupyter Notebook On SaturnCloud Part 2
](https://www.youtube.com/watch?v=O1cBN5gJtdw&t=15s)
[Three Books You Should Read As A Data Scientist](https://www.coriers.com/three-books-you-must-read-if-you-want-a-career-as-a-data-scientist/)
[Hadoop Vs Relational Databases](http://www.acheronanalytics.com/acheron-blog/hadoop-vs-relational-databases)
[How Algorithms Can Become Unethical and Biased](http://www.acheronanalytics.com/acheron-blog/how-do-machines-learn-bias-data-science)
[How To Improve Your Data Driven Strategy](http://www.acheronanalytics.com/acheron-blog/how-to-improve-your-data-driven-strategy)
[How To Develop Robust Algorithms](https://medium.com/better-programming/how-to-develop-a-robust-algorithm-c38e08f32201)
[4 Must Have Skills For Data Scientists](https://www.theseattledataguy.com/4-skills-data-scientist-must-have/)
[SQL Best Practices — Designing An ETL Video](http://www.acheronanalytics.com/acheron-blog/sql-best-practices-designing-an-etl-video)