- System Design Questions
- Java OOP Concepts
- C++ Concepts
- Operating System Concepts
- Reading-References
- Algorithms and Data Structures
Large scale system design and object oriented design questions and topics
- Keywords To Remember
- Infrastructure Design Questions
- System Design Questions
- Object Oriented Design Questions
- External References
Short sample programs to demonstrate the inbuilt object oriented concepts in Java language.
- Generics
- Equality
- String Representation of Object
- Hash code of Object
- Dynamic array
- Iterable
- Comparable
- assert
- Comparator
- Immutability
Short sample program to demonstrate C++ language basics
- Smart pointers
- move semantics
- move constructor
- move assignment
- enums & enum class
- Random numbers
- Synchronization
- File IO
- Print all lines which contain a given pattern Link
- Memory Management
- Hash table implementation
- Implement elementary hash table in C++ Link
- Hash table implementation in C++ using STL Inspiration Link
- Prefix Hash tree
- Prefix Hash Tree: An Indexing Data Structure over Distributed Hash Tables https://www.eecs.berkeley.edu/~sylvia/papers/pht.pdf -
- Distributed Hash table
- Suffix tree
- Compressed Trie, used in pattern searching, hard algo https://en.wikipedia.org/wiki/Suffix_tree
- Hash Functions
- Google CodeJam
- Algorithms
- LeetCode
- Google Code Jam 2018
- Google Code Jam 2020
Princeton Algorithms Part 1 and Part2
- A general approach to backtracking questions (Subsets, Permutations, Combination Sum) Link
- A summary: how to use bit manipulation to solve problems easily and efficiently Link
- Rearrange odd even elements in a linked list. C++
- Linked List Java
- Alternating Split Java
- Sort linked list
- Clone list with random pointers C++
- Linked List implementation
- Push, append, delete, pop, clone list C
- Binary tree
- Recursive Preorder, inorder, postorder, height, diameter C++
- Construct balanced binary tree C++
- Find longest increasing path in binary tree C++
- Find longest increasing path in n-ary tree C++
- Find next right node in binary tree C++
- Count all possible distinct sums paths top-down in a binary tree. C++
- Quick Find Java
- Quick Union Java
- Weighted Quick Union Java
- Weighted Quick Union with Path compression Java
- Percolation Problem Java
- Parse decimal, hexdecimal, octal from a file and output to another. C++
- Check if two strings are isomorphic. C++
- Find first unique character in a string. C++
- String sorting
- Using trie data structure Java
- Auto Completion search
- Using trie Java
- English word meaning dictionary
- Using trie Java
- Longest Common Prefix
- Using trie Java
- Pattern Searching
- Using trie of all suffix Java
- Word Break problem
- Using trie, recursive algorithm Java
- KMP Pattern searching
- Search pattern in text Java
- Remove characters from a first string which are present in other string C C++ <<<<<<< HEAD =======
- Interleaved string
Add disjoint set and interleaved string
- Continuous ones Java
- Infections over a distance Java
- 8 Puzzle Java
- Maximum sum rectangle in a 2D matrix C++
- Insertion sort (generic) Java C++
- Selection sort (generic) Java
- Shell sort (generic) Java
- Merge sort (generic) Java C++
- Bottom Up Merge (generic) Java
- Quicksort (generic) Java C++
- 3-way Quicksort (generic) Java
- Dutch national flag problem C++
- Merge intervals C++
- Meeting rooms C++
- Find peak element C++
- Search in rotated array C++
- Search in a 2D matrix C++
- Find start and end of a range in a sorted array C++
- Find kth largest element
- Binary Search
- Word Break problem
- Recursive algorithm, using trie Java
- Longest Common Subsequence
- Shortest Common Supersequence
- Longest Common Substring
- Recursive, bottom-up, space optimized, print substring, without repeating characters Java
- Longest Common Substring in array
- Stem in an array of strings Java
- Subsequence variants: Repeated Subsequence
- top-down, naive recursion, print sequence Java
- Levenshtein distance / Edit Distance Java
- Largest sqaure submatrix of 1s Java
- Min cost path from top right to bottom down in matrix Java
- Maximum value of expression Java
- Subset sum partition Java
- Three Partition Java
- Rod Cutting Java
- Rod Cutting Product Java
- Coin Change - Minimum number of coins
- Coin Change Ways Java
- Binary String with no consecutive 1s Java
- Word Break Java
- Word Break using trie Java
- Array Adjustment cost Java
- No of ways for dice throws Java
- Wildcard Matching Java
- Tripping Rain Water Java
- Jump Game C++
- Length of Longest Increasing Subsequence C++
- kth element, Quick Select Java
- Shuffling : using Fisher–Yates shuffle algorithm Java
- GaussElimination : Gauss elimination or Gauss Jordan method to solve system of linear equations Java
- Point2D : Data structure to represent point in 2D space Java
- Point3D : Data structure to represent point in 3D space Java
- Generate Nth row of Pascal triangle
- Happy number Wiki C++
- Excel Sheet Column Number C++
- Number of zeros in facorial C++
- Implement power function C++
- Implement square root function C++
- Print all possible decoding of given digit sequence. C++
- Print all possible decoding of given digit sequence. C++
- Find the celebrity in room. C++
- Maximum possible length by cutting N wood pieces into K pieces. C++
- Merge N trasactions preserve order. C++
- Stock Buy Sell to Maximize Profit. C++
- Find majority element. Problem
- Brute Force C++
- using hashmap C++
- Boyer-Moore voting algorithm wiki article C++
- CPU task scheduling C++
- Activity/Task : representation of an activity or a task Java
- Randomized set Problem C++
- Disjoint set
- Basics Java
- Questions Links 1
- Bit Twiddling Hacks collection
- Closest pair of points : Divide and conquer algorithm Java
- Collinear points Java
- Group points which are at distance less than k : brute force algorithm Java
- Group points which are at distance less than k : divide and conquer algorithm Java
- Random String : generate random string Java
- Random 2D Matrix : generate random 2D boolean, binary or integer matrix Java
- Top K frequent elements Problem
- Reverse String Problem
- Reverse Integer Problem
- First unique character in a string Problem
- Valid anagram Problem
- Valid palindrome Problem
- Longest Common Prefix Problem
- Delete Node (without previous) Problem
- Simple Delete C++
- Remove Nth from end Problem
- Simple Delete C++
- Reverse a linked list Problem
- Merge two sorted Problem
- Simple C++
- Palindrome List Problem
- Double Reverse C++
- Cycle in Linked List Problem
- Slow and fast pointer C++
- Sum two numbers Problem
- Odd Even Linked List Problem
- Intersection of Two Linked Lists Problem
- Max depth Problem
- Max Depth C++
- Validate Binary search Tree Problem
- Validate BST C++
- Symmeric Binary Tree Problem
- Level Order Of Tree Problem
- Using queue C++
- Sorted Array to Binary Search Tree Problem
- Recursive C++
- Inorder traversal Problem
- Zigzag/spiral level order traversal Problem
- Construct Binary Tree from Preorder and Inorder Traversal Problem
- Populating Next Right Pointers in Each Node Problem
- Kth Smallest Element in a BST Problem
- Kth Largest Element in a BST | ?? | ? |
- Number of Islands Problem