cheat-sheet
Table of Contents
Coding & Algorithms
Coding
C++
APIs
Object-Oriented Design and Programming
How to Test Your Code
Corner Cases and Edge Cases
Algorithms
Searching
Binary Search
Divide-and-conquer
Greediness
Big-O Notation
Dijkstra’s
A*
Sorting
Insertion Sort
Radix Sort
Quicksort
Merge Sort
Heapsort
Data Structures
Lists
Arrays
Linked Lists
Stacks
Queues
Hash
Sets
Maps
Tables
Dictionary
Trees
Binary
Heaps
Mathematics
Counting
Probability
Discrete Math
Combinatorics
Graphs
Algorithms
Distance
Search
Connectivity
Cycle-detection
Ways to Represent a Graph in Memory
Objects and Pointers
Matrix
Adjacency List
Traversal Algorithms
Breadth-first Search
Depth-first Search
Recursion
Large-scale Design
System Design
Feature Sets
Interfaces
Class Hierarchies
Distributed Systems
Designing a System under Certain Constraints
Simplicity
Limitations
Robustness
Tradeoffs
How the Internet Works
Routers
Domain Name Servers
Load Balancers
Firewalls
Traversing a Graph
Run-time Complexity of Graphs
A Distributed Hash Table System
Resource Estimation with Real Systems
The Big Product Design Picture
Translation of an Abstract Problem to a System
API Discussions
Binary Trees
Cache
MapReduce
For Loop Problems
Index
Reverse Linked List
Compilers
Memory Cache
Networks
Operating Systems
Execution
Processes
Threads
Synchronization
Locks
Mutexes
Semaphores
Monitors
Concurrency Issues
Deadlock
Livelock
Context Switching
How It Works
How It’s Initiated by the Operating System
Underlying Hardware
Scheduling
Modern Concurrency Constructs
Research Science