
1. Exception Handling
1.1. Main Thread
1.2. Runtime Stack
1.3. Default Exception Handler
1.4. Handling Exceptions
1.4.1. Try-catch-finally block
1.4.2. throws keyword
1.4.3. Try with resource
1.5. Exception Hierarchy
1.5.1. Checked Exceptions
1.5.2. Un-checked Exceptions
2. Multithreading
2.1. Multi Processing
2.1.1. Process Based
2.1.2. Thread Based
2.2. Thread Class
2.3. Runnable Interface
2.4. Thread Pool
2.5. Fork-Join Framework
3. Collections Framework
3.1. Arrays vs Collections
3.2. Collections Hierarchy
3.2.1. List
3.2.2. Queue
3.2.3. Set
3.2.4. Map
3.3. Cursors
3.3.1. Enumerator
3.3.2. Iterator
3.3.3. List Iterator
3.4. Comparing
3.4.1. Comparable Interface
3.4.2. Comparator Interface
4. Generics
4.1. Generic Methods
4.2. Bounded Generics
4.3. Multiple Bounds
4.4. Wild Cards
5. I/O
5.1. I/O Sources
5.2. Char/Byte Arrays
5.3. Input/Output Readers/Writers
6. JVM Internals
6.1. JVM Architecture
6.1.1. Class Loader
6.1.2. Runtime Memory
6.1.3. Execution Engine
6.1.3.1. Interpreter
6.1.3.2. JIT Compiler
6.2. Garbage Collector
6.3. JVM Configurations
7. ORM
7.1. Types of Mapping
7.1.1. One to One
7.1.2. One to Many
7.1.3. Many to One
7.1.4. Many to Many
7.2. Hibernate
8. Unit Testing
8.1. JUnit
8.2. TestNG
8.3. Mockito
9. Java Platform
9.1. JDK
9.1.1. JavaME
9.1.2. JavaSE
9.1.3. JavaEE
9.2. JRE
9.3. JVM
10. OOP
10.1. OOP Basic Concepts
10.1.1. Class
10.1.2. Object
10.1.3. Field
10.1.4. Method
10.1.5. Constructor
10.2. OOP Pillars
10.2.1. Inheritance
10.2.2. Polymorphism
10.2.3. Abstraction
10.2.4. Encapsulation
11. Streams API
11.1. Create a Stream
11.2. Operations
11.2.1. Intermediate Operations vs Terminal Operations
11.2.2. Map
11.2.3. Filter
11.2.4. Sorted
11.2.5. FindAny
11.2.6. Collect
11.3. Parallel Streams
12. Lambda Expressions
12.1. Functional Programming Paradigm
12.2. Functional Interface
12.2.1. Static Methods
12.2.2. Defaults Methods
12.3. Inner Class
12.4. Simplify Lambda Expressions
12.5. Inbuilt Functional Interfaces
12.5.1. Function<T, U>
12.5.2. Predicate<T>
12.5.3. Consumer<T>