Skip to main content

Cheat Sheet

· 3 min read

Core Java Essentials

OOP Concepts

  • Encapsulation, Inheritance, Polymorphism, Abstraction
  • abstract class vs interface, final keyword
  • Overloading vs Overriding

Collections Quick Reference

  • ArrayList vs LinkedList (Random access vs insertion efficiency)
  • HashMap (bucket-based, collisions via linked list/tree)
  • Set vs List vs Map
  • 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

  • @Controller vs @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, @PreAuthorize for 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