Cheat Sheet
· 3 min read
Core Java Essentials
OOP Concepts
- Encapsulation, Inheritance, Polymorphism, Abstraction
abstract classvsinterface,finalkeyword- Overloading vs Overriding
Collections Quick Reference
ArrayListvsLinkedList(Random access vs insertion efficiency)HashMap(bucket-based, collisions via linked list/tree)SetvsListvsMap- Concurrent:
ConcurrentHashMap,CopyOnWriteArrayList
Streams & Lambdas
List<Integer> nums = Arrays.asList(1,2,3);
nums.stream().filter(n -> n%2==0).forEach(System.out::println);
- Intermediate vs Terminal operations
map,reduce,collect, parallel streams
Concurrency Utilities
synchronized,ReentrantLock,volatile,AtomicInteger- Executors: Thread pools (
Executors.newFixedThreadPool) CountDownLatch,CyclicBarrier,Semaphore,ThreadLocal
JVM & Memory
- Heap, Stack, Method Area, PC Register
- GC types: Minor, Major, G1, CMS
- References: Strong, Weak, Soft, Phantom
Design Patterns
- Singleton, Factory, Builder, Observer, Strategy, Template, Command, Facade, Prototype, Adapter
Advanced Java
- Reflection:
Class.forName(),Method.invoke() - Generics:
List<String> list - Optional:
Optional.ofNullable(x).ifPresent(...) - I/O & NIO:
Files.readAllLines(path) - Records:
record User(String name, int age){} - Pattern matching:
if(obj instanceof String s)
Spring Framework Essentials
Dependency Injection
- Constructor (preferred), Setter, Field
@Component,@Service,@Repository,@Controller- Bean scopes: singleton, prototype, request, session, application
AOP
- Cross-cutting: Logging, Transactions, Security
- Annotations:
@Aspect,@Before,@After,@Around
@Around("@annotation(LogExecutionTime)")
public Object logTime(ProceedingJoinPoint jp){...}
Spring MVC
@Controllervs@RestController- Validation:
@Valid,BindingResult - Exception handling:
@ControllerAdvice,@ExceptionHandler - Path variables:
@PathVariable, request params:@RequestParam
Spring Data JPA
- Repositories:
JpaRepository,CrudRepository - Custom queries:
@Query("SELECT u FROM User u WHERE u.age>:age") - Transactions:
@Transactional(propagation, isolation, readOnly) - Lazy vs Eager fetching, N+1 problem
Spring Security
- AuthenticationManager, UserDetailsService, PasswordEncoder
- JWT, OAuth2,
@PreAuthorizefor method-level security
Event-driven
ApplicationEventPublisher+@EventListener- Async events:
@Async+ TaskExecutor
Spring Boot & Microservices
Spring Boot Basics
- Auto-configuration, Starters, Profiles
@SpringBootApplication=@Configuration + @EnableAutoConfiguration + @ComponentScan
Actuator & Monitoring
- Endpoints:
/health,/metrics,/beans - Integration: Prometheus, Grafana
Testing
- Unit: JUnit + Mockito
- Integration:
@SpringBootTest - Web:
@WebMvcTest - Repository:
@DataJpaTest
REST API Best Practices
- HTTP verbs, resource-based URIs, versioning
- DTOs, centralized exception handling, pagination, sorting
Microservices
- Service discovery: Eureka
- Feign clients, circuit breakers (Resilience4J)
- Event-driven messaging: Kafka, RabbitMQ
- Stateless services, caching, configuration management
Security & Production
- JWT authentication, OAuth2
- Method-level authorization
- Thread pools, retries, rate-limiting, fallback strategies
- Logging, monitoring, metrics
Common Pitfalls & Interview Tips
- Avoid circular dependencies; use setter injection if necessary
- Lazy loading across services → DTOs or projections
- Always encode passwords; never trust client-side tokens
- Proper transactional boundaries; avoid self-invocation issues
- Isolate unit tests; use integration tests for end-to-end verification
- Use thread pools wisely; avoid unbounded threads
- Explain trade-offs in design: sync vs async, caching, DB fetch strategies