🎓 Github Interview University

Extracted from: https://github.com/jwasham/coding-interview-university

Table of Content

–––––––– Everything below this point is optional ––––––––

Optional Extra Topics & Resources

Algorithmic complexity / Big-O / Asymptotic analysis

Well, that’s about enough of that.

When you go through “Cracking the Coding Interview”, there is a chapter on this, and at the end there is a quiz to see if you can identify the runtime complexity of different algorithms. It’s a super review and test.

⬆ back to top

Data Structures

Arrays

Linked Lists

Stack

Queue

Hash table

⬆ back to top

More Knowledge

Bitwise operations

⬆ back to top

Trees

Trees - Intro

Binary search trees: BSTs

Heap / Priority Queue / Binary Heap

⬆ back to top

Sorting

As a summary, here is a visual representation of 15 sorting algorithms. If you need more detail on this subject, see the “Sorting” section in Additional Detail on Some Subjects

⬆ back to top

Graphs

Graphs can be used to represent many problems in computer science, so this section is long, like trees and sorting.

Notes:

Courses:

⬆ back to top

Even More Knowledge

Recursion

Dynamic Programming

Design patterns

Combinatorics (n choose k) & Probability

NP, NP-Complete and Approximation Algorithms

How computers process a program

Caches

Processes and Threads

Testing

String searching & manipulations

If you need more detail on this subject, see the “String Matching” section in Additional Detail on Some Subjects.

Tries

Floating Point Numbers

Unicode

Endianness

Networking

⬆ back to top

Final Review

This section will have shorter videos that you can watch pretty quickly to review most of the important concepts.
It's nice if you want a refresher often.

⬆ back to top



Everything below this point is optional. It is NOT needed for an entry-level interview. However, by studying these, you’ll get greater exposure to more CS concepts and will be better prepared for any software engineering job. You’ll be a much more well-rounded software engineer.




⬆ back to top

Additional Books

These are here so you can dive into a topic you find interesting.

⬆ back to top

System Design, Scalability, Data Handling

You can expect system design questions if you have 4+ years of experience.

⬆ back to top

Additional Learning

I added them to help you become a well-rounded software engineer and to be aware of certain
technologies and algorithms, so you'll have a bigger toolbox.

Compilers

- [How a Compiler Works in ~1 minute (video)](https://www.youtube.com/watch?v=IhC7sdYe-Jg)
- [Harvard CS50 - Compilers (video)](https://www.youtube.com/watch?v=CSZLNYF4Klo)
- [C++ (video)](https://www.youtube.com/watch?v=twodd1KFfGk)
- [Understanding Compiler Optimization (C++) (video)](https://www.youtube.com/watch?v=FnGCDLhaxKU)

Emacs and vi(m)

Unix/Linux command line tools

DevOps

Information theory (videos)

Parity & Hamming Code (videos)

Entropy

Cryptography

Compression

Computer Security

Garbage collection

Parallel Programming

Messaging, Serialization, and Queueing Systems

A*

Fast Fourier Transform

Bloom Filter

HyperLogLog

Locality-Sensitive Hashing

van Emde Boas Trees

Augmented Data Structures

Balanced search trees

k-D Trees

Skip lists

Network Flows

Disjoint Sets & Union Find

Math for Fast Processing

Treap

Linear Programming (videos)

Geometry, Convex hull (videos)

Discrete math


⬆ back to top

Additional Detail on Some Subjects

I added these to reinforce some ideas already presented above, but didn’t want to include them above because it’s just too much. It’s easy to overdo it on a subject. You want to get hired in this century, right?

⬆ back to top

Video Series

Sit back and enjoy.

⬆ back to top

Computer Science Courses

⬆ back to top

Algorithms implementation

⬆ back to top

Papers

⬆ back to top