Interview Prep


  • Cracking the Coding Interview: This is the best starting place for interview prep. The book reviews everything from arrays to scalability, as well as provide practice problems with solutions in Java. There is a Facebook group where the author and other students can help you through questions and HackerRank has a CTCI-inspired track to practice the skills that you learn in the book.

Big-O and Runtime

  • Big-O Cheat Sheet: This is a simple website that provides runtime information for every data structure and sorting algorithm you can think of.

Data Structures and Algorithms


  • CPSC212 from Clemson: This course website has brief lecture notes and sample programs for common data structures.


  • Intro to Programming from Princeton: This course website from Princeton not only has content for data structures and algorithms, but boolean logic, circuits, system programming, and object-oriented programming as well.


  • Udacity Technical Interview Course: Udacity offers a free course to give you a quick review of data structures and sorting algorithms. After each lesson, you implement the data structure in Python, so this is a great choice for people who are in or just finished CS1101.

Practice Problems

  • HackerRank: There are some really good questions on this site and the UI is really friendly. Most importantly, companies use HackerRank to do technical screenings and interviews, so it is a really good idea to get comfortable with the platform.
  • LeetCode: While not as organized as HackerRank, LeetCode has a lot of problems that focus on DS, algorithms, operating systems, system design, and shell scripting.
  • InterviewBit: InterviewBit is organized by topic and the site lets know you which companies ask certain questions. Don’t be alarmed by the scoring – its based on the time and it can really throw you off if you are just trying to practice.


  • Shell Tutorial: If you are new to shell scripting or need a quick refresher, this is a robust guide that will take you through basic commands to creating functions.