codeNcompile
■ JAVA
Complete Course Syllabus
Core to Advanced • Java 8+ New Features • Interview Preparation
20 Comprehensive Modules • 300+ Interview Questions • Java 8–21 Features
From Language Fundamentals to Multithreading & Modern Java
20
Modules 200+
Total Hours 4-5
Months 300+
Interview Qs
• Module 1–5: Core Java Fundamentals
• Module 6–10: OOP, Interfaces & Exceptions
• Module 11–15: Advanced Language Features
• Module 16–18: I/O, Serialization & Threads
• Module 19: Java 8+ New Features
• Module 20: Interview Preparation Guide
■ CORE JAVA FUNDAMENTALS
Module 1: Java Language Fundamentals ■ 6 Hours
■ JVM Architecture: Classloader, Bytecode, JIT Compiler
■ JDK vs JRE vs JVM — differences and roles
■ Data Types: Primitive (byte, short, int, long, float, double, char, boolean)
■ Type Casting: Widening, Narrowing, Explicit & Implicit
■ Wrapper Classes & Autoboxing / Unboxing
■ String, StringBuilder, StringBuffer — differences & when to use
■ String Pool, intern(), immutability of String
■ var (Local Variable Type Inference — Java 10+)
■ Text Blocks (Java 15+)
■ Pattern Matching for instanceof (Java 16+)
■ New Features / Modern Java:
✦ var keyword — Local Variable Type Inference (Java 10)
✦ Text Blocks — multiline strings (Java 15)
✦ Pattern Matching for instanceof (Java 16)
✦ Records — immutable data classes (Java 16)
■ Key Interview Questions:
■ Why is Java platform-independent?
■ Difference between String, StringBuilder, StringBuffer?
■ What is autoboxing? Can it cause NullPointerException?
■ What is String Pool and how does intern() work?
■ Explain JVM memory model (Heap, Stack, Metaspace).
Module 2: Operators & Assignments ■ 3 Hours
■ Arithmetic, Relational, Logical, Bitwise Operators
■ Shift Operators: <<, >>, >>> with examples
■ Ternary Operator, instanceof operator
■ Compound Assignment operators (+=, -=, etc.)
■ Operator Precedence & Associativity
■ String concatenation with + operator
■ Pre/Post Increment & Decrement
■ Key Interview Questions:
■ What is the difference between >> and >>>?
■ Result of 5 + 3 + "Java" vs "Java" + 5 + 3?
■ What is short-circuit evaluation in && and ||?
Module 3: Flow Control ■ 4 Hours
■ if-else, nested if-else, if-else-if ladder
■ switch-case: traditional vs enhanced switch (Java 14+)
■ for, while, do-while loops
■ for-each (enhanced for) loop
■ break, continue, labeled break/continue
■ return statement
■ Switch Expressions with arrow labels (Java 14+)
■ Pattern Matching in switch (Java 21 — preview→standard)
■ New Features / Modern Java:
✦ Switch Expressions with -> arrow syntax (Java 14)
✦ Pattern Matching in switch (Java 21)
✦ Guarded patterns in switch with 'when' clause
■ Key Interview Questions:
■ Can we use String in switch? Since which version?
■ Difference between break and continue?
■ What is a labeled break? Give example.
■■ DECLARATIONS, OOP & INTERFACES
Module 4: Declarations & Access Modifiers ■ 4 Hours
■ Class, Method, Variable declarations
■ Access Modifiers: public, protected, default, private
■ Non-access Modifiers: static, final, abstract, synchronized, transient, volatile, native
■ static blocks and instance initializers
■ final variables, final methods, final classes
■ Naming conventions in Java
■ Command-line arguments
■ Key Interview Questions:
■ Difference between static and instance methods?
■ What is the use of final keyword with variable, method, class?
■ Can we override a static method? (Method Hiding)
■ What is the difference between transient and volatile?
Module 5: OOPs — Encapsulation, Inheritance, Polymorphism, Abstraction ■ 10 Hours
■ Classes & Objects — constructors, this keyword
■ Encapsulation — getters/setters, data hiding
■ Inheritance — single, multilevel; super keyword
■ Method Overloading — compile-time polymorphism
■ Method Overriding — runtime polymorphism
■ Abstract Classes & Abstract Methods
■ Object class methods: toString(), equals(), hashCode(), clone()
■ Covariant Return Types
■ Constructor chaining (this() and super())
■ Sealed Classes (Java 17+)
■ Records as value objects (Java 16+)
■ New Features / Modern Java:
✦ Sealed Classes (Java 17) — restrict class hierarchy
✦ Records (Java 16) — concise immutable data holders
✦ Pattern Matching for instanceof removes explicit cast
■ Key Interview Questions:
■ Difference between Overloading and Overriding?
■ Can we override private/static/final methods?
■ What is the contract between equals() and hashCode()?
■ Explain IS-A vs HAS-A relationship.
■ What are Sealed Classes? Why use them?
■ Can constructor be inherited?
Module 6: Interfaces ■ 5 Hours
■ Interface basics — abstract methods, constants
■ Implementing multiple interfaces
■ Interface vs Abstract Class — when to use what
■ default methods in interfaces (Java 8+)
■ static methods in interfaces (Java 8+)
■ private methods in interfaces (Java 9+)
■ Functional Interfaces & @FunctionalInterface
■ Marker Interfaces (Serializable, Cloneable)
■ Interface inheritance
■ New Features / Modern Java:
✦ default methods (Java 8) — avoid breaking changes
✦ static methods in interface (Java 8)
✦ private & private static methods (Java 9)
■ Key Interview Questions:
■ Can interface have constructor? Why not?
■ Difference between abstract class and interface?
■ What is diamond problem? How do default methods handle it?
■ What is a Functional Interface? Give examples.
■ Can we have static methods in interface?
■■ EXCEPTIONS, ASSERTIONS & PACKAGES
Module 7: Exception Handling with New Features ■ 6 Hours
■ Exception hierarchy: Throwable → Error / Exception
■ Checked vs Unchecked exceptions
■ try-catch-finally block
■ try-with-resources (Java 7+) — AutoCloseable
■ Multi-catch (catching multiple exceptions, Java 7+)
■ throw vs throws
■ Custom Exceptions — extending Exception
■ Exception chaining: initCause(), getCause()
■ Re-throwing exceptions
■ NullPointerException improvements (Java 14+)
■ New Features / Modern Java:
✦ try-with-resources (Java 7)
✦ Multi-catch — catch(A | B e) syntax (Java 7)
✦ Helpful NullPointerExceptions with detailed messages (Java 14)
■ Key Interview Questions:
■ Difference between checked and unchecked exceptions?
■ What happens if exception is thrown in finally block?
■ Can we have try without catch?
■ What is try-with-resources? Which interface must be implemented?
■ Difference between throw and throws?
■ What are Helpful NullPointerExceptions (Java 14)?
Module 8: Assertions ■ 2 Hours
■ assert keyword — syntax and use
■ Enabling assertions: -ea flag
■ Assertions vs Exceptions — when to use which
■ AssertionError
■ Best practices for assertions in production
■ Key Interview Questions:
■ Are assertions enabled by default?
■ When should we use assertions vs exceptions?
Module 9: Packages & Imports ■ 3 Hours
■ Package declaration and naming conventions
■ import statement — single type vs wildcard
■ static imports
■ [Link] package — auto-imported
■ Classpath and module path
■ Package access rules
■ Java Module System (JPMS — Java 9+)
■ [Link] — requires, exports
■ New Features / Modern Java:
✦ Java Platform Module System — JPMS (Java 9)
✦ [Link] with requires/exports
■ Key Interview Questions:
■ What is the default package?
■ Difference between import and static import?
■ What is JPMS? What problem does it solve?
■ Difference between classpath and modulepath?
■ ADVANCED LANGUAGE FEATURES
Module 10: Inner Classes ■ 4 Hours
■ Member inner class
■ Static nested class
■ Local inner class
■ Anonymous inner class
■ Inner class and outer class access rules
■ Lambda expressions as replacement for anonymous classes
■ Key Interview Questions:
■ Difference between static nested class and inner class?
■ Can inner class access private members of outer class?
■ When to use anonymous inner class vs lambda?
Module 11: Enums ■ 3 Hours
■ Enum basics — constants, ordinal(), name()
■ Enum with fields, constructors, methods
■ Enum in switch statements
■ Enum implementing interfaces
■ EnumSet and EnumMap
■ Abstract methods in Enum
■ Key Interview Questions:
■ Can Enum extend a class?
■ Can we create objects of Enum?
■ How is Enum thread-safe?
■ Difference between ordinal() and name()?
Module 12: [Link] Package ■ 4 Hours
■ Object class — all methods in detail
■ String, StringBuilder, StringBuffer
■ Math class — common methods
■ System class — in, out, err, gc(), exit()
■ Runtime class
■ Thread class basics
■ Comparable interface
■ Number subclasses: Integer, Double, etc.
■ StrictMath
■ Key Interview Questions:
■ What does equals() do in Object class?
■ Difference between == and equals() for Strings?
■ What is the difference between Comparable and Comparator?
■ COLLECTIONS, GENERICS & UTILITIES
Module 13: [Link] Package & Collections Framework ■ 10 Hours
■ Collection hierarchy: Collection → List, Set, Queue
■ List: ArrayList, LinkedList, Vector, Stack
■ Set: HashSet, LinkedHashSet, TreeSet
■ Map: HashMap, LinkedHashMap, TreeMap, Hashtable
■ Queue & Deque: PriorityQueue, ArrayDeque
■ Iterator, ListIterator, for-each
■ Collections utility class — sort(), shuffle(), synchronizedList()
■ Arrays utility class
■ Comparable vs Comparator
■ Concurrent Collections: ConcurrentHashMap, CopyOnWriteArrayList, BlockingQueue
■ Fail-fast vs Fail-safe iterators
■ Java 9+ immutable collections: [Link](), [Link](), [Link]()
■ New Features / Modern Java:
✦ [Link](), [Link](), [Link]() — immutable collections (Java 9)
✦ [Link](), [Link]() (Java 10)
✦ Sequenced Collections interface (Java 21)
■ Key Interview Questions:
■ Difference between ArrayList and LinkedList?
■ How does HashMap work internally? What is hashing?
■ What is load factor and initial capacity of HashMap?
■ Difference between HashMap and ConcurrentHashMap?
■ What is CopyOnWriteArrayList? When to use it?
■ Fail-fast vs fail-safe iterators — difference?
■ How does HashSet ensure uniqueness?
■ What is the difference between poll() and remove() in Queue?
Module 14: Generics ■ 5 Hours
■ Generic classes and methods
■ Type parameters: , ,
■ Bounded type parameters: extends, super
■ Wildcards: ?, ? extends T, ? super T
■ Type Erasure — how generics work at runtime
■ Generic interfaces
■ Raw types and backward compatibility
■ Key Interview Questions:
■ What is type erasure in generics?
■ Difference between and ? (PECS rule)
■ Can we create generic arrays?
■ What are raw types? Are they safe?
■ I/O, SERIALIZATION & MULTITHREADING
Module 15: I/O — [Link] Package ■ 6 Hours
■ Byte streams: InputStream, OutputStream hierarchy
■ Character streams: Reader, Writer hierarchy
■ FileInputStream, FileOutputStream
■ FileReader, FileWriter
■ Buffered streams: BufferedReader, BufferedWriter
■ DataInputStream, DataOutputStream
■ PrintWriter, PrintStream
■ NIO (New I/O): Path, Files, Channels, Buffers ([Link])
■ File class — create, delete, list operations
■ Try-with-resources for streams
■ New Features / Modern Java:
✦ [Link]() / writeString() (Java 11)
✦ [Link]() stream API integration
✦ [Link]() (Java 11)
■ Key Interview Questions:
■ Difference between byte stream and character stream?
■ What is BufferedReader? Why use it?
■ Difference between [Link] and [Link]?
■ What is NIO? Advantages over IO?
Module 16: Serialization ■ 3 Hours
■ Serializable interface
■ ObjectInputStream, ObjectOutputStream
■ serialVersionUID — importance and generation
■ transient keyword — excluding fields
■ Custom serialization: writeObject(), readObject()
■ Externalizable interface
■ Serialization vulnerabilities & best practices
■ Key Interview Questions:
■ What is serialVersionUID? What happens if it changes?
■ What is the role of transient keyword in serialization?
■ Difference between Serializable and Externalizable?
■ Can we serialize static fields?
Module 17: Multithreading ■ 10 Hours
■ Thread creation: extends Thread vs implements Runnable
■ Thread lifecycle: NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED
■ Thread methods: start(), run(), sleep(), join(), yield()
■ Synchronization: synchronized keyword, locks
■ wait(), notify(), notifyAll() — inter-thread communication
■ volatile keyword
■ Deadlock, Livelock, Starvation
■ Executor Framework: ExecutorService, ThreadPoolExecutor
■ Callable and Future
■ CompletableFuture (Java 8+)
■ [Link]: CountDownLatch, CyclicBarrier, Semaphore, Phaser
■ Virtual Threads — Project Loom (Java 21+)
■ New Features / Modern Java:
✦ CompletableFuture (Java 8) — async programming
✦ Virtual Threads / Project Loom (Java 21) — lightweight concurrency
✦ Structured Concurrency (Java 21 Preview)
■ Key Interview Questions:
■ Difference between process and thread?
■ What is race condition? How to prevent it?
■ Difference between synchronized method and synchronized block?
■ Explain deadlock with example. How to avoid it?
■ What is the difference between wait() and sleep()?
■ What is ThreadLocal?
■ Explain Executor framework. Why use it over raw threads?
■ What is CompletableFuture? Advantages over Future?
■ What are Virtual Threads (Java 21)? Difference from platform threads?
■ JAVA 8+ NEW FEATURES — COMPLETE GUIDE
Module 18: Java 8 New Features — The Revolution ■ 10 Hours
■ Lambda Expressions — syntax, use cases
■ Functional Interfaces: Predicate, Function, Consumer, Supplier, UnaryOperator, BinaryOperator
■ Method References: static, instance, constructor (Class::method)
■ Stream API: intermediate (filter, map, sorted, distinct, limit) & terminal ops (collect, reduce, count)
■ Optional — avoiding NullPointerException
■ Default & Static methods in interfaces
■ Date & Time API: LocalDate, LocalTime, LocalDateTime, ZonedDateTime, Duration, Period
■ Collectors: toList(), groupingBy(), partitioningBy(), joining()
■ flatMap() — flattening streams
■ Parallel Streams
■ StringJoiner, [Link]()
■ New Features / Modern Java:
✦ Lambda Expressions — concise anonymous function syntax
✦ Stream API — declarative data processing pipeline
✦ Optional — null-safe container type
✦ New Date/Time API ([Link] package)
✦ Method References — :: operator
✦ default/static interface methods
■ Key Interview Questions:
■ What is a lambda expression? How is it different from anonymous class?
■ What are functional interfaces? Can they have default methods?
■ Difference between map() and flatMap() in streams?
■ What is Optional? How does it help avoid NPE?
■ Difference between intermediate and terminal stream operations?
■ What is the difference between findFirst() and findAny()?
■ Explain method references with all 4 types.
■ Problems with old [Link]? How does Java 8 Date API solve them?
■ What is a parallel stream? Is it always faster?
Module 19: Java 9 to Java 21 — Modern Java Features ■ 8 Hours
■ Java 9: JPMS Modules, private interface methods, Stream improvements (takeWhile, dropWhile, iterate)
■ Java 9: [Link](), stream(), or()
■ Java 10: var keyword (local variable type inference)
■ Java 11: String methods: isBlank(), strip(), lines(), repeat()
■ Java 11: [Link](), writeString(), HttpClient API
■ Java 12-13: Switch Expressions (preview), Text Blocks (preview)
■ Java 14: Helpful NullPointerExceptions, Records (preview)
■ Java 14: Pattern Matching for instanceof (preview)
■ Java 15: Text Blocks standard, Sealed Classes (preview)
■ Java 16: Records standard, Pattern Matching standard
■ Java 17: Sealed Classes standard (LTS), Strong Encapsulation
■ Java 21 (LTS): Virtual Threads, Pattern Matching in switch, Record Patterns, Sequenced Collections
■ New Features / Modern Java:
✦ Java 9: Module system, Stream/Optional improvements
✦ Java 10: Local variable type inference (var)
✦ Java 11 (LTS): HTTP Client, String methods, File methods
✦ Java 14: Records, Helpful NPE, Switch expressions
✦ Java 17 (LTS): Sealed classes, Pattern matching, Records
✦ Java 21 (LTS): Virtual Threads, Pattern matching in switch
■ Key Interview Questions:
■ What is var? What are its limitations?
■ What are Text Blocks? How are they different from regular strings?
■ What are Records? When would you use them?
■ What are Sealed Classes? What problem do they solve?
■ What are Virtual Threads? How are they different from platform threads?
■ What are Sequenced Collections (Java 21)?
■ What is the HttpClient API (Java 11)?
■ INTERVIEW PREPARATION — MASTER GUIDE
■ Core Java — Most Asked
■ What is the difference between JDK, JRE, and JVM?
➜ JDK = JRE + development tools (javac, javadoc). JRE = JVM + libraries. JVM executes bytecode.
■ Why is Java platform independent but JVM is not?
➜ Java compiles to bytecode (.class) which runs on any JVM. But JVM itself is platform-specific native software.
■ What is the difference between == and equals()?
➜ == compares references (memory address). equals() compares content. Always override equals() with hashCode().
■ What is immutability? Why is String immutable?
➜ Immutable objects can't be changed after creation. String is immutable for security, caching (String pool), and thread-safety.
■ Explain Java memory model: Heap, Stack, Metaspace.
➜ Stack: method frames, local vars. Heap: objects, instance vars. Metaspace (Java 8+): class metadata, replaces PermGen.
■ OOP & Design — Frequently Asked
■ What is the difference between abstract class and interface?
➜ Abstract class: single inheritance, can have state/constructors. Interface: multiple inheritance, all methods public (before
Java 8: all abstract).
■ Explain SOLID principles briefly.
➜ S=Single Responsibility, O=Open/Closed, L=Liskov Substitution, I=Interface Segregation, D=Dependency Inversion.
■ What is the difference between Composition and Aggregation?
➜ Composition: strong ownership (child can't exist without parent). Aggregation: weak relationship (child can exist
independently).
■ What is covariant return type?
➜ Overriding method can return a subtype of the parent method's return type. Introduced in Java 5.
■ Collections & Generics — Deep Dive
■ How does HashMap work internally?
➜ Uses array of buckets. hashCode() finds bucket, equals() resolves collision in linked list/tree (Java 8: treeify at 8 entries).
■ What is the difference between HashMap and ConcurrentHashMap?
➜ HashMap is not thread-safe. ConcurrentHashMap uses segment-level locking (Java 7) / CAS operations (Java 8) for thread
safety.
■ What is the PECS rule in generics?
➜ Producer Extends, Consumer Super. Use when reading, when writing to collection.
■ Difference between Comparable and Comparator?
➜ Comparable: natural ordering, implemented by the class itself (compareTo). Comparator: external ordering, passed as
argument (compare).
■ Multithreading — Advanced Questions
■ What is the difference between synchronized and volatile?
➜ synchronized: mutual exclusion + visibility. volatile: only visibility (no atomicity for compound operations like i++).
■ What is a deadlock? How to prevent it?
➜ Deadlock: threads waiting for each other's locks. Prevention: acquire locks in same order, use tryLock(), avoid nested locks.
■ What is the Executor framework?
➜ Decouples task submission from execution. Uses thread pools to reuse threads. Avoid creating raw threads in production.
■ Explain CompletableFuture.
➜ Async computation holder. Supports chaining (thenApply, thenCompose), combining futures, exception handling. Better
than Future.
■ What are Virtual Threads (Java 21)?
➜ Lightweight threads managed by JVM, not OS. Can create millions of them. Ideal for I/O-bound tasks. Use
[Link]().
■ Java 8 Streams & Lambda — Must Know
■ What is the difference between map() and flatMap()?
➜ map(): 1-to-1 transformation. flatMap(): 1-to-many, then flattens. e.g., Stream> → Stream.
■ What is a terminal operation? Give examples.
➜ Terminal ops trigger stream processing and return result: collect(), reduce(), count(), findFirst(), forEach(), anyMatch().
■ What is Optional? When should you use it?
➜ Container that may or may not have a value. Use as method return type to signal possible absence instead of returning null.
■ Difference between findFirst() and findAny()?
➜ findFirst(): first element (consistent in ordered stream). findAny(): any element (better for parallel streams,
non-deterministic).
■ QUICK REFERENCE — CHEAT SHEET
Concept Key Points Version
Lambda Functional interface impl, (args) -> body Java 8
Stream filter/map/reduce pipeline, lazy evaluation Java 8
Optional orElse(), orElseGet(), ifPresent() Java 8
var Local type inference only, not fields/params Java 10
Records Immutable data class, auto getters/equals/hashCode Java 16
Sealed Restrict permitted subclasses Java 17
Text Block """ multiline string, no escape needed """ Java 15
Virtual Thread [Link]().start(r), millions possible Java 21
switch expr switch(x) { case A -> val; } Java 14
Pattern match if (obj instanceof String s) { ... } Java 16
HttpClient [Link]().send(req, handler) Java 11
■ Tip: Focus on Java 8 features (Lambda, Streams, Optional) for interviews. Java 17 & 21 LTS features are increasingly
asked in senior roles. Practice coding on HackerRank, LeetCode, and build projects using Spring Boot. | codeNcompile —
200+ Hours • 4-5 Months