DSA
Algorithms
- Search
- Binary Search(recursive also)
- Linear Search
- Recursion
- Iterative & recursive
- Virtual memory
- Amortised resizing
- Dynamic programing
- Memoize approach
- Bottom up approach
Problems
- Factorial
- fibonacci
- prime number (with and without recursion)
Complexity Analysis
- Time complexity
- Space complexity
Asymptotic Notations
- Ranking
- Big O notation
- Omega Notation
- Theta Notation
Memory
- Memory Allocation
- Bit vs byte
- Memory address
- Contiguous memory allocation
- Non-contiguous memory allocation
- Stack
- Primitive types are stored in stack
- Heap
- Reference type are stored in heap
- Eg: Arr, fun, obj
- Memory Leak
- Symptoms
- Garbage Collections
- Process
- Reasons for memory leak
- How to debug
- Big O Notation
- Linear time complexity
- Constant time complexity
- Quadratic time complexity
- Qubic
- Logarithmic complexity
- Exponential complexity
- Operations in normal array
- Init
- Set
- Get
- Traverse
- Insert
- Delete
Data Structures
- What is DS?
- Advantages and Disadvantages
- Examples
- DOM
- Undu & Redo
- Os job scheduling
- Dynamic Array
- It’s working and memory allocation?
- Set
- Linked List
- Advantages and disadvantages
- Applications
- Creating a linked list
- Operation
- Init
- Set
- Get
- Traverse
- Insert
- Delete
- Singly Linked List
- Double linked list
- Circular linked list
- Array vs linked list
Others
- Build in DS in JS
- Array
- Push, pop, shift, unshift, forEach, map, filter, reduce, concat, slice, splice ,sort()
- some(), every(), find(), findIndex(), fill(), flat(), reverse(), sort()
- Objects
- Insert, Remove, Access, Search,
- Object.keys(), Object.values(), Object.entries()
- Sets
- add, has, delete, size, clear
- Maps
- set, get , has, delete, size, clear
- Array vs Set
- Object vs Map
- Strings
- Primitive and object string
- Escape char
- ASCII
- 32 - Space
- 48-57 == (0-9)
- 65-90 == (A-Z)
- 97-122 == (a-z)
- Unicode
- UTF-8
- Custom DS
- Stacks
- Queue
- Circular queues
- Linked lists
- Hash tables
- Trees
- Graphs
Algorithms
- Sorting
- Bubble sort
- Insertion sort
- Quick sort
- Divide and conquer
- Partition method
- Pivot selection
- Last, first
- average/median
- Heap sort
- Merge sort
- Divide and conquer
- Merge vs Quick sort
Data Structures
- Stacks
- LIFO
- Push, pop
- Stack underflow
- Stack overflow
- Use cases
- Types of Stack
- Linear Stack
- Dynamic Stack
- Array-based
- Linked list based
- Monotonic stack
- Queue
- FIFO
- Enqueue
- Dequeue
- Peek
- Priority queue
- Circular queue
- Uses
- Types of Queue
- Linear Queue
- Circular Queue
- Priority Queue
- DEqueue (Double ended queue)
- Input restricted
- Output restricted
- Blocking Queue
- Concurrent Queue
- Delay Queue
- Hash Table
- Searching O(1)
- Hash function
- Collision
- Dynamic restructuring
- Uses
- Load factor
- Operations
- Init
- Insert
- Search
- Delete
- Traverser
- Please Note
- Week set, week map
- Collisions Handling
- Separate Chaining
- Open Addressing
- Linear Probing
- Quadratic Probing
- Double Hashing
- Clustering
- Cuckoo hashing
- Robin Hood hashing
- SHA: Secure Hashing Algorithm
Advanced
- Linear, non-linear, hierarchical
Data Structures
- Tree
- Features
- Uses
- parent, child, root, leaf, sibling, ancestor, descendent, path, distance, degree, dept, height,edge,subtree
- Types of trees on nodes
- Binary tree
- Ternary tree
- K-array tree
- Threaded binary tree
- Types of trees on structure
- Complete tree
- Full tree
- Perfect tree
- Degrenarted
- Left-skew
- Right-skew
- Binary Search Tree (BST)
- BST vs BT
- Uses
- Balanced vs unbalanced tree
- Properties of BST
- Operations
- Inserting
- Deletion
- Traversal
- DFS
- InOrder
- PreOrder
- PostOrder
- BFS
- Balanced Search Tree
- AVL tree
- Red-black tree
- Prefix tree
- M-way search tree
- B Tree
- B+ Tree
- Merkle Tree
- Red-black tree vs AVL
- Heap
- Min Heap
- To get value of
- Left child
- Right child
- Parent
- Operations
- Init/ Heapify
- Insert
- Delete
- Max Heap
- Heapfity
- Bottom-up
- Top-down
- DEPQ
- Trie
- String vs Trie
- Operations
- Init
- Insertion
- Delete
- Search
- Prefix and Suffix tree
- terminator char
- Compressed Trie
- Radix Tree (Patricia Trie)
- Graph
- Vertex
- Edge
- Can be stored as
- Adjacency list
- as linked list
- time O(V)
- space O(V+E)
- Adjacency matrix
- As array
- time O(1)
- space O(v^2)
- Spanning tree
- Min spanning tree
- Graph indexing
- Vertex-centric indexes
- Edge-centric indexes
- Types
- Unidirectional (Direct graph)
- Bidirectional (Un DIrected graph)
- Cyclic
- Disconnected
- Weighted Graph
- Unweighted Graph
- Bipartite Graph
- Traversal
- BFS
- DFS
- River size problem
Algorithms
- Greedy method
- Kruskal's Algorithm
- Prim's Algorithm
- Dijkstra's Algorithm
- Bellman-Ford Algorithm
- Topological Sorting
- Floyd-Warshall Algorithm
- Bipartite Graph Checking
- Max Flow (Ford-Fulkerson Algorithm)
Low level
- bit, byte
- nibble
- word
- dword
- qword
- byte order
- endianness
- registers
- cache line
- memoery
- heap (in memory)
- stack (in memory
- virtual memory
- orphaned meoery/memory leak
- pagings
- sements
- gramentaions
- page tables
- mmapping
- MMU (PTE, PTBR, TLB)
- DMA
- ASLR
- KASLR (xnu)
- KPTI
- PAC (arm64e)
Question
- Graph vs Tree
- Forest (in Tree)
- Forest > Graph > Tree > Linked list
- Operators
- Binary operators
- Priority
- Infix
- Prefix (Polish notation)
- Postfix (Reverse Polish notation)
General
- How does Logarithms work
- File structure vs Data Structure
- Where is the DS used?
- Void vs null
- Dynamic data structure
- Uses
- Example
- Dynamic memory management/ allocations
- Heap be used over a stack
- Data abstraction
- Post fix expression
- Signed number
- Pointers in DS
- Uses
- Huffman’s algorithm working
- What is recursive algorithm
- Divide and conquer on recursion
- Which is the fastest sorting algorithm available?
- Multi linked
- Sparse matrices
- Disadvantages of implementing queues using arrays
- Void pointer
- Lexical analysis
- Lexeme
- Pattern