1. OOPs
    1. Encapsulation
      1. Abstraction
    2. Inheritance
      1. Interface - Abstract Class
        1. Casting
      2. IS-A vs HAS-A Relationships
      3. Aggregation vs Composition
    3. Plymorphism
      1. Method overloading vs Method Overloading
      2. Compile time vs Runtime
  2. Threads
    1. Creating threads
    2. Multitasking
    3. Synchronization
    4. Thread Transitions
  3. Marker Interface
    1. Serialization
    2. Clonnable
      1. Shallow copy vs Deep Copy
  4. Collections
    1. Map, List and Set
    2. Equals - Hashcode
    3. Legacy - Synchronized Classes
  5. JVM
    1. Stack vs Heap Memory
    2. Garbage Collection
    3. JRE, JVM, JDK
    4. Class loaders
  6. Exception
    1. Checked Vs Unchecked Exceptions
    2. Exception handling best practices
    3. try, catch, finally, throw, throws
  7. APIs
    1. Files
    2. String - StringBuffer - String Builder
    3. Java IO
    4. XML
      1. SAX Based & DOM Based
      2. JAXB - Java API for XML Binding
  8. Access specifier
    1. Access modifier
      1. public
      2. protected
      3. deafult
      4. private
    2. final
    3. static
    4. synchronized
    5. abstract
    6. transient
    7. volatile
  9. Inner/Nested Classes
  10. JavaEE Basics
    1. Packaging the Applications
      1. WAR
      2. EAR
    2. Basics
      1. MVC
      2. Servlets
        1. Listeners
        2. Lifecycle
      3. JSPs
    3. APIs
      1. JPA
      2. JAX-WS
        1. SOAP, WSDL Webservices basics
        2. Contract first vs
      3. JAX-RS
        1. RESTful and its advantages
      4. JSF