Java Interview Notes incorporate most critical topics discussed during Java technical interview round, along with the interview questions for each concept. This book also contains lots of code snippets and figures to explain matters.
Concepts in the book are organized in very precise and concise manner, in small chapters and are to the point.
CONTENT:
Java Fundamentals:
Java Program Anatomy
Java Program and JVM
Data Types
Naming Convention
Object class
Access Modifiers
static
final
static initialization block
finally()
finalize()
Widening vs Narrowing Conversion
getters and setters
varargs vs object array
default interface method
static interface method
Annotations
Preferences
Pass by value or reference
Object Oriented Programming:
Polymorphism
Parametric Polymorphism
Subtype Polymorphism
Overriding
@Override
Overloading
Abstraction
Inheritance
Composition
Fundamental Design Concepts :
DI vs IoC
Service Locator
Diamond Problem
Programming to Interface
Abstract class vs Interface
Internationalization and Localization
Immutable Objects
Cloning
Data Types :
NaN
EnumSet
Comparing Data Types
Float comparison
String comparison
Enum comparison
enum vs public static int field
Wrapper Classes
Auto boxing and Auto unboxing
BigInteger and BigDecimal
Strings :
String Immutability
String Literal vs Object
String Interning
String Pool Memory Management
Immutability - Security issue
Circumvent String immutability
StringBuffer vs StringBuilder
Unicode
Inner Classes:
Inner Classes
Static Member Nested Class
Local Inner Class
Non-Static Nested Class
Anonymous Inner Class
Functional Programming:
Lambda Expression
Functional Interface
Pure Functions
Fluent Interface
Generics :
Generics
Generics-Type Wildcards
Generics - Method
Java Generics vs Java Array
Generics - Type Erasure
Co-variance
Contra-variance
Co-variance vs Contra-variance
Collections :
Collection design aspects
Collection Fundamentals
Collection Interfaces
Collection Types
Set
List
Queue
Map
Algorithms
Comparable vs Comparator
hashCode() and equals()
HashTable vs HashMap
Synchronized vs Concurrent Collections
Iterating over collections
fail-fast vs fail-safe
Error and Exception:
Exception
Checked vs Unchecked vs Error
Exception Handling Best Practices
try-with-resource
Threading :
Threading Terms
Thread Lifecycle
Thread Termination
Runnable vs Thread
Runnable vs Callable
Daemon Thread
Race Condition and Immutable object
Thread Pool
Synchronization :
Concurrent vs Parallel vs Asynchronous
Thread Synchronization
Synchronized method vs Synchronized block
Conditional Synchronization
Volatile
static vs volatile vs synchronized
ThreadLocal Storage
wait() vs sleep()
Joining Thread
Atomic Classes
Lock
ReadWriteLock
Synchronizers
Barrier
Semaphore
Phaser
Exchanger
Latch
Executor Framework
Executor Service
Fork-Join Framework
Reflection :
Purpose of reflection
Drawbacks of Reflection
Data Interchange:
JSON
Memory Management:
Stack vs Heap
Heap fragmentation
Object Serialization
Garbage Collection
Memory Management
Weak vs Soft vs Phantom Reference
Unit Testing:
Why unit testing?
Unit vs Integration vs Regression vs Validation
Testing private members
Mocking and Mock Objects
Java Tools:
Git
Maven
Ant
Jenkins
Concepts in the book are organized in very precise and concise manner, in small chapters and are to the point.
CONTENT:
Java Fundamentals:
Java Program Anatomy
Java Program and JVM
Data Types
Naming Convention
Object class
Access Modifiers
static
final
static initialization block
finally()
finalize()
Widening vs Narrowing Conversion
getters and setters
varargs vs object array
default interface method
static interface method
Annotations
Preferences
Pass by value or reference
Object Oriented Programming:
Polymorphism
Parametric Polymorphism
Subtype Polymorphism
Overriding
@Override
Overloading
Abstraction
Inheritance
Composition
Fundamental Design Concepts :
DI vs IoC
Service Locator
Diamond Problem
Programming to Interface
Abstract class vs Interface
Internationalization and Localization
Immutable Objects
Cloning
Data Types :
NaN
EnumSet
Comparing Data Types
Float comparison
String comparison
Enum comparison
enum vs public static int field
Wrapper Classes
Auto boxing and Auto unboxing
BigInteger and BigDecimal
Strings :
String Immutability
String Literal vs Object
String Interning
String Pool Memory Management
Immutability - Security issue
Circumvent String immutability
StringBuffer vs StringBuilder
Unicode
Inner Classes:
Inner Classes
Static Member Nested Class
Local Inner Class
Non-Static Nested Class
Anonymous Inner Class
Functional Programming:
Lambda Expression
Functional Interface
Pure Functions
Fluent Interface
Generics :
Generics
Generics-Type Wildcards
Generics - Method
Java Generics vs Java Array
Generics - Type Erasure
Co-variance
Contra-variance
Co-variance vs Contra-variance
Collections :
Collection design aspects
Collection Fundamentals
Collection Interfaces
Collection Types
Set
List
Queue
Map
Algorithms
Comparable vs Comparator
hashCode() and equals()
HashTable vs HashMap
Synchronized vs Concurrent Collections
Iterating over collections
fail-fast vs fail-safe
Error and Exception:
Exception
Checked vs Unchecked vs Error
Exception Handling Best Practices
try-with-resource
Threading :
Threading Terms
Thread Lifecycle
Thread Termination
Runnable vs Thread
Runnable vs Callable
Daemon Thread
Race Condition and Immutable object
Thread Pool
Synchronization :
Concurrent vs Parallel vs Asynchronous
Thread Synchronization
Synchronized method vs Synchronized block
Conditional Synchronization
Volatile
static vs volatile vs synchronized
ThreadLocal Storage
wait() vs sleep()
Joining Thread
Atomic Classes
Lock
ReadWriteLock
Synchronizers
Barrier
Semaphore
Phaser
Exchanger
Latch
Executor Framework
Executor Service
Fork-Join Framework
Reflection :
Purpose of reflection
Drawbacks of Reflection
Data Interchange:
JSON
Memory Management:
Stack vs Heap
Heap fragmentation
Object Serialization
Garbage Collection
Memory Management
Weak vs Soft vs Phantom Reference
Unit Testing:
Why unit testing?
Unit vs Integration vs Regression vs Validation
Testing private members
Mocking and Mock Objects
Java Tools:
Git
Maven
Ant
Jenkins