Java for Testing
Java for test automation: basics, OOP, keywords, strings, collections, exceptions and programs.
Java Concurrency: ExecutorService, CompletableFuture, Fork/Join, Locks and Virtual Threads
Java concurrency beyond raw threads: ExecutorService and thread pools, CompletableFuture, Fork/Join, CountDownLatch, read-write locks.
Java Serialization, Reflection API and Custom Annotations
Java serialization and serialVersionUID, the Reflection API for inspecting classes at run time, and writing custom annotations, with interview questions.
Design Patterns in Java (Part 1): Singleton, Decorator, Proxy, Facade, Adapter, Flyweight and Composite
Creational and structural design patterns in Java with code: Singleton and its pitfalls, Decorator, Proxy, Facade, Adapter, State, Flyweight and Composite.
Design Patterns in Java (Part 2): Strategy, Command, Template Method, Chain of Responsibility and More
Behavioral design patterns in Java with code: Strategy, Command, Template Method, Chain of Responsibility, Mediator, Memento, Visitor.
JVM Memory Model, Garbage Collection, JVM Tuning and ClassLoaders
How the JVM manages memory: heap, stack, metaspace, generations, garbage collectors (G1, ZGC, Parallel), JVM tuning flags and the ClassLoader hierarchy.