- OOP Principles: SOLID, DRY, KISS
- Generics, Lambda Expressions, Functional Interfaces
- Java Streams API (map/reduce, collectors)
- Java Collections Framework
- Java Reflection API
- Exception Handling (Checked/Unchecked)
- Thread Synchronization, Executors, Locks
- Fork/Join Framework
- Understanding of Race Conditions, Deadlocks, Thread Pools
- Concurrency Utilities:
java.util.concurrent
- Design Patterns: Singleton, Factory, Builder, etc.
- Architectural Patterns: MVC, Microservices, Event-Driven
- Dependency Injection (DI), Inversion of Control (IoC)
- Garbage Collectors: G1, CMS, ZGC
- JVM Heap & Stack Management
- Profiling Tools: JProfiler, VisualVM
- Debugging: Memory Leaks, Thread Dumps, Heap Dumps
- Custom Class Loaders
- Dynamic Class Loading
- Using Reflection for Runtime Manipulation
- Spring Core: DI, AOP
- Spring Boot: Auto-Configuration, Microservice Support
- Spring Security: OAuth2, JWT
- Spring Data: JPA, Hibernate Integration
- Spring Cloud: Netflix OSS, Circuit Breakers
- Service Discovery: Eureka, Consul
- Load Balancing, Distributed Tracing, Circuit Breaking
- API Gateway: Zuul, NGINX
- Asynchronous Communication: Kafka, RabbitMQ
- REST Principles and Best Practices
- JSON/XML Handling
- API Versioning
- OpenAPI/Swagger Documentation
- Blocking vs Non-Blocking I/O (NIO)
- Asynchronous I/O, Channels, Selectors
- File Handling, Serialization/Deserialization
- Project Reactor, RxJava
- Event-Driven Architecture, Backpressure
- Reactive Streams, Non-Blocking I/O
- ORM Principles & Entity Relationships
- Lazy vs Eager Loading
- Caching Strategies
- Query Optimization
- SQL Optimization, Indexing, Transactions
- NoSQL: MongoDB, Cassandra
- ACID Principles, CAP Theorem