๐ŸŒ AIๆœ็ดข & ไปฃ็† ไธป้กต
Skip to content

kardolus/cs-training

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Computer Science Training progress 39/57 license

gopher from ashleymcnamara

I suggest using this list as a warm-up for interview preperation. Follow it up with interview problems from HackerRank, LeetCode, Cracking the coding interview or Programming Interviews Exposed. Alternatively go old school with Project Euler.

It can help to practice using coderpad.io, since it is used for many coding interviews.

Concepts

Concept Description Status
Big O Growth of run time and space complexity โœ”
Divide and Conquer Design paradigm based on multi-branched recursion โœ”
Dynamic Programming An optimization over plain recursion โœ˜
Memory (Stack vs Heap) Memory allocation โœ”
Bitwise Operations Operations on ints and uints at the binary level โœ”
Hashing Map data of arbitrary size to fixed-size values โœ”
Permutations and Combinations Find all permutations or combinations โœ”

Data Structures

Structure Access^ Search^ Insertion^ Deletion^ Status
Stack ฮ˜(n) ฮ˜(n) ฮ˜(1) ฮ˜(1) โœ”
Queue ฮ˜(n) ฮ˜(n) ฮ˜(1) ฮ˜(1) โœ”
ArrayList ฮ˜(1) ฮ˜(n) ฮ˜(n) ฮ˜(n) โœ”
Singly LinkedList ฮ˜(n) ฮ˜(n) ฮ˜(1) ฮ˜(1) โœ”
Doubly LinkedList ฮ˜(n) ฮ˜(n) ฮ˜(1) ฮ˜(1) โœ”
SkipList ฮ˜(log(n)) ฮ˜(log(n)) ฮ˜(log(n)) ฮ˜(log(n)) โœ˜
Set ฮ˜(n) ฮ˜(n) ฮ˜(1) ฮ˜(n) โœ”
HashTable N/A ฮ˜(1) ฮ˜(1) ฮ˜(1) โœ”
Binary Search Tree ฮ˜(log(n)) ฮ˜(log(n)) ฮ˜(log(n)) ฮ˜(log(n)) โœ”
Trie โœ˜
Graph โœ”
Red-Black Tree ฮ˜(log(n)) ฮ˜(log(n)) ฮ˜(log(n)) ฮ˜(log(n)) โœ˜

^ = average

Sorting

Algorithm Best Average Worst Space (Worst) Status
Bubble Sort (Exchange) ฮฉ(n) ฮ˜(n^2) O(n^2) O(1) โœ”
Quick Sort (Exchange) ฮฉ(n log(n)) ฮ˜(n log(n)) O(n^2) O(log(n)) โœ”
Insertion Sort ฮฉ(n) ฮ˜(n^2) O(n^2) O(1) โœ”
Heap Sort (Selection) ฮฉ(n log(n)) ฮ˜(n log(n)) O(n log(n)) O(1) โœ”
Merge Sort ฮฉ(n log(n)) ฮ˜(n log(n)) O(n log(n)) O(n) โœ”

Common Problems

Problem Description Status
Maximum subarray Find a contiguous subarray with the largest sum โœ”
Sliding window method Find all anagrams in a string โœ”
Binary search recursive Find an item in a sorted array in log(n) time โœ”
Rabin-Karp Rolling hash algorithm used for string-matching โœ”
Prime Numbers Fermat, Pollard's rho, trial division โœ”
Topological Sort Sort nodes in a graph โœ”
Permutations (Recursive) Find all permutations โœ”
Permutations (Iterative) Find all permutations โœ”
Permutations (Factorial) Find all permutations โœ”
Fibonacci iterative Approximation in integers to the logarithmic spiral series โœ”
Fibonacci recursive ,, โœ”
Fibonacci dynamic programming ,, โœ”

Creational Patterns

Pattern Description Status
Abstract Factory Provides an interface for creating families of releated objects โœ˜
Builder Builds a complex object using simple objects โœ”
Factory Method Defers instantiation of an object to a specialized function for creating instances โœ”
Prototype Co-opt one instance of a class for use as a breeder of all future instances โœ˜
Singleton Restricts instantiation of a type to one object โœ”

Structural Patterns

Pattern Description Status
Adapter Wrap an existing class with a new interface โœ”
Bridge Decouples an interface from its implementation so that the two can vary independently โœ˜
Composite Encapsulates and provides access to a number of different objects โœ˜
Decorator Adds behavior to an object, statically or dynamically โœ”
Facade Uses one type as an API to a number of others โœ˜
Flyweight Reuses existing instances of objects with similar/identical state to minimize resource usage โœ˜
Proxy Provides a surrogate for an object to control it's actions โœ”

Behavioral Patterns

Pattern Description Status
Chain of Responsibility Avoids coupling sender and receiver โœ˜
Command Bundles a command and arguments to call later โœ˜
Interpreter Define a grammatical representation for a language โœ˜
Iterator Access the elements of an aggregate object sequentially โœ”
Mediator Connects objects and acts as a proxy โœ˜
Memento Generate an opaque token that can be used to go back to a previous state โœ˜
Observer Provide a callback for notification of events/changes to data โœ”
State Encapsulates varying behavior for the same object based on its internal state โœ˜
Strategy Enables an algorithm's behavior to be selected at runtime โœ”
Template Method Defines a skeleton class which defers some methods to subclasses โœ˜
Visitor Separates an algorithm from an object on which it operates โœ˜

Acknowledgement

Got the table design and a bunch of pattern-definitions from this cool repo: https://github.com/tmrts/go-patterns

Releases

No releases published

Packages

No packages published

Languages