If you ask hiring managers why they refuse to interview bootcamp grads, they’ll say “computer science fundamentals like data structures and algorithms.” If you ask them what else, they’ll stumble around for words and say something like “four years of immersion.”
It’s not feasible to self-study four years of unrelated coursework and heavy drinking, but it’s not impossible to supplement your bootcamp education with a very strong understanding of computer science fundamentals.
Pointers, memory allocation – Chances are your bootcamp will use a language with dynamically-sized arrays and automatic garbage collection. No matter what language you studied, The C Programming Language (book) is a great guide that will help you read more strongly-typed languages and learn the concepts of memory allocation.
Big-O notation – This concept comes up during every interview at any company worth working for. It’s a quick exercise to determine if the candidate has any knowledge of software engineering beyond the [React / Angular / Node / Rails] world. Know the time and space complexities of your favorite algorithms (more on that later) and be able to look at code and figure out the Big-O complexities.
Learn data structures. Drill them every day until you can talk about them at length with your interviewer. Know its characteristics, time complexities of common operations, and be able to provide several examples of when the data structure is useful. Know how the data structure is implemented (for example, adding the (n+1)th element to a statically sized array of length n).
You should be very familiar with at least the following. I’ve had each of these appear several times during my technical screens and interviews. If you have time, implement these data structures in your language of choice.
- Statically sized
- Circular arrays
- Linked lists
- Singly and doubly linked lists
- Hash maps/sets/tables
- Know how they’re implemented – SUPER common questions here
- n-ary Trees
- Know how a self-balancing BST works
- Bloom filters
- It seems obscure, but I’ve had this come up several times in interviews
- This topic is seldom covered in bootcamps, making graph algorithms a favorite for interviewers
Bootcamps have gotten much better at incorporating algorithms into their curriculum. The program I attended taught simple sorting algorithms even before the course began. Like data structures, know these basic algorithms inside-out – be able to implement them automatically and recognize when you might use them.
Cracking the Coding Interview is widely regarded as the tech bible in terms of preparing for a variety of algorithm-related questions. Know the concepts, but don’t bother memorizing solutions since most engineers have read this book.
- Binary search
- Comparison sorting
- Bubble sort
- Insertion sort
- Selection sort
- Non-comparison sorting
- Counting sort
- Bucket sort
- Radix sort
- Linked list
- Reversing a linked list in place
- Topological sort
- Recursion / Dynamic Programming
- You usually won’t get a problem harder than “maximize the value of this rod” or the “stair step problem”, but dynamic programming requires some logic that isn’t taught at bootcamps. Spend some time watching this guy’s Youtube videos to get a better feel for how to approach these problems.
The only way to get better at this part is real-world experience, but we’ll have to make do with practice. Interviewers will typically ask you to design a generic computer game or a URL-shortening service. More important than your ability to separate concerns is your ability to ask the right questions. Your goal is to show your interviewer how you think about problems and where you believe the biggest hurdles will be.
You need to understand how the internet works. A trite question is “what happens when you type google.com into the address bar and press enter?” There are countless guides on the internet about this. Bonus points if you go into caching.
Class 1-5 of UCSD’s Data Structures and Algorithms Specialization on Coursera have very good video lectures and programming assignments covering many topics on this post. It’s a much more structured way to learn than googling every concept on this page.
Leetcode – Tons of algorithm questions and answers. Spend a few days before your algorithm-heavy interviews practicing on this site. Have a friend practice whiteboarding with you using some fo these algorithms.
Google Interview University – A guy’s journey to become a Googler. This Github repo has hundreds of hours of great material – awesome if you’re beginning preparation a few months in advance. Good for skimming if you’re on a bootcamp interview timeline.
The Algorithm Design Manual – If you refuse to work anywhere besides Google/Amazon/Microsoft/Facebook/Dropbox, it’s probably useful to pick up this book to supplement your algorithm knowledge. It’s hugely praised on Hacker News and Reddit Computer Science communities.