Following is the list of most common data structures used in programming languages and taught in computer
science. A good understanding and having knowledge of practical use helps in writing clean and efficient code.

- Array
- LinkedList
- Queue
- Stack
- Hash
- Binary Tree
- Heap

**Linked List**

Programs on linked list

**Stack**

**Binary Tree**

Programs on Binary Tree

**Binary Search Tree**

Programs on Binary Search Tree

**Algorithms**

- Maximum Product Subarray
- Check whether sudoku is valid
- Check whether string is valid parentheses
- Find Subsets
- Find subsets and handle duplicates
- Find possible permutations of distinct elements in an array
- Find possible permutations of elements in an array
- Find minimum path sum in a triangle (tree like data structure)
- Given a collection of intervals, merge all overlapping intervals.
- Minimum window substring.

- How java manages Memory?
- Why is it advised to use hashcode and equals together?
- Comparable and Comparator in java
- How to create Singleton class in Java?
- Difference betwen equals and ==?
- When to use abstract class over interface?
- Difference between final, finally and finalize
- Why is it recommended to ues Immutable objects in Java