This repository is updated frequently to reflect my preparation for software engineering interviews in 2020.
- Data Structures
- Algorithms
- Java Language
- Object Oriented Design
- System Design
- Full-Stack Development
Tip: Declare with interface, instantiate with implementation.
Exception: For PriorityQueue, use PriorityQueue for declaration and instantiation.
- Resizable array
- Queue and stack (Circular Array / linked list)
- HashMap (seperate chaining)
- Binary heap
- Serialize and deserialize trees (Regular / BST)
// check k-th bit
(x >> k) & 1
// Set k-th bit to 1
x = x | (1 << k)
// Set k-th bit to 0
x = x & ~(1 << k)
COMING SOON
- Find first occurrence
- Find last occurrence
- Search in shifted sorted array
- Search in bitonic array
- Median of two sorted arrays
- K closest in sorted array
- K closest in two sorted arrays
- Selection sort (array / two stacks)
- Merge sort (array / linked list)
- Quick sort
- Move 0s to the end (order not maintained / maintained)
- Dutch national flag problem
- Reverse linked list (reverse all / two at a time / k at a time)
- Middle node
- Cycle (cycle existence / cycle position)
- Reorder list
- Partition list
- List palindromicity
- Merge sorted lists (two lists / k lists)
- Linked list arithmetics (addition / subtraction)
- Queue by two stacks
- Stack by queues
- Min stack
- Deque by three stacks
- Tree properties (height / balanced / complete / symmetric / is binary search tree)
- Tree iterative traversals (preorder / inorder / postorder)
- Binary search tree basic operations (search / insert / delete)
- Build trees based on traversals
- Least Common Ancestor problems (without parent pointer / with parent pointer)
- Iterator problems
- Kth problem (Kth smallest in unsorted array, Kth closest points to origin in 3D)
- Bipartite graph
- Subsets
- Permutations (numbers / valid parentheses)
- Combinations
- Coin change
- N Queens
- Top K frequent words
- Remove Adjacent Repeated Characters
- Substring problem (Check Substring Exists)
- String Manipulation (Compression / Decompression / Abbreviation / Replacement)
- Anagram Problems
- Longest Substring Problems
- Subarray and subsequence (ascending / sum)
- Array hopper (can reach destination / minimum jumps)
- "Cutting" problem
- Edit distance
- Largest Shape Problem
- Final, finalize, finally
- Static
- Abstract class vs. interface
- Types of classes
- Overload vs. Override
- Comparable and Comparator
- Exception handling
- Concurrency
COMING SOON
COMING SOON
COMING SOON