Part 1 (A): Spring Boot Core — Batch 1 (Q1–Q12)
Q1. What does @SpringBootApplication do?
Answer:
It’s a composite annotation that combines @Configuration,
@EnableAutoConfiguration, and @ComponentScan. This makes it the main
entry point for Spring Boot applications.
When you run your app via [Link](), Boot automatically scans
for components and triggers auto-configuration.
Code Example:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
[Link]([Link], args);
💡 Interview Insight:
Interviewers expect you to mention that @EnableAutoConfiguration drives
Boot’s “magic.” Bonus points if you mention that Boot looks at
[Link] in the JARs to determine configurations.
Q2. What is Auto-Configuration in Spring Boot?
Answer:
Auto-configuration automatically configures your application based on the
dependencies on your classpath.
It uses @Conditional annotations (like @ConditionalOnClass,
@ConditionalOnMissingBean) to decide which beans to load.
Code Example:
@Configuration
@ConditionalOnClass([Link])
public class DataSourceAutoConfiguration {
// Automatically configures a DataSource bean if on classpath
💡 Interview Insight:
Mention that auto-configuration is the key to Boot’s convention-over-
configuration philosophy. Senior interviewers often ask how to disable it —
@SpringBootApplication(exclude = [Link]).
Q3. What are Spring Boot Starters?
Answer:
Starters are curated dependency descriptors that simplify Maven or Gradle
configuration. Each starter brings in a set of dependencies to build a
particular type of application.
Code Example (Maven):
<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
💡 Interview Insight:
Explain that starters are opinionated, maintained by the Spring team, and
reduce version conflicts.
Q4. What is the SpringApplication class responsible for?
Answer:
SpringApplication bootstraps the Spring context. It:
1. Sets up the environment.
2. Creates and refreshes the ApplicationContext.
3. Loads configuration properties.
4. Starts the embedded server (if web app).
Code Example:
public static void main(String[] args) {
[Link]([Link], args);
💡 Interview Insight:
Mention that you can customize startup behavior via
SpringApplicationBuilder or listeners like ApplicationStartingEvent.
Q5. How do you enable different profiles in Spring Boot?
Answer:
Use [Link] in properties or command-line arguments to
specify which profile(s) to activate.
Code Example:
[Link]=dev
@Profile("dev")
@Component
public class DevDataSourceConfig {}
💡 Interview Insight:
Mention that you can define multiple profiles (comma-separated) and use
[Link] for layered configurations.
Q6. What’s the difference between [Link] and
[Link]?
Answer:
Both define configurations, but YAML allows a more hierarchical structure and
cleaner grouping.
Code Example:
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
💡 Interview Insight:
You’ll impress if you mention that .yml supports multiple documents using ---
(useful for multiple profiles in one file).
Q7. How does Spring Boot load externalized configurations?
Answer:
It follows a defined property source order, from highest to lowest
precedence:
1. Command-line arguments
2. Environment variables
3. [Link]/yml
4. @PropertySource annotations
5. Default values in code
💡 Interview Insight:
Senior interviewers expect you to mention EnvironmentPostProcessor for
custom config loading (like pulling secrets from Vault).
Q8. What’s the difference between @Component, @Service,
@Repository, and @Controller?
Answer:
They all register beans, but with semantic meaning:
@Component: Generic bean
@Service: Business logic
@Repository: Data access layer (adds exception translation)
@Controller: MVC Controller
💡 Interview Insight:
Mention that the distinction helps in AOP and stereotype scanning.
Q9. How do you customize the banner in Spring Boot?
Answer:
Add a [Link] or [Link] in src/main/resources.
Code Example ([Link]):
Welcome to MyApp!
💡 Interview Insight:
Mention [Link]-mode=off disables it, and you can use
placeholders like ${[Link]} in banners.
Q10. How can you run code on startup in Spring Boot?
Answer:
Implement CommandLineRunner or ApplicationRunner.
Code Example:
@Component
public class StartupRunner implements CommandLineRunner {
public void run(String... args) {
[Link]("App started!");
💡 Interview Insight:
Explain difference: ApplicationRunner gives you access to
ApplicationArguments for structured argument handling.
Q11. What is the role of @Configuration and @Bean?
Answer:
@Configuration marks a class for bean definitions; @Bean defines a bean
inside it.
Code Example:
@Configuration
public class MyConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
💡 Interview Insight:
Mention that @Configuration classes are subclassed using CGLIB to handle
inter-bean dependencies correctly.
Q12. What is the Spring Boot DevTools module used for?
Answer:
It provides developer conveniences like automatic restart, live reload, and
property overrides during development.
💡 Interview Insight:
Interviewers might ask how to disable restarts for large projects — mention
[Link]=false.
🧩 Part 1 (A): Spring Boot Core — Batch 2 (Q13–Q25)
Q13. What are conditional beans in Spring Boot?
Answer:
Conditional beans allow a bean to be created only if certain conditions are
met, like a property value, class presence, or missing bean.
Code Example:
@Bean
@ConditionalOnProperty(name = "[Link]", havingValue = "true")
public FeatureService featureService() {
return new FeatureServiceImpl();
💡 Interview Insight:
Senior candidates should mention @ConditionalOnClass,
@ConditionalOnMissingBean, and that these annotations help build modular,
environment-specific configurations.
Q14. What is the difference between @ConditionalOnProperty and
@Profile?
Answer:
@ConditionalOnProperty checks a property value to conditionally
register a bean.
@Profile activates beans based on active Spring profiles.
💡 Interview Insight:
They may ask how you’d combine them to create multi-environment
features. Example: @Profile("dev") +
@ConditionalOnProperty("[Link]").
Q15. How do you listen to Spring Boot application events?
Answer:
Use @EventListener or implement ApplicationListener<T>.
Code Example:
@Component
public class StartupListener {
@EventListener
public void handleContextRefreshed(ContextRefreshedEvent event) {
[Link]("Context refreshed!");
💡 Interview Insight:
Senior follow-up: can events be asynchronous? Answer: yes, add @Async and
enable async support.
Q16. What is the difference between ApplicationReadyEvent and
ContextRefreshedEvent?
Answer:
ContextRefreshedEvent fires after ApplicationContext is initialized or
refreshed.
ApplicationReadyEvent fires after all beans are loaded and the
application is ready to service requests.
💡 Interview Insight:
Mention that ApplicationReadyEvent is the last event during startup, useful
for warm-up tasks.
Q17. What is Environment in Spring Boot?
Answer:
Environment abstracts property sources and profiles. You can access
property values and check active profiles programmatically.
Code Example:
@Autowired
private Environment env;
public void logPort() {
[Link]([Link]("[Link]"));
💡 Interview Insight:
Advanced: explain MutablePropertySources and adding custom sources at
runtime.
Q18. How do you inject configuration properties using @Value vs
@ConfigurationProperties?
Answer:
@Value injects single property values.
@ConfigurationProperties binds multiple related properties into a POJO.
Code Example:
@Component
@ConfigurationProperties(prefix = "app")
public class AppConfig {
private String name;
private int timeout;
// getters and setters
💡 Interview Insight:
Use @ConfigurationProperties for structured config and validation, @Value
for simple injections.
Q19. How do you manage the lifecycle of beans in Spring Boot?
Answer:
@PostConstruct / @PreDestroy
Implement InitializingBean / DisposableBean
Use SmartLifecycle for advanced startup/shutdown sequencing.
💡 Interview Insight:
Mention differences between afterPropertiesSet() and @PostConstruct, and
when you might need SmartLifecycle for ordered startup.
Q20. How do you handle graceful shutdown in Spring Boot?
Answer:
Enable graceful shutdown in [Link]:
[Link]=graceful
[Link]-per-shutdown-phase=30s
Boot waits for active requests to finish before closing.
💡 Interview Insight:
Tie this into Kubernetes SIGTERM handling for production deployments.
Q21. How do you enable logging in Spring Boot?
Answer:
Spring Boot uses Logback by default. You can configure via
[Link] or [Link].
Code Example:
[Link]=INFO
[Link]=DEBUG
[Link]=[Link]
💡 Interview Insight:
Senior interviewers may ask how to configure different logging for dev vs
prod or external logging appenders.
Q22. What is the Spring Boot Actuator?
Answer:
Actuator provides production-ready endpoints for monitoring, metrics, and
health checks.
Code Example (Maven dependency):
<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
💡 Interview Insight:
Mention endpoints like /actuator/health, /metrics, and how to secure them.
Q23. How can you add custom metrics to Actuator?
Answer:
Use Micrometer’s MeterRegistry to create counters, timers, and gauges.
Code Example:
@Component
public class OrderMetrics {
public OrderMetrics(MeterRegistry registry) {
[Link]("[Link]")
.description("Number of orders created")
.register(registry);
💡 Interview Insight:
Show you know how to integrate with Prometheus, Datadog, or other
monitoring systems.
Q24. What is the difference between CommandLineRunner and
ApplicationRunner?
Answer:
CommandLineRunner provides String[] args.
ApplicationRunner provides ApplicationArguments (access to named
options and non-option args).
💡 Interview Insight:
Explain that ApplicationRunner is better for structured argument processing
and is more flexible in production apps.
Q25. How do you customize the Spring Boot startup sequence?
Answer:
You can customize using:
SpringApplicationBuilder
Custom initializers (ApplicationContextInitializer)
Listeners (ApplicationListener)
Banner mode and lazy initialization
Code Example:
SpringApplication app = new SpringApplication([Link]);
[Link]([Link]);
[Link](true);
[Link](new MyInitializer());
[Link](args);
💡 Interview Insight:
Interviewers may ask how you control startup order in large applications with
multiple contexts and modules.
🧩 Part 1 (B): Spring Boot Core — Bonus Section
Senior-Level Behavioral / Situational Questions
Q26. Describe a time you optimized a Spring Boot microservice for
performance.
Answer:
Identify bottlenecks using profiling tools (VisualVM, JProfiler,
Micrometer metrics).
Optimize queries (avoid N+1 in JPA).
Use caching (Spring Cache, Redis).
Optimize thread pools for async processing.
💡 Interview Insight:
Interviewer expects you to explain measurable improvements (latency
reduction, throughput increase) and decisions behind caching, async tasks,
or DB optimization.
Q27. How have you handled a critical production issue in a Spring
Boot application?
Answer:
Quickly identify root cause using logs, metrics, and APM.
Rollback deployment if necessary.
Apply hotfix or feature flag to mitigate issue.
Conduct post-mortem and implement preventive measures
(monitoring, circuit breakers).
💡 Interview Insight:
Emphasize problem-solving, ownership, and communication with
stakeholders.
Q28. Explain a design decision you made that improved the
scalability of a Spring Boot system.
Answer:
Introduced horizontal scaling with stateless services.
Added load balancing with Spring Cloud / Ribbon.
Applied caching layers for frequently accessed data.
Optimized database access patterns with pagination and indexing.
💡 Interview Insight:
Show that you can reason about scalability trade-offs: stateless vs stateful,
sync vs async processing, and when to use queues or caching.
Q29. How do you decide between synchronous and asynchronous
processing in Spring Boot?
Answer:
Use synchronous for quick, sequential tasks where immediate response
is needed.
Use @Async or message queues (Kafka, RabbitMQ) for long-running
tasks.
Consider system load, fault tolerance, and response time SLAs.
💡 Interview Insight:
Highlight decision-making process — why async was chosen, how failures are
handled, and how you monitor background tasks.
Q30. Describe a time you refactored a Spring Boot service to
improve maintainability.
Answer:
Split a monolithic service into smaller, single-responsibility
components.
Extracted reusable configurations, services, and DTOs.
Introduced proper exception handling, logging, and consistent naming
conventions.
💡 Interview Insight:
Demonstrates clean code practices, modularity, and leadership in improving
existing systems.
🧩 Part 1 (A + B): Advanced Core — Q31–Q50
Q31. How do you secure a Spring Boot application with Spring
Security?
Answer:
Add spring-boot-starter-security dependency
Configure authentication and authorization via
WebSecurityConfigurerAdapter or the new SecurityFilterChain
Code Example:
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> [Link]().authenticated())
.formLogin();
return [Link]();
}
💡 Interview Insight:
Senior-level: Mention password encoding (BCryptPasswordEncoder), method-
level security (@PreAuthorize), and JWT token integration.
Q32. How do you implement global exception handling in Spring
Boot?
Answer:
Use @ControllerAdvice with @ExceptionHandler to handle exceptions across
controllers.
Code Example:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler([Link])
public ResponseEntity<String>
handleNotFound(ResourceNotFoundException ex) {
return
[Link](HttpStatus.NOT_FOUND).body([Link]());
💡 Interview Insight:
Interviewers want to see clean separation of concerns and consistent error
response format.
Q33. What is Spring Boot Actuator and how do you secure its
endpoints?
Answer:
Actuator provides endpoints like /actuator/health, /metrics, /env.
Secure endpoints via properties or Spring Security configuration.
Code Example:
[Link]=health,info
[Link]-details=always
💡 Interview Insight:
Mention using role-based access for sensitive endpoints in production.
Q34. How do you enable reactive programming in Spring Boot?
Answer:
Use spring-boot-starter-webflux and reactive types (Mono, Flux) from Project
Reactor.
Code Example:
@RestController
public class ReactiveController {
@GetMapping("/numbers")
public Flux<Integer> numbers() {
return [Link](1, 10);
💡 Interview Insight:
Explain the difference between blocking (MVC) and non-blocking (WebFlux)
approaches.
Q35. How do you implement content negotiation in Spring Boot?
Answer:
Spring Boot supports content negotiation via HTTP headers, URL extensions,
or query parameters.
Code Example:
@GetMapping(value = "/data", produces =
{MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE})
public Data getData() { ... }
💡 Interview Insight:
Senior interviews may ask about custom converters and handling multiple
media types.
Q36. How do you handle cross-origin requests (CORS) in Spring
Boot?
Answer:
Use @CrossOrigin annotation or global configuration via WebMvcConfigurer.
Code Example:
@Override
public void addCorsMappings(CorsRegistry registry) {
[Link]("/**").allowedOrigins("[Link]
💡 Interview Insight:
Explain difference between method-level vs global configuration and pre-
flight requests.
Q37. How do you implement request/response logging in Spring
Boot?
Answer:
Use filters or interceptors to log request and response data.
Code Example:
@Component
public class LoggingFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
[Link]("Request URI: " + ((HttpServletRequest)
request).getRequestURI());
[Link](request, response);
}
💡 Interview Insight:
Senior-level: Mention using AOP or OncePerRequestFilter for better control
and performance.
Q38. How do you implement versioning for REST APIs in Spring
Boot?
Answer:
Use URL versioning, request parameters, headers, or content negotiation.
Code Example:
@GetMapping("/v1/users")
public List<User> getUsersV1() { ... }
@GetMapping("/v2/users")
public List<UserDto> getUsersV2() { ... }
💡 Interview Insight:
Interviewers like discussion of backward compatibility, DTO mapping, and
deprecation strategies.
Q39. How do you integrate Spring Boot with OAuth2 / JWT?
Answer:
Add spring-boot-starter-oauth2-resource-server
Configure JWT decoder and security filters
Code Example:
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt);
return [Link]();
}
💡 Interview Insight:
Senior interviews may ask about token refresh, scopes, and custom claims.
Q40. How do you implement rate limiting in Spring Boot?
Answer:
Use libraries like Bucket4j or Resilience4j
Apply filters or interceptors
Code Example:
// Pseudocode
Bucket bucket = [Link]().addLimit(...).build();
if([Link](1)) { [Link](...) }
else { rejectRequest(); }
💡 Interview Insight:
Explain throttling strategies, distributed vs local, and handling burst traffic.
Q41. How do you implement health checks and readiness/liveness
probes for Kubernetes?
Answer:
Actuator provides /actuator/health
Define custom health indicators by implementing HealthIndicator
Code Example:
@Component
public class DatabaseHealth implements HealthIndicator {
public Health health() {
return checkDbConnection() ? [Link]().build() :
[Link]().build();
}
}
💡 Interview Insight:
Interviewers may ask how readiness probes differ from liveness probes in
microservices.
Q42. How do you configure asynchronous methods in Spring Boot?
Answer:
Use @EnableAsync and @Async annotations.
Code Example:
@Async
public CompletableFuture<String> processAsync() { ... }
💡 Interview Insight:
Mention thread pool customization and exception handling in async tasks.
Q43. How do you handle file uploads and downloads?
Answer:
Use MultipartFile for uploads
Use ResponseEntity<Resource> for downloads
Code Example:
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) { ... }
💡 Interview Insight:
Discuss large file handling, streaming, and storage strategies.
Q44. How do you implement global filters for logging, security, or
metrics?
Answer:
Implement Filter or HandlerInterceptor
Register via @Component or FilterRegistrationBean
💡 Interview Insight:
Senior candidates should explain order of filters and performance impact.
Q45. How do you handle exception translation in Spring Data JPA?
Answer:
Spring converts persistence exceptions into DataAccessException
hierarchy
Use @Repository annotation to enable automatic translation
💡 Interview Insight:
Mention checked vs unchecked exception conversion and when to handle
low-level exceptions.
Q46. How do you implement caching in Spring Boot applications?
Answer:
Use @EnableCaching
Annotate service methods with @Cacheable, @CachePut, @CacheEvict
Code Example:
@Cacheable("users")
public User findUserById(Long id) { ... }
💡 Interview Insight:
Discuss cache invalidation, TTL, and distributed caching (Redis, Hazelcast).
Q47. How do you implement circuit breaker patterns?
Answer:
Use Resilience4j or Spring Cloud CircuitBreaker
Protect services from cascading failures
Code Example:
@CircuitBreaker(name = "inventoryService", fallbackMethod = "fallback")
public Inventory getInventory() { ... }
💡 Interview Insight:
Senior-level: explain metrics, fallback strategies, and integration with
monitoring dashboards.
Q48. How do you implement request validation in Spring Boot?
Answer:
Use @Valid and @Validated annotations
Define constraints with [Link]
Code Example:
@PostMapping("/users")
public void createUser(@Valid @RequestBody User user) { ... }
💡 Interview Insight:
Mention global exception handling for MethodArgumentNotValidException.
Q49. How do you implement internationalization (i18n) in Spring
Boot?
Answer:
Define [Link] files
Configure LocaleResolver
Use MessageSource in controllers/services
Code Example:
@Autowired
private MessageSource messageSource;
String msg = [Link]("welcome", null, locale);
💡 Interview Insight:
Explain switching locales dynamically and supporting multiple languages in
APIs.
Q50. How do you implement global application monitoring and
metrics?
Answer:
Use Spring Boot Actuator, Micrometer
Export metrics to Prometheus, Grafana
Monitor JVM, DB, and custom application metrics
Code Example:
@Autowired
private MeterRegistry registry;
Counter counter = [Link]("[Link]").register(registry);
💡 Interview Insight:
Senior interviewers want insight into proactive monitoring, alerting, and
performance analysis strategies.
🧩 Part 2: Spring Data JPA & Hibernate — Batch 1 (Q51–Q75)
Q51. What is Spring Data JPA?
Answer:
Spring Data JPA simplifies data access by providing repository abstractions
on top of JPA. It allows CRUD operations, query methods, and pagination
without boilerplate code.
Code Example:
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByLastName(String lastName);
💡 Interview Insight:
Senior candidates should mention how Spring Data JPA integrates with
Hibernate and supports custom queries, pagination, and projections.
Q52. What are the main interfaces in Spring Data JPA?
Answer:
CrudRepository — basic CRUD operations
PagingAndSortingRepository — adds pagination and sorting
JpaRepository — extends the above, adds JPA-specific methods
💡 Interview Insight:
Explain why JpaRepository is often used for advanced enterprise applications.
Q53. What is the difference between @Entity and @Table
annotations?
Answer:
@Entity marks a class as a JPA entity.
@Table specifies the table name and schema in the database.
Code Example:
@Entity
@Table(name = "users")
public class User {
@Id
private Long id;
private String firstName;
private String lastName;
💡 Interview Insight:
Interviewers may ask about default naming strategies and schema mapping.
Q54. What is the difference between @OneToOne, @OneToMany,
@ManyToOne, and @ManyToMany?
Answer:
These annotations define entity relationships:
@OneToOne: Single reference between two entities
@OneToMany: One entity to multiple entities
@ManyToOne: Multiple entities point to one entity
@ManyToMany: Multiple entities relate to multiple entities
💡 Interview Insight:
Be ready to explain fetch types (EAGER vs LAZY) and cascading options.
Q55. How do you configure fetch types in JPA?
Answer:
@OneToMany(fetch = [Link], cascade = [Link])
private List<Order> orders;
💡 Interview Insight:
Senior interviews often focus on N+1 query problems and how to optimize
fetch strategies.
Q56. How do you define a composite primary key in JPA?
Answer:
Use @Embeddable and @EmbeddedId.
Code Example:
@Embeddable
public class OrderId implements Serializable {
private Long orderNumber;
private Long productId;
@Entity
public class Order {
@EmbeddedId
private OrderId id;
💡 Interview Insight:
Be ready to explain equals/hashCode implementations in embedded keys.
Q57. How do you write custom queries in Spring Data JPA?
Answer:
Using @Query annotation with JPQL or native SQL
Method naming convention (query derivation)
Code Example:
@Query("SELECT u FROM User u WHERE [Link] = ?1")
User findByEmail(String email);
💡 Interview Insight:
Mention parameter binding (?1 vs :email) and when to prefer native queries.
Q58. What is the difference between save() and saveAndFlush()?
Answer:
save(): persists the entity but may defer flushing
saveAndFlush(): persists and immediately flushes changes to the
database
💡 Interview Insight:
Good to mention implications on transaction boundaries and auto-commit
behavior.
Q59. How do you implement pagination and sorting?
Answer:
Pageable pageable = [Link](0, 10,
[Link]("lastName").ascending());
Page<User> page = [Link](pageable);
💡 Interview Insight:
Senior interviews may ask about performance implications of large datasets
and optimizing queries.
Q60. How do you manage transactions in Spring Boot?
Answer:
Use @Transactional at class or method level.
Code Example:
@Service
@Transactional
public class UserService {
public void createUser(User user) { ... }
💡 Interview Insight:
Explain propagation, isolation levels, and rollback behavior for advanced
interviews.
Q61. Difference between EntityManager and JpaRepository?
Answer:
JpaRepository provides high-level CRUD abstraction
EntityManager provides low-level API for queries, batch operations, and
fine-grained control
💡 Interview Insight:
Senior developers should know when to use one over the other for
performance tuning.
Q62. What is the difference between @Transactional(readOnly=true)
and default transaction?
Answer:
readOnly=true hints the persistence provider to optimize for read
operations.
Default is read-write, allows insert/update/delete.
💡 Interview Insight:
Important for large read-heavy services; may reduce locking and flush
behavior.
Q63. How do you implement optimistic locking?
Answer:
Use @Version annotation.
Code Example:
@Version
private Long version;
💡 Interview Insight:
Interviewers want to see awareness of concurrency issues and how optimistic
locking prevents lost updates.
Q64. How do you implement pessimistic locking?
Answer:
Use @Lock(LockModeType.PESSIMISTIC_WRITE) on queries or
[Link]().
💡 Interview Insight:
Senior candidates should mention performance impact and deadlock
considerations.
Q65. How do you map enums in JPA?
Answer:
@Enumerated([Link])
private Status status;
💡 Interview Insight:
Explain difference between ORDINAL and STRING mapping — using STRING
is safer for DB schema changes.
Q66. How do you handle lazy loading exceptions?
Answer:
Fetch data within transactional context
Use JOIN FETCH in queries
Use @Transactional on service methods
💡 Interview Insight:
Be ready to explain LazyInitializationException and ways to avoid it in real
apps.
Q67. How do you batch insert/update efficiently?
Answer:
Use saveAll() or [Link]() in batches
Configure Hibernate batching:
[Link].batch_size=50
💡 Interview Insight:
Interviewers may ask for performance metrics and memory usage
considerations.
Q68. How do you map one-to-many relationships with join tables?
Answer:
@ManyToMany
@JoinTable(
name = "user_roles",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "role_id")
private Set<Role> roles;
💡 Interview Insight:
Highlight cascade, fetch type, and performance trade-offs.
Q69. How do you handle database migrations in Spring Boot?
Answer:
Use Flyway or Liquibase for versioned schema migrations.
Code Example:
[Link]=true
[Link]=classpath:db/migration
💡 Interview Insight:
Explain rollback strategies, repeatable scripts, and CI/CD integration.
Q70. How do you use projections in Spring Data JPA?
Answer:
Projections allow selecting partial entity data.
Code Example:
public interface UserNameOnly {
String getFirstName();
String getLastName();
List<UserNameOnly> findByLastName(String lastName);
💡 Interview Insight:
Good for reducing payload size and improving query performance.
Q71. What are native queries and when to use them?
Answer:
Native queries are raw SQL queries using @Query(nativeQuery = true)
Useful for complex queries not easily expressed in JPQL
💡 Interview Insight:
Explain trade-offs: DB portability vs performance optimization.
Q72. How do you handle soft deletes in JPA?
Answer:
Add a deleted flag and filter queries using @Where (Hibernate) or global
filters.
Code Example:
@Where(clause="deleted=false")
@Entity
public class User { ... }
💡 Interview Insight:
Senior candidates should mention pros/cons: auditability vs query
complexity.
Q73. How do you integrate Spring Data JPA with caching?
Answer:
Use Spring Cache annotations (@Cacheable, @CacheEvict) on
repository/service methods.
Code Example:
@Cacheable("users")
public User findById(Long id) { ... }
💡 Interview Insight:
Highlight cache invalidation strategies and impact on transactional
consistency.
Q74. How do you monitor JPA performance in production?
Answer:
Enable SQL logging: [Link]-sql=true
Use hibernate.format_sql and hibernate.generate_statistics
Integrate APM tools (New Relic, AppDynamics)
Monitor slow queries and N+1 problems
💡 Interview Insight:
Senior-level: discuss metrics, dashboards, and alerting.
Q75. How do you handle complex relationships in large enterprise
schemas?
Answer:
Normalize entities and use DTOs for data transfer
Avoid deep nested relationships in queries
Use JOIN FETCH, batch fetching, or projections
Consider read-only views for reporting
💡 Interview Insight:
Demonstrates architectural thinking and real-world experience.
🧩 Part 2 — Batch 2: Q76–Q100
Q76. How do you implement second-level caching in Hibernate?
Answer:
Hibernate’s second-level cache stores entities across sessions. You can use
EhCache, Redis, or Infinispan.
Code Example:
@Entity
@Cacheable
@[Link](usage =
CacheConcurrencyStrategy.READ_WRITE)
public class Product { ... }
💡 Interview Insight:
Explain first-level vs second-level cache, cache invalidation, and performance
benefits.
Q77. What is query caching in Hibernate?
Answer:
Query caching stores query result sets to improve repeated query
performance.
Code Example:
Query query = [Link]("FROM Product");
[Link](true);
List<Product> products = [Link]();
💡 Interview Insight:
Senior interviews may ask about proper use — only use for read-mostly data.
Q78. How do you audit entity changes in Hibernate?
Answer:
Use Hibernate Envers or implement @EntityListeners to track
create/update/delete operations.
Code Example:
@Audited
@Entity
public class Order { ... }
💡 Interview Insight:
Interviewers want insight into historical data tracking and compliance
strategies.
Q79. How do you implement soft deletes with Hibernate filters?
Answer:
Use a boolean flag (deleted) and Hibernate @Filter annotations.
Code Example:
@FilterDef(name = "deletedFilter", defaultCondition = "deleted = false")
@Filter(name = "deletedFilter")
@Entity
public class User { ... }
💡 Interview Insight:
Explain trade-offs between soft delete, audit, and query complexity.
Q80. How do you implement optimistic locking in Hibernate?
Answer:
Use @Version field to manage concurrent updates.
Code Example:
@Version
private Long version;
💡 Interview Insight:
Explain handling OptimisticLockException and its use in high-concurrency
applications.
Q81. How do you implement pessimistic locking in Hibernate?
Answer:
Use LockModeType.PESSIMISTIC_WRITE with [Link]() or @Lock
on queries.
💡 Interview Insight:
Senior interviews may focus on deadlock handling and performance impact.
Q82. How do you batch insert/update/delete operations?
Answer:
Use saveAll() or [Link]() in loops
Configure Hibernate batching:
[Link].batch_size=50
💡 Interview Insight:
Mention performance optimization, memory footprint, and transaction size.
Q83. How do you prevent N+1 query problems in Hibernate?
Answer:
Use JOIN FETCH in JPQL
Configure batch fetching with @BatchSize
Consider EntityGraph for fine-grained fetch control
💡 Interview Insight:
Explain trade-offs between eager/lazy loading and query performance.
Q84. How do you map complex relationships (e.g., many-to-many
with extra columns)?
Answer:
Use a join entity to represent the relationship.
Code Example:
@Entity
public class UserRole {
@EmbeddedId
private UserRoleId id;
private LocalDate assignedDate;
}
💡 Interview Insight:
Senior interviews may focus on normalization, query performance, and
cascading rules.
Q85. How do you implement auditing with @CreatedDate and
@LastModifiedDate?
Answer:
Enable JPA auditing and annotate entity fields.
Code Example:
@EnableJpaAuditing
@Entity
@EntityListeners([Link])
public class Product {
@CreatedDate private LocalDateTime createdAt;
@LastModifiedDate private LocalDateTime updatedAt;
💡 Interview Insight:
Explain timezone handling and automatic population of auditing fields.
Q86. How do you handle native SQL queries in Spring Data JPA?
Answer:
Use @Query(nativeQuery = true).
Code Example:
@Query(value = "SELECT * FROM product WHERE price > ?1", nativeQuery =
true)
List<Product> findExpensiveProducts(double price);
💡 Interview Insight:
Discuss trade-offs between portability (JPQL) and performance (native SQL).
Q87. How do you implement pagination with native queries?
Answer:
Use Pageable in repository methods or setFirstResult()/setMaxResults() in
EntityManager.
💡 Interview Insight:
Senior interviews may focus on database-level optimization for large
datasets.
Q88. How do you implement projections in Spring Data JPA?
Answer:
Use interface-based projections or DTO projections.
Code Example:
public interface UserNameOnly {
String getFirstName();
String getLastName();
List<UserNameOnly> findByLastName(String lastName);
💡 Interview Insight:
Explain performance benefits: selecting only needed columns reduces
payload and memory usage.
Q89. How do you manage transactions programmatically?
Answer:
Use PlatformTransactionManager and TransactionTemplate.
Code Example:
[Link](status -> {
// transactional code
return result;
});
💡 Interview Insight:
Senior-level candidates should contrast declarative vs programmatic
transactions.
Q90. How do you handle cascading operations in JPA?
Answer:
Use cascade = [Link] (or specific types) in relationships.
Code Example:
@OneToMany(cascade = [Link])
private List<Order> orders;
💡 Interview Insight:
Explain how cascade affects persistence, merging, and removal operations.
Q91. How do you implement custom repository methods?
Answer:
Extend repository with a custom interface
Implement the interface manually
Code Example:
public interface UserRepositoryCustom {
List<User> findActiveUsers();
public class UserRepositoryImpl implements UserRepositoryCustom {
@PersistenceContext
private EntityManager em;
public List<User> findActiveUsers() { ... }
}
💡 Interview Insight:
Explain how Spring combines UserRepository and UserRepositoryImpl.
Q92. How do you use EntityGraph to optimize queries?
Answer:
Define entity graph to fetch related entities efficiently.
Code Example:
@EntityGraph(attributePaths = {"orders"})
List<User> findAll();
💡 Interview Insight:
Senior-level: explain reducing N+1 problem without changing entity fetch
type.
Q93. How do you handle large result sets efficiently?
Answer:
Use streaming queries (Stream<T> in Spring Data JPA)
Paginate results
Use StatelessSession in Hibernate for batch processing
💡 Interview Insight:
Explain memory efficiency and transaction management for large datasets.
Q94. How do you integrate JPA with Redis caching?
Answer:
Use Spring Cache abstraction
Annotate repository/service methods with @Cacheable
Code Example:
@Cacheable("products")
public Product findById(Long id) { ... }
💡 Interview Insight:
Explain cache eviction, TTL, and distributed caching strategies.
Q95. How do you handle concurrency in JPA?
Answer:
Optimistic locking (@Version)
Pessimistic locking (LockModeType)
Database isolation levels
💡 Interview Insight:
Discuss use cases for each strategy and impact on performance.
Q96. How do you implement soft deletes with Spring Data JPA?
Answer:
Add deleted boolean flag
Filter queries using @Where or repository methods
💡 Interview Insight:
Explain trade-offs between query complexity and data retention.
Q97. How do you use Criteria API for dynamic queries?
Answer:
Use CriteriaBuilder and CriteriaQuery for type-safe dynamic queries
Code Example:
CriteriaBuilder cb = [Link]();
CriteriaQuery<User> cq = [Link]([Link]);
Root<User> root = [Link]([Link]);
[Link](root).where([Link]([Link]("active"), true));
List<User> users = [Link](cq).getResultList();
💡 Interview Insight:
Senior-level: explain advantages of type-safety and complex query
construction.
Q98. How do you audit entity changes with custom fields?
Answer:
Use @PrePersist and @PreUpdate callbacks
Or Hibernate Envers for automatic auditing
Code Example:
@PreUpdate
public void setUpdatedAt() {
[Link] = [Link]();
💡 Interview Insight:
Show understanding of custom vs automated auditing and transactional
consistency.
Q99. How do you handle multi-tenancy in Hibernate?
Answer:
Use schema-based, database-based, or discriminator-based multi-
tenancy
Configure MultiTenantConnectionProvider and
CurrentTenantIdentifierResolver
💡 Interview Insight:
Senior interviews may focus on strategies, scalability, and security
implications.
Q100. How do you optimize Hibernate performance for enterprise
applications?
Answer:
Enable second-level and query caching
Use batch fetching and pagination
Avoid N+1 queries
Tune flush mode and session management
Monitor SQL queries and indexes
💡 Interview Insight:
Interviewers want to see holistic understanding: caching, query optimization,
memory management, and profiling tools.
🧩 Part 3 — Batch 1: Spring Security (Q101–Q125)
Q101. What is Spring Security and why is it important?
Answer:
Spring Security is a framework for authentication, authorization, and
protection against common security attacks in Java applications.
💡 Interview Insight:
Senior candidates should mention its integration with Spring Boot and its
support for OAuth2, JWT, and method-level security.
Q102. How do you configure form-based authentication in Spring
Boot?
Code Example:
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
[Link](auth -> [Link]().authenticated())
.formLogin();
return [Link]();
}
💡 Interview Insight:
Explain default login page, password encoding, and customization options.
Q103. How do you implement JWT-based authentication?
Answer:
Generate JWT token after login
Include token in Authorization header for subsequent requests
Validate JWT in a filter
Code Example (filter snippet):
String token = [Link]("Authorization").substring(7);
if([Link](token)) { /* set authentication */ }
💡 Interview Insight:
Discuss stateless authentication, token expiration, and refresh tokens.
Q104. How do you implement role-based access control?
Code Example:
[Link](auth ->
[Link]("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
);
💡 Interview Insight:
Senior-level: Explain ROLE_ prefix, method-level security (@PreAuthorize),
and hierarchical roles.
Q105. How do you implement OAuth2 with Spring Boot?
Answer:
Use spring-boot-starter-oauth2-client or spring-boot-starter-oauth2-resource-
server.
Code Example:
http.oauth2Login();
💡 Interview Insight:
Be ready to discuss authorization code flow, client credentials, and JWT
integration.
Q106. How do you secure REST APIs with Spring Security?
Answer:
Use JWT tokens
Apply SecurityFilterChain configuration
Protect endpoints with roles and authorities
💡 Interview Insight:
Senior candidates should explain stateless security, CSRF handling, and
exception handling.
Q107. How do you handle password encryption?
Code Example:
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
💡 Interview Insight:
Explain why BCrypt is preferred over MD5/SHA and how it protects against
brute-force attacks.
Q108. How do you implement method-level security?
Code Example:
@PreAuthorize("hasRole('ADMIN')")
public void deleteUser(Long id) { ... }
💡 Interview Insight:
Mention @EnableGlobalMethodSecurity(prePostEnabled = true).
Q109. How do you configure CSRF protection in Spring Boot?
Answer:
Enabled by default for web apps
Can be disabled for stateless REST APIs
Code Example:
[Link]().disable();
💡 Interview Insight:
Senior-level: Explain CSRF attack mechanism and why it’s unnecessary for
stateless JWT APIs.
Q110. How do you implement CORS in a secure way?
Answer:
Define allowed origins and methods in CorsConfiguration or
@CrossOrigin
💡 Interview Insight:
Explain risks of * in production and pre-flight requests.
Q111. How do you handle authentication exceptions globally?
Answer:
Implement AuthenticationEntryPoint
Handle AccessDeniedException via @ControllerAdvice
💡 Interview Insight:
Discuss providing meaningful messages and avoiding information leaks.
Q112. How do you implement JWT refresh tokens?
Answer:
Issue a long-lived refresh token alongside short-lived access token
Validate refresh token to issue new access token
💡 Interview Insight:
Senior interviews may ask about storing refresh tokens securely (DB or in-
memory).
Q113. How do you implement multi-factor authentication?
Answer:
After password verification, send OTP/email or push notification
Verify OTP before granting full authentication
💡 Interview Insight:
Discuss integrating third-party providers or custom OTP services.
Q114. How do you integrate Spring Security with OAuth2 providers
like Google or GitHub?
Code Example:
[Link]-id=...
[Link]-secret=...
💡 Interview Insight:
Senior-level: explain redirect URIs, scopes, and token handling.
Q115. How do you implement token revocation?
Answer:
Maintain a token blacklist in DB or cache
Reject blacklisted tokens during validation
💡 Interview Insight:
Discuss stateless vs stateful strategies and scaling considerations.
Q116. How do you implement authorization with scopes and
authorities?
Answer:
Use @PreAuthorize("hasAuthority('SCOPE_read')")
Configure OAuth2 scopes mapping to authorities
💡 Interview Insight:
Explain difference between roles and authorities and mapping in JWT claims.
Q117. How do you secure method parameters or DTOs?
Answer:
Use @Validated and custom validators
Combine with method-level security annotations
💡 Interview Insight:
Senior-level: show knowledge of end-to-end validation and preventing mass
assignment attacks.
Q118. How do you implement single sign-on (SSO) with Spring Boot?
Answer:
Integrate OAuth2/OIDC provider (e.g., Keycloak, Okta)
Configure redirect URIs, client credentials, and scopes
💡 Interview Insight:
Explain token management, logout propagation, and session handling.
Q119. How do you implement dynamic permissions in Spring
Security?
Answer:
Load user permissions from DB at login
Use GrantedAuthority and @PreAuthorize
💡 Interview Insight:
Senior-level: discuss caching permissions and refreshing without re-login.
Q120. How do you test Spring Security configurations?
Answer:
Use @WebMvcTest with @WithMockUser
Use MockMvc to simulate requests with different roles
Code Example:
@Test
@WithMockUser(username = "admin", roles = {"ADMIN"})
void testAdminEndpoint() throws Exception { ... }
💡 Interview Insight:
Explain integration vs unit testing of secured endpoints.
Q121. How do you handle stateless authentication in REST APIs?
Answer:
Use JWT or OAuth2 tokens
Disable sessions and CSRF
Validate token on each request
💡 Interview Insight:
Discuss pros and cons of stateless vs stateful authentication.
Q122. How do you implement role hierarchies in Spring Security?
Answer:
@Bean
RoleHierarchy roleHierarchy() {
RoleHierarchyImpl hierarchy = new RoleHierarchyImpl();
[Link]("ROLE_ADMIN > ROLE_MANAGER \n
ROLE_MANAGER > ROLE_USER");
return hierarchy;
💡 Interview Insight:
Senior-level: explain complex role relationships and inheritance.
Q123. How do you secure Spring Boot endpoints with API keys?
Answer:
Implement a filter to validate API key from header or query param
Code Example:
if())
{ [Link](401); }
💡 Interview Insight:
Discuss security risks, rotation strategies, and logging access attempts.
Q124. How do you implement password policies?
Answer:
Use custom validators or Spring Security’s PasswordEncoder
Enforce rules: min length, complexity, history
💡 Interview Insight:
Discuss enterprise requirements and integration with LDAP/AD.
Q125. How do you handle logout and token invalidation in JWT-based
apps?
Answer:
Maintain a blacklist of tokens
Use short-lived access tokens with refresh token rotation
💡 Interview Insight:
Discuss stateless logout, scaling, and revocation strategies.
🧩 Part 3 — Batch 2: Microservices & Distributed Systems (Q126–
Q150)
Q126. What is Spring Cloud and why is it used in microservices?
Answer:
Spring Cloud provides tools for building distributed systems: service
discovery, configuration management, circuit breakers, routing, messaging,
and more.
💡 Interview Insight:
Senior candidates should explain how Spring Cloud complements Spring Boot
for microservices architecture.
Q127. How do you implement service discovery in Spring Boot?
Answer:
Use Eureka Server (spring-cloud-starter-netflix-eureka-server)
Client registers with Eureka using spring-cloud-starter-netflix-eureka-
client
Code Example:
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication { ... }
[Link]=[Link]
💡 Interview Insight:
Explain benefits: dynamic service lookup, load balancing, and scaling
microservices.
Q128. How do you implement client-side load balancing?
Answer:
Use Spring Cloud LoadBalancer or Ribbon (deprecated)
Inject @LoadBalanced RestTemplate or WebClient
Code Example:
@Bean
@LoadBalanced
RestTemplate restTemplate() { return new RestTemplate(); }
💡 Interview Insight:
Discuss dynamic service resolution and fault tolerance.
Q129. What is an API Gateway and why is it important?
Answer:
An API Gateway routes requests to microservices, handles authentication,
rate limiting, and monitoring. Example: Spring Cloud Gateway.
Code Example:
spring:
cloud:
gateway:
routes:
- id: user-service
uri: lb://USER-SERVICE
predicates:
- Path=/users/**
💡 Interview Insight:
Discuss centralized entry point, security, logging, and routing strategies.
Q130. How do you implement circuit breakers?
Answer:
Use Resilience4j for fault tolerance
Apply @CircuitBreaker on service calls
Code Example:
@CircuitBreaker(name="inventoryService", fallbackMethod="fallback")
public Inventory getInventory() { ... }
💡 Interview Insight:
Explain fallback strategies, monitoring metrics, and preventing cascading
failures.
Q131. How do you implement retries in microservices?
Answer:
Use Resilience4j Retry or Spring Retry
Configure max attempts, wait intervals
Code Example:
@Retry(name = "inventoryService", fallbackMethod = "fallback")
public Inventory getInventory() { ... }
💡 Interview Insight:
Discuss idempotency and avoiding duplicate processing.
Q132. How do you implement distributed tracing?
Answer:
Use Spring Cloud Sleuth with Zipkin or Jaeger
Automatically propagates trace IDs across services
💡 Interview Insight:
Senior-level: Explain tracing latency, correlation IDs, and debugging
distributed systems.
Q133. How do you handle distributed transactions?
Answer:
Use Saga pattern or two-phase commit (2PC)
Use messaging systems (Kafka, RabbitMQ) to maintain eventual
consistency
💡 Interview Insight:
Discuss trade-offs: consistency vs availability in microservices.
Q134. How do you implement messaging between microservices?
Answer:
Use Kafka, RabbitMQ, or Spring Cloud Stream
Support async communication and event-driven architecture
Code Example:
@StreamListener("inputChannel")
public void consumeEvent(Event e) { ... }
💡 Interview Insight:
Explain message reliability, ordering, and idempotency.
Q135. How do you implement distributed configuration?
Answer:
Use Spring Cloud Config Server
Store properties in Git or Vault, fetch dynamically
💡 Interview Insight:
Explain runtime refresh, profiles, and secrets management.
Q136. How do you handle rate limiting and throttling?
Answer:
Use Spring Cloud Gateway with filters
Use Redis or Resilience4j RateLimiter
💡 Interview Insight:
Discuss protecting backend services and managing burst traffic.
Q137. How do you implement service resilience in Spring Boot
microservices?
Answer:
Circuit breakers, retries, bulkheads
Timeout handling and fallback strategies
💡 Interview Insight:
Show understanding of production readiness and failure isolation.
Q138. How do you implement caching in a microservices
architecture?
Answer:
Use distributed cache like Redis, Hazelcast, or Memcached
Cache frequently accessed data to reduce DB load
💡 Interview Insight:
Discuss cache invalidation, TTL, and consistency challenges.
Q139. How do you implement health checks for microservices?
Answer:
Use Spring Boot Actuator endpoints (/actuator/health)
Define custom HealthIndicators
💡 Interview Insight:
Explain readiness vs liveness probes for Kubernetes deployment.
Q140. How do you secure microservices communication?
Answer:
Use JWT/OAuth2 tokens
Mutual TLS (mTLS) for service-to-service authentication
💡 Interview Insight:
Discuss securing sensitive data and enforcing trust between services.
Q141. How do you implement API versioning in microservices?
Answer:
Use URL versioning (/v1/users)
Use request header or content negotiation
💡 Interview Insight:
Explain backward compatibility and smooth upgrades.
Q142. How do you implement service registration with Consul?
Answer:
Include spring-cloud-starter-consul-discovery
Configure service name and port
💡 Interview Insight:
Compare Consul vs Eureka for service discovery and key-value config.
Q143. How do you implement fallback methods in microservices?
Answer:
Use @CircuitBreaker fallback
Provide default response or cached data
💡 Interview Insight:
Discuss fallback design patterns and maintaining business continuity.
Q144. How do you implement API gateway routing filters?
Answer:
Spring Cloud Gateway allows pre/post filters for logging,
authentication, rate limiting
💡 Interview Insight:
Explain centralization of cross-cutting concerns in microservices.
Q145. How do you handle inter-service communication failures?
Answer:
Use retries, circuit breakers, fallback responses
Consider eventual consistency and idempotent operations
💡 Interview Insight:
Show understanding of distributed systems reliability patterns.
Q146. How do you implement message ordering in Kafka?
Answer:
Use partitioning strategy
Assign keys to maintain order within partitions
💡 Interview Insight:
Discuss trade-offs between parallelism and ordering guarantees.
Q147. How do you implement saga pattern in microservices?
Answer:
Break transaction into multiple steps
Use compensating actions on failure
💡 Interview Insight:
Explain difference between orchestration-based and choreography-based
saga.
Q148. How do you monitor microservices in production?
Answer:
Use Prometheus/Grafana, Spring Boot Actuator metrics, ELK stack
Track latency, error rates, throughput
💡 Interview Insight:
Explain alerting, SLA monitoring, and troubleshooting in distributed systems.
Q149. How do you implement distributed tracing with Sleuth and
Zipkin?
Answer:
Add Sleuth dependency
Propagate trace IDs across microservices
Visualize in Zipkin or Jaeger
💡 Interview Insight:
Show how tracing helps in debugging and performance bottleneck
identification.
Q150. How do you optimize microservices performance?
Answer:
Use caching, async processing, bulk operations
Optimize DB queries and reduce network calls
Implement monitoring and auto-scaling
💡 Interview Insight:
Interviewers want end-to-end understanding: scaling, observability,
resilience, and performance tuning.
🧩 Part 4 — Batch 1: Testing (Q151–Q175)
Q151. How do you write unit tests in Spring Boot?
Answer:
Use @SpringBootTest for integration or @WebMvcTest for controller
layer
Use JUnit 5 (@Test) and assertions
Code Example:
@SpringBootTest
class UserServiceTest {
@Autowired
private UserService userService;
@Test
void testCreateUser() {
User user = new User("John");
User saved = [Link](user);
assertNotNull([Link]());
💡 Interview Insight:
Explain isolation of units and mocking dependencies.
Q152. How do you mock dependencies in Spring Boot tests?
Answer:
Use @MockBean to replace Spring beans with mocks
Use Mockito for behavior verification
Code Example:
@MockBean
private UserRepository userRepository;
when([Link](any([Link]))).thenReturn(new User("John"));
💡 Interview Insight:
Senior-level: discuss difference between @MockBean and Mockito-only
mocks.
Q153. How do you write integration tests for controllers?
Answer:
Use @WebMvcTest for controllers
Use MockMvc to simulate HTTP requests
Code Example:
@Autowired
private MockMvc mockMvc;
@Test
void testGetUser() throws Exception {
[Link](get("/users/1"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.name").value("John"));
💡 Interview Insight:
Explain separating unit vs integration tests for controllers.
Q154. How do you write integration tests for repositories?
Answer:
Use @DataJpaTest
Load in-memory DB (H2) for testing
Code Example:
@DataJpaTest
class UserRepositoryTest {
@Autowired
private UserRepository userRepository;
@Test
void testFindByName() {
User user = [Link](new User("John"));
assertEquals("John", [Link]("John").getName());
💡 Interview Insight:
Senior-level: explain rolling back transactions between tests.
Q155. How do you use Testcontainers in Spring Boot tests?
Answer:
Spin up real containers (DB, Kafka, Redis) for integration tests
Code Example:
@Testcontainers
@SpringBootTest
class UserRepositoryTest {
@Container
static PostgreSQLContainer<?> postgres = new
PostgreSQLContainer<>("postgres:15")
.withDatabaseName("testdb")
.withUsername("user")
.withPassword("pass");
}
💡 Interview Insight:
Explain why using Testcontainers improves test reliability over in-memory
DBs.
Q156. How do you write parameterized tests?
Answer:
Use JUnit 5 @ParameterizedTest and @ValueSource
Code Example:
@ParameterizedTest
@ValueSource(strings = {"John", "Jane"})
void testNames(String name) {
assertTrue([Link]() > 0);
💡 Interview Insight:
Senior-level: explain benefits for testing multiple inputs without code
duplication.
Q157. How do you test REST APIs end-to-end?
Answer:
Use @SpringBootTest(webEnvironment =
WebEnvironment.RANDOM_PORT)
Use TestRestTemplate or WebTestClient
Code Example:
@Autowired
private TestRestTemplate restTemplate;
@Test
void testGetUser() {
ResponseEntity<User> response = [Link]("/users/1",
[Link]);
assertEquals([Link], [Link]());
💡 Interview Insight:
Explain difference between integration and end-to-end testing.
Q158. How do you test security configurations?
Answer:
Use @WithMockUser or @WithAnonymousUser in tests
Verify access control
Code Example:
@Test
@WithMockUser(username="admin", roles={"ADMIN"})
void testAdminAccess() throws Exception { ... }
💡 Interview Insight:
Senior-level: explain testing JWT-secured endpoints.
Q159. How do you test asynchronous methods?
Answer:
Use @EnableAsync in tests
Wait for CompletableFuture or use CountDownLatch
Code Example:
@Test
void testAsync() throws Exception {
CompletableFuture<String> future = [Link]();
assertEquals("Done", [Link]());
}
💡 Interview Insight:
Explain ensuring proper completion without blocking main test thread
excessively.
Q160. How do you mock external HTTP calls in tests?
Answer:
Use MockRestServiceServer with RestTemplate
Use WireMock for external service simulation
Code Example:
MockRestServiceServer server =
[Link](restTemplate);
💡 Interview Insight:
Discuss avoiding real network calls in unit tests for isolation.
Q161. How do you test database migrations?
Answer:
Use Flyway/Liquibase with test DB
Verify schema and data correctness
💡 Interview Insight:
Senior-level: explain automated migration testing in CI/CD.
Q162. How do you test caching behavior?
Answer:
Verify caching annotations with mocks or embedded cache
Assert method call count to confirm caching
💡 Interview Insight:
Discuss cache eviction, TTL, and effect on tests.
Q163. How do you write integration tests with Kafka?
Answer:
Use EmbeddedKafka or Testcontainers Kafka
Verify message consumption and processing
💡 Interview Insight:
Explain testing message ordering, retries, and failure handling.
Q164. How do you write integration tests with Redis?
Answer:
Use Testcontainers Redis
Test caching and pub/sub functionality
💡 Interview Insight:
Senior-level: explain realistic simulation vs in-memory alternatives.
Q165. How do you test scheduled tasks?
Answer:
Use @EnableScheduling in tests
Trigger scheduled methods manually or use time mocking libraries
💡 Interview Insight:
Explain avoiding long-running tests while ensuring task correctness.
Q166. How do you test exception handling globally?
Answer:
Trigger exceptions in controller/repository
Assert response status and body with MockMvc or TestRestTemplate
💡 Interview Insight:
Senior-level: discuss consistent error responses in production.
Q167. How do you test multi-threaded code?
Answer:
Use ExecutorService in tests
Synchronize using CountDownLatch or CyclicBarrier
💡 Interview Insight:
Explain thread safety verification and race condition detection.
Q168. How do you perform contract testing for microservices?
Answer:
Use Pact or Spring Cloud Contract
Define expected request/response contracts and verify integration
💡 Interview Insight:
Discuss reducing breaking changes in distributed systems.
Q169. How do you test file uploads and downloads?
Answer:
Use MockMultipartFile in tests
Use MockMvc for download verification
💡 Interview Insight:
Senior-level: explain testing large files and streaming behavior.
Q170. How do you perform performance testing in Spring Boot?
Answer:
Use JMH, Gatling, or JMeter
Simulate concurrent requests and measure response times
💡 Interview Insight:
Explain profiling bottlenecks and tuning JVM or DB queries.
Q171. How do you test API versioning?
Answer:
Write tests for multiple API versions
Verify backward compatibility and deprecation warnings
💡 Interview Insight:
Senior-level: discuss automated regression testing for APIs.
Q172. How do you test database transactions?
Answer:
Verify rollback on exceptions using @Transactional
Use test DB with transaction rollback after each test
💡 Interview Insight:
Explain ensuring data integrity and isolation levels.
Q173. How do you test WebFlux reactive endpoints?
Answer:
Use WebTestClient
Verify Mono or Flux responses
Code Example:
[Link]().uri("/numbers").exchange().expectStatus().isOk();
💡 Interview Insight:
Senior-level: explain testing backpressure and streaming data.
Q174. How do you test Spring Boot Actuator endpoints?
Answer:
Use TestRestTemplate or MockMvc to hit /actuator/health and /metrics
💡 Interview Insight:
Verify monitoring data correctness and security exposure.
Q175. How do you test logging and audit trails?
Answer:
Use Appender mocks or log capture libraries
Assert log content and timestamps
💡 Interview Insight:
Senior-level: explain importance for troubleshooting and compliance.
🧩 Part 4 — Batch 2: DevOps & Monitoring (Q176–Q200)
Q176. How do you containerize a Spring Boot application with
Docker?
Answer:
Write a Dockerfile to build the image
Use maven or gradle to package the jar
Code Example:
FROM openjdk:11-jre-slim
COPY target/[Link] [Link]
ENTRYPOINT ["java","-jar","/[Link]"]
💡 Interview Insight:
Discuss image size optimization, multi-stage builds, and best practices.
Q177. How do you run Spring Boot in Kubernetes?
Answer:
Create Deployment and Service manifests
Use ConfigMaps and Secrets for configuration
Code Example:
apiVersion: apps/v1
kind: Deployment
metadata: name: springboot-app
spec:
replicas: 2
template:
spec:
containers:
- name: app
image: myapp:latest
💡 Interview Insight:
Senior-level: explain rolling updates, scaling, and liveness/readiness probes.
Q178. How do you implement CI/CD for Spring Boot?
Answer:
Use Jenkins, GitHub Actions, GitLab CI
Steps: build → test → package → push Docker image → deploy
💡 Interview Insight:
Explain automated testing, artifact management, and deployment strategies.
Q179. How do you monitor Spring Boot applications in production?
Answer:
Use Actuator endpoints, Micrometer, Prometheus, Grafana
Monitor metrics: response times, DB connections, JVM memory
💡 Interview Insight:
Senior-level: explain setting alerts, dashboards, and anomaly detection.
Q180. How do you manage configuration for multiple environments?
Answer:
Use application-{profile}.properties
Use Spring Cloud Config for centralized config
Override via environment variables
💡 Interview Insight:
Discuss dynamic refresh, secure storage of secrets, and versioning.
Q181. How do you implement log aggregation?
Answer:
Use centralized logging with ELK stack (Elasticsearch, Logstash,
Kibana) or Graylog
Ship logs from Spring Boot using Logback or Log4j2
💡 Interview Insight:
Explain structured logging, log levels, and correlation IDs.
Q182. How do you implement metrics collection?
Answer:
Use Micrometer to export metrics
Integrate with Prometheus/Grafana
Code Example:
@Autowired
MeterRegistry registry;
Counter counter = [Link]("[Link]").register(registry);
💡 Interview Insight:
Senior-level: explain custom metrics, tags, and alert thresholds.
Q183. How do you implement health checks for production?
Answer:
Use Actuator /health endpoint
Add custom HealthIndicators for DB, Kafka, external APIs
💡 Interview Insight:
Explain readiness vs liveness probes for Kubernetes and auto-healing.
Q184. How do you secure sensitive configurations?
Answer:
Use Spring Vault or Kubernetes Secrets
Avoid storing secrets in Git
Use encryption in Spring Cloud Config
💡 Interview Insight:
Discuss dynamic secret rotation and environment isolation.
Q185. How do you implement blue-green deployments?
Answer:
Deploy new version to separate environment (green)
Switch traffic from old (blue) to new
Rollback if needed
💡 Interview Insight:
Explain zero-downtime deployment strategy and risk mitigation.
Q186. How do you implement canary releases?
Answer:
Release new version to a small subset of users
Monitor metrics and gradually increase traffic
💡 Interview Insight:
Discuss automated routing and rollback based on success criteria.
Q187. How do you optimize Spring Boot startup time in containers?
Answer:
Use layered jars (spring-boot:build-image)
Reduce unnecessary auto-configurations
Minimize dependencies
💡 Interview Insight:
Senior-level: discuss JVM optimizations, lazy initialization, and native image
compilation (GraalVM).
Q188. How do you implement distributed logging in microservices?
Answer:
Use correlation IDs to track requests across services
Aggregate logs in ELK or Loki
Include service name and timestamp in logs
💡 Interview Insight:
Explain troubleshooting in distributed environments.
Q189. How do you manage Spring Boot application scaling?
Answer:
Use horizontal pod scaling in Kubernetes
Configure readiness/liveness probes
Monitor CPU/memory for auto-scaling triggers
💡 Interview Insight:
Senior-level: explain scaling stateless vs stateful services.
Q190. How do you handle distributed tracing in production?
Answer:
Use Sleuth with Zipkin or Jaeger
Propagate trace IDs across services
💡 Interview Insight:
Explain latency analysis, request flow, and anomaly detection.
Q191. How do you implement feature flags?
Answer:
Use Spring Cloud Feature Toggle or LaunchDarkly
Enable/disable features dynamically without redeploy
💡 Interview Insight:
Discuss canary testing, risk mitigation, and A/B testing.
Q192. How do you implement application rollback in production?
Answer:
Maintain versioned artifacts
Use CI/CD pipeline with automated rollback steps
Kubernetes deployments allow easy rollback
💡 Interview Insight:
Explain maintaining data consistency and minimizing downtime.
Q193. How do you handle external service failures?
Answer:
Circuit breakers, retries, fallback mechanisms
Monitoring and alerting
💡 Interview Insight:
Senior-level: discuss resilience patterns and SLA maintenance.
Q194. How do you implement container health checks?
Answer:
Define HEALTHCHECK in Dockerfile
Use Kubernetes liveness/readiness probes
💡 Interview Insight:
Explain auto-healing and avoiding downtime.
Q195. How do you manage application secrets in Kubernetes?
Answer:
Use Kubernetes Secrets
Mount as environment variables or volumes
Avoid storing plaintext in images
💡 Interview Insight:
Discuss secret rotation and access control.
Q196. How do you implement automated deployment pipelines?
Answer:
Use Jenkins/GitHub Actions/GitLab CI
Steps: build → test → package → push image → deploy → monitor
💡 Interview Insight:
Senior-level: explain rollback, canary, and blue-green strategies.
Q197. How do you monitor JVM performance?
Answer:
Use Micrometer, JMX, or VisualVM
Monitor heap, GC, threads, and CPU
💡 Interview Insight:
Explain proactive monitoring and alerting.
Q198. How do you handle log rotation and retention?
Answer:
Configure Logback or Log4j2 rolling policies
Archive logs in storage or log aggregation system
💡 Interview Insight:
Discuss compliance, disk usage, and retrieval for audits.
Q199. How do you secure Docker images?
Answer:
Use trusted base images
Scan images for vulnerabilities
Minimize layers and sensitive data
💡 Interview Insight:
Explain runtime security, scanning tools, and best practices.
Q200. How do you implement observability in Spring Boot
microservices?
Answer:
Combine metrics (Micrometer), logs (ELK), and tracing (Sleuth/Zipkin)
Monitor performance, errors, and request flows
💡 Interview Insight:
Senior-level: explain actionable monitoring, alerting, and SLA adherence.
🧩 Part 5 — Batch 1: Spring Boot Advanced Features (Q201–Q250)
Q201. How do you implement asynchronous methods in Spring
Boot?
Answer:
Enable @EnableAsync in the configuration
Annotate methods with @Async
Code Example:
@EnableAsync
@SpringBootApplication
public class App { ... }
@Async
public CompletableFuture<String> asyncMethod() {
return [Link]("Done");
💡 Interview Insight:
Explain thread pool configuration, exception handling, and use cases.
Q202. How do you configure custom thread pools for async tasks?
Answer:
Use ThreadPoolTaskExecutor bean
Configure core/max threads, queue capacity
Code Example:
@Bean
public Executor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
[Link](10);
[Link](50);
[Link](100);
[Link]();
return executor;
💡 Interview Insight:
Discuss tuning thread pools for high concurrency applications.
Q203. How do you implement caching in Spring Boot?
Answer:
Enable caching with @EnableCaching
Use @Cacheable, @CacheEvict, @CachePut
Code Example:
@Cacheable("products")
public Product getProduct(Long id) { ... }
💡 Interview Insight:
Explain cache types, eviction policies, TTL, and distributed caching.
Q204. How do you implement conditional caching?
Answer:
Use condition or unless attributes in @Cacheable
Code Example:
@Cacheable(value="products", unless="#price > 1000")
public Product getProduct(Long id, double price) { ... }
💡 Interview Insight:
Discuss performance optimization and selective caching strategies.
Q205. How do you implement reactive programming in Spring Boot?
Answer:
Use Spring WebFlux with Mono and Flux for non-blocking,
asynchronous processing
Code Example:
@GetMapping("/numbers")
public Flux<Integer> numbers() {
return [Link](1, 10).delayElements([Link](100));
}
💡 Interview Insight:
Senior interviews may focus on backpressure, scalability, and non-blocking
IO benefits.
Q206. How do you handle backpressure in reactive streams?
Answer:
Use onBackpressureBuffer(), onBackpressureDrop(), or
onBackpressureLatest() in Reactor
💡 Interview Insight:
Explain preventing resource exhaustion and managing high throughput.
Q207. How do you implement event-driven architecture in Spring
Boot?
Answer:
Use ApplicationEventPublisher and @EventListener
Code Example:
@Component
public class UserEventListener {
@EventListener
public void handleUserCreated(UserCreatedEvent event) { ... }
💡 Interview Insight:
Discuss decoupling, asynchronous processing, and transactional events.
Q208. How do you implement transactional events?
Answer:
Use @TransactionalEventListener to trigger events after commit
Code Example:
@TransactionalEventListener
public void afterUserCommit(UserCreatedEvent event) { ... }
💡 Interview Insight:
Explain ensuring event consistency with database transactions.
Q209. How do you implement reactive repositories with Spring Data
R2DBC?
Answer:
Use spring-boot-starter-data-r2dbc
Define repository returning Flux/Mono
Code Example:
public interface UserRepository extends ReactiveCrudRepository<User,
Long> { }
💡 Interview Insight:
Discuss non-blocking DB access, reactive pipelines, and scalability.
Q210. How do you implement scheduled tasks in Spring Boot?
Answer:
Use @EnableScheduling and @Scheduled annotations
Code Example:
@Scheduled(fixedRate = 5000)
public void task() { [Link]("Task executed"); }
💡 Interview Insight:
Explain fixed rate vs fixed delay, cron expressions, and thread pool
considerations.
Q211. How do you implement dynamic scheduling?
Answer:
Use ScheduledTaskRegistrar or @Async + dynamic triggers
💡 Interview Insight:
Discuss runtime scheduling without restarting the application.
Q212. How do you implement conditional bean creation?
Answer:
Use @ConditionalOnProperty, @ConditionalOnBean, or
@ConditionalOnMissingBean
Code Example:
@Bean
@ConditionalOnProperty(name="[Link]", havingValue="true")
public FeatureX featureX() { ... }
💡 Interview Insight:
Explain feature toggling, modularity, and environment-specific beans.
Q213. How do you implement custom Spring Boot starters?
Answer:
Package reusable configuration and dependencies as a starter
Include @Configuration and auto-configuration classes
💡 Interview Insight:
Discuss modularization and sharing common configurations across projects.
Q214. How do you implement custom auto-configuration?
Answer:
Use [Link] to register auto-configuration classes
Annotate classes with @Configuration and @ConditionalOn...
💡 Interview Insight:
Explain making reusable, conditional modules for Spring Boot apps.
Q215. How do you implement property binding to POJOs?
Answer:
Use @ConfigurationProperties
Code Example:
@ConfigurationProperties(prefix="app")
public class AppProperties { private String name; ... }
💡 Interview Insight:
Discuss type safety, validation with @Validated, and hierarchical properties.
Q216. How do you implement dynamic property refresh?
Answer:
Use Spring Cloud Config + @RefreshScope
💡 Interview Insight:
Explain runtime config changes without restarting apps.
Q217. How do you implement custom health indicators?
Answer:
Implement HealthIndicator and register as Spring Bean
Code Example:
@Component
public class DBHealthIndicator implements HealthIndicator {
public Health health() { ... }
💡 Interview Insight:
Senior-level: explain integrating external service checks into Actuator.
Q218. How do you implement custom metrics?
Answer:
Use Micrometer MeterRegistry
Code Example:
[Link]("[Link]").increment();
💡 Interview Insight:
Discuss metrics aggregation, tagging, and monitoring dashboards.
Q219. How do you implement custom exception handling?
Answer:
Use @ControllerAdvice and @ExceptionHandler
Code Example:
@ExceptionHandler([Link])
public ResponseEntity<String> handleUserNotFound() { ... }
💡 Interview Insight:
Explain centralized error handling and consistent API responses.
Q220. How do you implement custom filters in Spring Boot?
Answer:
Implement Filter interface or extend OncePerRequestFilter
Register with @Component or FilterRegistrationBean
💡 Interview Insight:
Senior-level: discuss logging, security, and request transformation filters.
Q221. How do you implement reactive exception handling in
WebFlux?
Answer:
Use onErrorResume, onErrorReturn, or onErrorMap with Mono/Flux
Code Example:
@GetMapping("/user/{id}")
public Mono<User> getUser(@PathVariable Long id) {
return [Link](id)
.switchIfEmpty([Link](new UserNotFoundException()))
.onErrorResume(e -> [Link](new User("Default")));
💡 Interview Insight:
Explain non-blocking error handling and fallback strategies.
Q222. How do you implement caching with Redis in Spring Boot?
Answer:
Use spring-boot-starter-data-redis
Configure RedisCacheManager and annotate methods with
@Cacheable
Code Example:
@Cacheable(value="products", key="#id")
public Product getProduct(Long id) { ... }
💡 Interview Insight:
Discuss distributed caching, TTL, and cache eviction policies.
Q223. How do you implement reactive caching?
Answer:
Use Mono/Flux with caching libraries like Caffeine or Redis
Combine with @Cacheable for reactive return types
💡 Interview Insight:
Senior-level: explain non-blocking caching and avoiding blocking calls in
reactive pipelines.
Q224. How do you implement asynchronous event publishing?
Answer:
Use ApplicationEventPublisher with @Async
Ensure @EnableAsync is enabled
Code Example:
@Async
public void publishEvent(UserCreatedEvent event) {
[Link](event);
💡 Interview Insight:
Explain decoupling, non-blocking event handling, and transactional
guarantees.
Q225. How do you implement reactive event handling?
Answer:
Use Project Reactor’s Flux as event stream
Subscribe asynchronously for processing
Code Example:
Flux<UserEvent> eventFlux = [Link](emitter ->
[Link](emitter::next));
[Link](this::processEvent);
💡 Interview Insight:
Senior-level: discuss backpressure, scalability, and error handling in reactive
streams.
Q226. How do you implement distributed caching strategies?
Answer:
Use Redis, Hazelcast, or Ehcache
Use cache partitioning and replication for scalability
💡 Interview Insight:
Explain cache consistency, eviction, and high availability.
Q227. How do you implement multi-level caching?
Answer:
Combine local in-memory cache (Caffeine) with distributed cache
(Redis)
💡 Interview Insight:
Discuss performance trade-offs, cache coherency, and TTL management.
Q228. How do you implement reactive database queries with
caching?
Answer:
Use reactive repositories and combine Mono/Flux with caching layers
Code Example:
@Cacheable("users")
public Mono<User> getUser(Long id) { ... }
💡 Interview Insight:
Explain avoiding blocking calls and maintaining cache consistency in reactive
streams.
Q229. How do you implement conditional scheduling?
Answer:
Use programmatic scheduling with ScheduledTaskRegistrar or cron
expressions with conditions
Code Example:
if(featureEnabled) {
[Link](this::task, 5000);
}
💡 Interview Insight:
Senior-level: explain dynamic runtime scheduling and resource optimization.
Q230. How do you implement retry with backoff in Spring Boot?
Answer:
Use Spring Retry with @Retryable
Configure max attempts, delay, and backoff strategy
Code Example:
@Retryable(maxAttempts=5, backoff=@Backoff(delay=2000))
public void callExternalService() { ... }
💡 Interview Insight:
Discuss idempotency and handling transient failures.
Q231. How do you implement reactive retry in WebFlux?
Answer:
Use Reactor’s retryWhen with [Link]()
Code Example:
[Link]().retrieve().bodyToMono([Link])
.retryWhen([Link](3, [Link](2)));
💡 Interview Insight:
Explain non-blocking retry and error propagation.
Q232. How do you implement scheduled task retries?
Answer:
Combine @Scheduled with Spring Retry or manual try-catch logic
💡 Interview Insight:
Discuss ensuring task reliability and avoiding repeated failures impacting
performance.
Q233. How do you implement rate limiting in Spring Boot?
Answer:
Use Resilience4j RateLimiter or Spring Cloud Gateway filters
Code Example:
RateLimiter limiter = [Link]("apiLimiter", [Link]()
.limitForPeriod(10).limitRefreshPeriod([Link](1)).build());
💡 Interview Insight:
Explain throttling strategies, burst handling, and protecting backend
services.
Q234. How do you implement reactive rate limiting?
Answer:
Combine Resilience4j with reactive pipelines using Mono/Flux
💡 Interview Insight:
Discuss non-blocking enforcement and backpressure handling.
Q235. How do you implement asynchronous error handling?
Answer:
Use [Link]() or @Async with
AsyncUncaughtExceptionHandler
💡 Interview Insight:
Explain capturing errors without crashing the main thread.
Q236. How do you implement delayed tasks in Spring Boot?
Answer:
Use ScheduledExecutorService or @Scheduled with initial delay
Code Example:
@Scheduled(initialDelay=5000, fixedRate=10000)
public void delayedTask() { ... }
💡 Interview Insight:
Discuss task scheduling patterns and concurrency considerations.
Q237. How do you implement reactive stream transformations?
Answer:
Use operators like map, flatMap, filter, collectList
Code Example:
[Link](1,2,3).map(i -> i*2).subscribe([Link]::println);
💡 Interview Insight:
Senior-level: explain transformation pipelines, backpressure, and error
handling.
Q238. How do you implement event filtering in reactive streams?
Answer:
Use filter() operator on Flux
Code Example:
[Link](event -> [Link]().equals("USER_CREATED"))
.subscribe(this::processEvent);
💡 Interview Insight:
Explain efficient filtering to reduce unnecessary processing.
Q239. How do you implement event batching in reactive pipelines?
Answer:
Use buffer() operator to process events in batches
Code Example:
[Link](10).subscribe(batch -> processBatch(batch));
💡 Interview Insight:
Discuss throughput optimization and resource management.
Q240. How do you implement delayed retry for reactive streams?
Answer:
Use retryWhen with [Link]()
Code Example:
[Link]().retrieve().bodyToMono([Link])
.retryWhen([Link](3, [Link](2)));
💡 Interview Insight:
Explain handling transient failures and exponential backoff strategy.
Q241. How do you implement cache warming in Spring Boot?
Answer:
Preload frequently used data into cache at startup or scheduled
intervals
💡 Interview Insight:
Discuss improving startup performance and reducing cold cache latency.
Q242. How do you implement reactive cache eviction?
Answer:
Use @CacheEvict with reactive method calls
Code Example:
@CacheEvict(value="users", key="#id")
public Mono<Void> deleteUser(Long id) { ... }
💡 Interview Insight:
Senior-level: explain ensuring cache consistency in async/reactive flows.
Q243. How do you implement dynamic routing for scheduled tasks?
Answer:
Use ScheduledTaskRegistrar and dynamic task mapping based on
configuration
💡 Interview Insight:
Discuss multi-tenant scheduling and runtime flexibility.
Q244. How do you implement reactive transactional operations?
Answer:
Use @Transactional with R2DBC and reactive repositories
💡 Interview Insight:
Explain differences between blocking and non-blocking transactional
boundaries.
Q245. How do you implement reactive streaming to WebSocket
clients?
Answer:
Use @Controller with SseEmitter or WebFlux Flux
Code Example:
@GetMapping(value="/stream",
produces=MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> stream() { return
[Link]([Link](1)).map(i -> "Data "+i); }
💡 Interview Insight:
Discuss real-time streaming, backpressure, and client handling.
Q246. How do you implement scheduled batch processing?
Answer:
Combine @Scheduled with batching logic and transaction management
💡 Interview Insight:
Senior-level: explain handling large datasets efficiently and rollback
strategies.
Q247. How do you implement asynchronous event aggregation?
Answer:
Aggregate events using CompletableFuture or reactive operators like
buffer()
💡 Interview Insight:
Explain coordinating multiple async sources into a single result.
Q248. How do you implement caching with reactive pipelines?
Answer:
Cache Mono or Flux results using reactive cache wrappers
💡 Interview Insight:
Discuss non-blocking caching, cache population, and eviction strategies.
Q249. How do you implement feature toggling in Spring Boot?
Answer:
Use @ConditionalOnProperty or libraries like Togglz or FF4J
Code Example:
@Bean
@ConditionalOnProperty(name="[Link]", havingValue="true")
public FeatureX featureX() { ... }
💡 Interview Insight:
Discuss runtime toggling without redeployment and A/B testing.
Q250. How do you implement reactive circuit breakers?
Answer:
Use Resilience4j reactor module to wrap reactive streams
Code Example:
Mono<String> result = [Link](() ->
[Link]().retrieve().bodyToMono([Link]));
💡 Interview Insight:
Explain non-blocking fault tolerance and fallback strategies.
Discuss auditing without polluting business logic.
Q287. How do you implement dynamic bean injection with Factory
pattern?
Answer:
Use factory to produce beans dynamically based on properties or
context
💡 Interview Insight:
Explain runtime flexibility in service instantiation.
Q288. How do you implement reactive caching with TTL?
Answer:
Use reactive cache wrappers with expiration policies for Mono/Flux
💡 Interview Insight:
Discuss non-blocking cache eviction and performance.
Q289. How do you implement Chain of Responsibility for error
handling?
Answer:
Define chain of error handlers processing exceptions sequentially
💡 Interview Insight:
Explain modular, maintainable exception handling strategies.
Q290. How do you implement Circuit Breaker with fallback
strategies?
Answer:
Wrap service calls with Resilience4j circuit breaker and define fallback
methods
💡 Interview Insight:
Discuss fault tolerance and graceful degradation in production.
Q291. How do you implement Template Method for batch
processing?
Answer:
Define abstract batch steps, concrete implementations provide
specifics
💡 Interview Insight:
Promotes reusable, consistent batch workflows.
Q292. How do you implement Proxy with caching and logging?
Answer:
Wrap service with proxy adding caching and logging layers
💡 Interview Insight:
Explain separation of concerns and modular enhancements.
Q293. How do you implement dynamic Strategy pattern in
microservices?
Answer:
Inject map of strategies and select based on request context or feature
flag
💡 Interview Insight:
Discuss runtime flexibility for multi-tenant or multi-algorithm services.
Q294. How do you implement reactive Observer pattern with
[Link]?
Answer:
Merge multiple Flux streams and subscribe to observe all events
💡 Interview Insight:
Explain combining multiple reactive sources efficiently.
Q295. How do you implement Decorator pattern for reactive
streams?
Answer:
Wrap Mono/Flux pipelines to add cross-cutting behaviors like logging or
metrics
💡 Interview Insight:
Discuss modular enhancements without changing core reactive streams.
Q296. How do you implement advanced AOP for transaction
management?
Answer:
Use @Transactional or custom @Around aspects for dynamic
transaction handling
💡 Interview Insight:
Discuss propagation behaviors, isolation, and rollback rules.
Q297. How do you implement Observer pattern for multi-service
events?
Answer:
Publish events to message broker (Kafka, RabbitMQ)
Subscribe in multiple services asynchronously
💡 Interview Insight:
Explain decoupled, scalable event-driven architecture.
Q298. How do you implement Template Method pattern for API
response handling?
Answer:
Abstract controller defines response structure; subclasses fill data
💡 Interview Insight:
Promotes consistency and reusability in API responses.
Q299. How do you implement Circuit Breaker with reactive
WebClient?
Answer:
Use Resilience4j reactor module wrapping Mono/Flux
Code Example:
Mono<String> result = [Link](() ->
[Link]().retrieve().bodyToMono([Link]));
💡 Interview Insight:
Explain non-blocking resiliency in reactive microservices.
Q300. How do you implement Builder + Strategy pattern together?
Answer:
Use Builder to configure complex objects dynamically
Strategy pattern to select behavior at runtime
💡 Interview Insight:
Discuss combining patterns for maximum flexibility and maintainability.
🧩 Part 6 — Spring Cloud & Microservices Advanced (Q301–Q400)
Q301. What is Spring Cloud and why is it used?
Answer:
Spring Cloud provides tools for building distributed systems and
microservices
Features: Config Server, Eureka, Gateway, Circuit Breaker,
Sleuth/Zipkin, Stream
💡 Interview Insight:
Explain how Spring Cloud simplifies service discovery, configuration, routing,
resilience, and monitoring.
Q302. How do you implement service discovery with Eureka?
Answer:
Use @EnableEurekaServer for server
Use @EnableEurekaClient for microservices
Code Example:
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApp { ... }
@SpringBootApplication
@EnableEurekaClient
public class ServiceApp { ... }
💡 Interview Insight:
Discuss high availability, self-registration, and client-side load balancing.
Q303. How do you implement client-side load balancing?
Answer:
Use Spring Cloud LoadBalancer or Ribbon (deprecated)
Annotate @LoadBalanced on RestTemplate or WebClient
Code Example:
@Bean
@LoadBalanced
RestTemplate restTemplate() { return new RestTemplate(); }
💡 Interview Insight:
Explain round-robin, weighted, and zone-aware strategies.
Q304. How do you implement API Gateway with Spring Cloud
Gateway?
Answer:
Define route predicates and filters for routing and request
transformation
Code Example:
@Bean
public RouteLocator routes(RouteLocatorBuilder builder) {
return [Link]()
.route(r -> [Link]("/api/**").uri("lb://USER-SERVICE"))
.build();
💡 Interview Insight:
Discuss authentication, rate limiting, and dynamic routing.
Q305. How do you implement distributed configuration with Spring
Cloud Config?
Answer:
Use Config Server to serve environment-specific properties
Microservices fetch config via [Link]
💡 Interview Insight:
Explain centralized config, profile management, and secure property storage.
Q306. How do you implement dynamic config refresh?
Answer:
Use @RefreshScope on beans
Trigger refresh with /actuator/refresh
💡 Interview Insight:
Discuss runtime updates without redeployment.
Q307. How do you implement circuit breaker in microservices?
Answer:
Use Resilience4j @CircuitBreaker or Spring Cloud Circuit Breaker
Code Example:
@CircuitBreaker(name="userService", fallbackMethod="fallback")
public User getUser(Long id) { ... }
💡 Interview Insight:
Explain fail-fast, fallback methods, and resiliency.
Q308. How do you implement distributed tracing with Sleuth &
Zipkin?
Answer:
Include Spring Cloud Sleuth
Configure Zipkin URL to collect traces
💡 Interview Insight:
Explain trace propagation, request correlation, and latency analysis.
Q309. How do you implement reactive microservices with WebFlux
and Spring Cloud Gateway?
Answer:
Use WebFlux controllers and reactive clients (WebClient)
Gateway handles reactive routing
💡 Interview Insight:
Discuss non-blocking, scalable service pipelines.
Q310. How do you implement OAuth2 with microservices?
Answer:
Use Spring Security OAuth2 with JWT tokens
Protect resource servers and configure authorization server
💡 Interview Insight:
Explain token propagation, scopes, and resource access control.
Q311. How do you implement event-driven microservices?
Answer:
Use Spring Cloud Stream with Kafka/RabbitMQ
Publish events asynchronously and consume in subscribers
Code Example:
@StreamListener([Link])
public void handle(UserEvent event) { ... }
💡 Interview Insight:
Discuss eventual consistency, decoupling, and asynchronous workflows.
Q312. How do you implement Saga pattern for distributed
transactions?
Answer:
Break transactions into a sequence of local transactions
Use orchestration (central coordinator) or choreography (event-driven)
💡 Interview Insight:
Explain rollback, consistency, and avoiding two-phase commit.
Q313. How do you implement CQRS pattern?
Answer:
Separate read (query) and write (command) models
Use event sourcing for state changes
💡 Interview Insight:
Discuss scalability, performance, and complexity trade-offs.
Q314. How do you implement API rate limiting in microservices?
Answer:
Use Spring Cloud Gateway filters or Resilience4j RateLimiter
Control requests per second per client
💡 Interview Insight:
Explain throttling strategies, burst handling, and multi-tenant considerations.
Q315. How do you implement service-to-service authentication?
Answer:
Use OAuth2 client credentials flow or JWT tokens
Services validate tokens before processing requests
💡 Interview Insight:
Discuss security in inter-service communication.
Q316. How do you implement service resiliency patterns?
Answer:
Circuit breaker, retry, bulkhead, timeout
Use Resilience4j or Spring Cloud Circuit Breaker
💡 Interview Insight:
Explain fault tolerance in distributed microservices.
Q317. How do you implement distributed caching in microservices?
Answer:
Use Redis, Hazelcast, or Caffeine cluster
Cache responses from other services
💡 Interview Insight:
Discuss cache invalidation, consistency, and performance optimization.
Q318. How do you implement service versioning in microservices?
Answer:
Use URI versioning (/v1/users) or header versioning
Maintain backward compatibility
💡 Interview Insight:
Explain evolution of microservices without breaking clients.
Q319. How do you implement blue-green deployment in
microservices?
Answer:
Deploy new version (green) alongside old (blue)
Switch traffic gradually or via feature flags
💡 Interview Insight:
Discuss rollback, zero-downtime, and testing strategies.
Q320. How do you implement canary releases?
Answer:
Route a small percentage of traffic to new version
Monitor metrics before full rollout
💡 Interview Insight:
Explain risk mitigation and gradual adoption.
🧩 Part 6 — Q321–Q400
Q321. How do you deploy Spring Boot microservices to Kubernetes?
Answer:
Package microservice as Docker image
Create Kubernetes resources: Deployment, Service, ConfigMap, Secret
Code Example (Deployment YAML):
apiVersion: apps/v1
kind: Deployment
metadata:
name: user-service
spec:
replicas: 3
selector:
matchLabels:
app: user-service
template:
metadata:
labels:
app: user-service
spec:
containers:
- name: user-service
image: myregistry/user-service:latest
ports:
- containerPort: 8080
💡 Interview Insight:
Explain rolling updates, scaling, and self-healing.
Q322. How do you implement ConfigMap and Secret in Kubernetes?
Answer:
ConfigMap: for environment-specific configuration
Secret: for sensitive data (passwords, API keys)
Code Example (Secret YAML):
apiVersion: v1
kind: Secret
metadata:
name: db-secret
type: Opaque
data:
password: cGFzc3dvcmQ= # base64 encoded
💡 Interview Insight:
Discuss secure configuration management in clusters.
Q323. How do you implement horizontal pod scaling?
Answer:
Use HorizontalPodAutoscaler with CPU/memory metrics
Code Example:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: user-service-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: user-service
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
💡 Interview Insight:
Explain auto-scaling based on load and resource utilization.
Q324. How do you implement service-to-service communication in
Kubernetes?
Answer:
Use ClusterIP services or DNS-based service discovery
Services communicate internally via service name
💡 Interview Insight:
Discuss reliability, load balancing, and latency concerns.
Q325. How do you implement service mesh with Istio?
Answer:
Install Istio in cluster
Inject sidecar proxies (Envoy)
Define routing, telemetry, and policies via VirtualService
💡 Interview Insight:
Explain traffic shaping, retries, observability, and security in mesh.
Q326. How do you implement canary deployments with Istio?
Answer:
Use VirtualService and DestinationRule to route % of traffic to new
version
💡 Interview Insight:
Discuss risk mitigation and gradual release strategies.
Q327. How do you implement distributed tracing in microservices?
Answer:
Use Spring Cloud Sleuth + Zipkin or Jaeger
Trace request propagation across services
💡 Interview Insight:
Explain detecting bottlenecks and understanding microservice interactions.
Q328. How do you implement centralized logging?
Answer:
Use ELK stack (Elasticsearch, Logstash, Kibana) or Loki/Grafana
Aggregate logs from multiple services
💡 Interview Insight:
Discuss correlation with trace IDs and troubleshooting.
Q329. How do you implement metrics collection for microservices?
Answer:
Use Micrometer + Prometheus
Export metrics via /actuator/prometheus
💡 Interview Insight:
Explain monitoring, alerting, and dashboards for operational insights.
Q330. How do you implement health checks for Kubernetes?
Answer:
Use Spring Boot Actuator endpoints
Configure livenessProbe and readinessProbe
Code Example:
livenessProbe:
httpGet:
path: /actuator/health/liveness
port: 8080
readinessProbe:
httpGet:
path: /actuator/health/readiness
port: 8080
💡 Interview Insight:
Explain auto-healing and traffic routing based on service health.
Q331. How do you implement event sourcing in microservices?
Answer:
Persist state changes as events
Rebuild current state by replaying events
Use event store (Kafka, EventStoreDB)
💡 Interview Insight:
Discuss benefits for audit trails, replayability, and CQRS patterns.
Q332. How do you implement CQRS with Spring Boot?
Answer:
Separate write model (commands) from read model (queries)
Use different storage and projections for reads
💡 Interview Insight:
Explain performance optimization and scalability benefits.
Q333. How do you implement reactive event streaming with Kafka?
Answer:
Use Spring Cloud Stream + Kafka binder
Stream events asynchronously with backpressure
💡 Interview Insight:
Discuss handling high-volume data and non-blocking consumption.
Q334. How do you implement idempotent event processing?
Answer:
Use unique event IDs and check if already processed
Avoid duplicate state changes
💡 Interview Insight:
Explain reliability in distributed systems with retries.
Q335. How do you implement saga orchestration using events?
Answer:
Orchestrator coordinates steps by publishing events
Each service performs local transaction and emits next event
💡 Interview Insight:
Discuss avoiding distributed locks and two-phase commit.
Q336. How do you implement service versioning in Kubernetes?
Answer:
Use labels and selectors to differentiate versions
Route traffic via Gateway or Service mesh
💡 Interview Insight:
Explain backward compatibility and smooth upgrades.
Q337. How do you implement circuit breaker patterns in
Kubernetes?
Answer:
Use Resilience4j with services in cluster
Combine with Gateway or sidecar proxies
💡 Interview Insight:
Discuss fault tolerance and system resilience in distributed setups.
Q338. How do you implement distributed transactions with outbox
pattern?
Answer:
Write events to outbox table during local transaction
Publish asynchronously to message broker
💡 Interview Insight:
Explain eventual consistency and avoiding distributed locks.
Q339. How do you implement retry mechanisms in microservices?
Answer:
Use Resilience4j Retry or Spring Retry
Apply for transient errors with exponential backoff
💡 Interview Insight:
Discuss idempotency and avoiding cascading failures.
Q340. How do you implement bulkhead isolation in microservices?
Answer:
Isolate resources per service or endpoint to prevent cascading failures
💡 Interview Insight:
Explain limiting failures and improving overall system resilience.
🧩 Part 6 — Q341–Q400
Q341. How do you implement stateful services in Kubernetes?
Answer:
Use StatefulSet instead of Deployment
Provides stable network ID, persistent storage, and ordered
deployment
Code Example (StatefulSet YAML):
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: db-service
spec:
serviceName: "db"
replicas: 3
selector:
matchLabels:
app: db-service
template:
metadata:
labels:
app: db-service
spec:
containers:
- name: db
image: postgres:14
ports:
- containerPort: 5432
volumeMounts:
- name: db-data
mountPath: /var/lib/postgresql/data
volumeClaimTemplates:
- metadata:
name: db-data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 10Gi
💡 Interview Insight:
Explain persistence, ordered scaling, and service identity for stateful apps.
Q342. How do you implement persistent storage in Kubernetes?
Answer:
Use PersistentVolume (PV) and PersistentVolumeClaim (PVC)
Bind PVC to pods for storage persistence
💡 Interview Insight:
Discuss dynamic provisioning and storage classes.
Q343. How do you implement multi-cluster Kubernetes deployment?
Answer:
Deploy services in multiple clusters for HA
Use global load balancer or service mesh to route traffic
💡 Interview Insight:
Explain disaster recovery and cross-region failover.
Q344. How do you implement canary deployments in Kubernetes
with Istio?
Answer:
Configure VirtualService to route % traffic to new version
Monitor metrics before full rollout
💡 Interview Insight:
Discuss risk mitigation, observability, and rollback strategies.
Q345. How do you implement mutual TLS (mTLS) in Istio?
Answer:
Enable mTLS in Istio PeerAuthentication
Encrypt all service-to-service communication
💡 Interview Insight:
Explain secure communication in microservices mesh.
Q346. How do you implement rate limiting in Istio?
Answer:
Define QuotaSpec and QuotaSpecBinding
Limit requests per second per service
💡 Interview Insight:
Discuss protecting downstream services from overload.
Q347. How do you implement distributed logging with correlation
IDs?
Answer:
Inject trace IDs via Sleuth or MDC
Aggregate logs in ELK stack or Loki/Grafana
💡 Interview Insight:
Explain tracking requests across services for debugging and observability.
Q348. How do you implement metrics aggregation?
Answer:
Use Prometheus to scrape /actuator/prometheus endpoints
Create dashboards in Grafana
💡 Interview Insight:
Discuss latency, throughput, and SLA monitoring.
Q349. How do you implement alerting for microservices?
Answer:
Configure Prometheus Alertmanager or Grafana alerts
Trigger notifications via Slack, Email, or PagerDuty
💡 Interview Insight:
Explain proactive monitoring and incident management.
Q350. How do you implement chaos testing in microservices?
Answer:
Use Chaos Monkey or LitmusChaos to inject failures
Validate resiliency and failover strategies
💡 Interview Insight:
Discuss identifying weaknesses in distributed systems.
Q351. How do you implement contract testing?
Answer:
Use Pact or Spring Cloud Contract
Validate interaction contracts between services
💡 Interview Insight:
Explain preventing breaking changes and maintaining API consistency.
Q352. How do you implement end-to-end testing for microservices?
Answer:
Use test environment with all dependent services
Tools: TestContainers, Postman, WireMock
💡 Interview Insight:
Discuss realistic testing scenarios and integration verification.
Q353. How do you implement service mesh observability?
Answer:
Use Istio telemetry with Prometheus/Grafana
Track latency, error rates, and traffic flow
💡 Interview Insight:
Explain visualizing service dependencies and bottlenecks.
Q354. How do you implement distributed caching in microservices?
Answer:
Use Redis, Hazelcast, or Memcached
Implement consistent hashing or partitioning for large-scale caches
💡 Interview Insight:
Discuss improving performance and reducing service load.
Q355. How do you implement API throttling in Spring Cloud
Gateway?
Answer:
Use RequestRateLimiter filter with Redis or in-memory backend
Code Example:
@Bean
public RouteLocator routes(RouteLocatorBuilder builder) {
return [Link]()
.route(r -> [Link]("/api/**")
.filters(f -> [Link](c ->
[Link](redisLimiter())))
.uri("lb://USER-SERVICE"))
.build();
💡 Interview Insight:
Explain protecting backend services from overload.
Q356. How do you implement dynamic routing in Spring Cloud
Gateway?
Answer:
Use RouteLocator builder dynamically
Load routes from database or config server
💡 Interview Insight:
Discuss runtime flexibility and traffic management.
Q357. How do you implement distributed configuration rollback?
Answer:
Keep versioned configuration in Git
Rollback via Config Server refresh
💡 Interview Insight:
Explain recovery from faulty configuration changes.
Q358. How do you implement observability with OpenTelemetry?
Answer:
Instrument services using OpenTelemetry SDK
Export traces and metrics to backend (Jaeger, Prometheus)
💡 Interview Insight:
Discuss unified observability across microservices ecosystem.
Q359. How do you implement microservice health aggregation?
Answer:
Use CompositeHealthIndicator or Gateway to aggregate service
statuses
Provide consolidated /health endpoint
💡 Interview Insight:
Explain monitoring overall system health in production.
Q360. How do you implement feature toggling in microservices?
Answer:
Use FF4J, Togglz, or Spring @ConditionalOnProperty
Toggle features dynamically without redeployment
💡 Interview Insight:
Discuss controlled feature rollout and A/B testing.
Q361. How do you implement microservices testing with
TestContainers?
Answer:
Use Dockerized dependencies for integration tests
Provides consistent test environment
💡 Interview Insight:
Explain reproducible testing without affecting production.
Q362. How do you implement microservice performance
benchmarking?
Answer:
Use JMeter, Gatling, or Locust
Measure throughput, latency, and error rate
💡 Interview Insight:
Discuss identifying bottlenecks and scaling strategies.
Q363. How do you implement tracing across multiple clusters?
Answer:
Use globally unique trace IDs with OpenTelemetry/Sleuth
Aggregate traces in centralized backend
💡 Interview Insight:
Explain monitoring distributed systems across regions.
Q364. How do you implement service degradation/fallback?
Answer:
Use Circuit Breaker or fallback methods
Graceful degradation when service is unavailable
💡 Interview Insight:
Discuss improving user experience during failures.
Q365. How do you implement multi-tenant microservices?
Answer:
Use tenant-aware databases or schema separation
Inject tenant context dynamically
💡 Interview Insight:
Explain isolation, scalability, and secure multi-tenancy.
Q366. How do you implement dynamic service scaling?
Answer:
Use HorizontalPodAutoscaler with CPU/memory metrics
Combine with custom metrics (queue length, request latency)
💡 Interview Insight:
Explain elasticity and cost optimization for cloud-native services.
Q367. How do you implement advanced Kubernetes networking?
Answer:
Use NetworkPolicies to restrict traffic
Use Ingress for external routing
Use Istio or Linkerd for service-to-service policies
💡 Interview Insight:
Discuss security, traffic segmentation, and zero-trust network model.
Q368. How do you implement service mesh security policies?
Answer:
Define mTLS, authentication, and authorization in Istio/Linkerd
Apply AuthorizationPolicy and PeerAuthentication
💡 Interview Insight:
Explain enforcing secure communication and least-privilege access.
Q369. How do you implement distributed tracing with baggage
propagation?
Answer:
Include metadata (user ID, request ID) in traces
Propagate across services with Sleuth/OpenTelemetry
💡 Interview Insight:
Discuss contextual observability for debugging and analytics.
Q370. How do you implement observability dashboards?
Answer:
Use Grafana for metrics
Include Prometheus for backend metrics collection
Include Zipkin/Jaeger for tracing
💡 Interview Insight:
Explain end-to-end visibility of service performance.
Q371. How do you implement fault injection testing?
Answer:
Use Chaos Mesh or LitmusChaos to simulate failures
Validate resiliency and auto-healing
💡 Interview Insight:
Discuss detecting weaknesses before production failures occur.
Q372. How do you implement microservice graceful shutdown?
Answer:
Use preStop hook in Kubernetes
Drain connections and finish ongoing requests
💡 Interview Insight:
Explain zero-downtime deployments and smooth pod termination.
Q373. How do you implement database sharding in microservices?
Answer:
Split data horizontally across multiple databases
Use shard key for routing requests
💡 Interview Insight:
Discuss scalability, performance, and consistency trade-offs.
Q374. How do you implement service retries with backoff?
Answer:
Use Resilience4j Retry or Spring Retry
Apply exponential backoff for transient errors
💡 Interview Insight:
Explain idempotent calls to avoid duplicate processing.
Q375. How do you implement rate-limiting at API Gateway?
Answer:
Use Spring Cloud Gateway RequestRateLimiter
Can be backed by Redis for distributed environments
💡 Interview Insight:
Discuss protecting services from overload and abuse.
Q376. How do you implement secure secret management in
Kubernetes?
Answer:
Use Kubernetes Secrets or integrate with Vault
Avoid storing plaintext credentials in configs
💡 Interview Insight:
Explain secure storage, rotation, and access control.
Q377. How do you implement microservice blue/green deployment?
Answer:
Deploy old version (blue) and new version (green) simultaneously
Switch traffic via Ingress or service mesh routing
💡 Interview Insight:
Discuss zero-downtime releases and rollback strategies.
Q378. How do you implement service observability with
OpenTelemetry?
Answer:
Instrument code with OpenTelemetry SDK
Export traces and metrics to observability backends
💡 Interview Insight:
Explain unified observability across services, including metrics, logs, and
traces.
Q379. How do you implement microservice testing with WireMock?
Answer:
Mock dependent services during integration tests
Verify requests/responses without real service
💡 Interview Insight:
Discuss isolation and reproducibility in testing pipelines.
Q380. How do you implement distributed locking?
Answer:
Use Redis, Zookeeper, or etcd for distributed locks
Ensure concurrency control across services
💡 Interview Insight:
Explain preventing race conditions in distributed systems.
Q381. How do you implement microservice observability for SLA
monitoring?
Answer:
Collect latency, throughput, and error rates via Prometheus
Define alerting rules in Alertmanager
💡 Interview Insight:
Discuss proactive monitoring to meet service-level objectives.
Q382. How do you implement microservice request tracing?
Answer:
Inject trace IDs in HTTP headers
Use Sleuth/OpenTelemetry for propagation
💡 Interview Insight:
Explain correlating logs and metrics for end-to-end tracing.
Q383. How do you implement circuit breaker fallback for reactive
streams?
Answer:
Use Resilience4j Reactor module with fallback Mono/Flux
💡 Interview Insight:
Discuss handling reactive failures gracefully.
Q384. How do you implement microservice canary testing?
Answer:
Deploy new version to a small subset
Monitor metrics, logs, and traces
Gradually increase traffic
💡 Interview Insight:
Explain risk mitigation and incremental release.
Q385. How do you implement distributed transactions with
compensating actions?
Answer:
Implement saga pattern
Perform compensating actions if any step fails
💡 Interview Insight:
Discuss achieving eventual consistency without distributed locks.
Q386. How do you implement observability in serverless
microservices?
Answer:
Use OpenTelemetry + cloud provider tracing
Include function-level metrics and logs
💡 Interview Insight:
Explain monitoring ephemeral workloads effectively.
Q387. How do you implement persistent volumes in multi-cluster
deployments?
Answer:
Use cloud-managed storage with replication
Sync data across clusters using storage class and PVCs
💡 Interview Insight:
Discuss durability and failover across regions.
Q388. How do you implement advanced security with JWT and
OAuth2?
Answer:
Validate JWT tokens in services
Use OAuth2 for authentication and authorization
💡 Interview Insight:
Explain secure API access and role-based access control.
Q389. How do you implement logging correlation in microservices?
Answer:
Inject correlation ID in all service logs
Propagate via HTTP headers or messaging systems
💡 Interview Insight:
Explain debugging and end-to-end traceability.
Q390. How do you implement performance testing for
microservices?
Answer:
Use JMeter, Gatling, or Locust
Test under load for throughput, latency, and error rates
💡 Interview Insight:
Discuss identifying bottlenecks and capacity planning.
Q391. How do you implement multi-region microservices
deployment?
Answer:
Deploy clusters in multiple regions
Use global load balancers and service mesh routing
💡 Interview Insight:
Discuss latency optimization and disaster recovery.
Q392. How do you implement microservice chaos testing?
Answer:
Use LitmusChaos or Chaos Mesh
Introduce failures to test resiliency
💡 Interview Insight:
Explain verifying system robustness in production-like conditions.
Q393. How do you implement distributed rate limiting with Redis?
Answer:
Store counters per key in Redis
Enforce limits across multiple instances
💡 Interview Insight:
Discuss protecting services from high traffic spikes.
Q394. How do you implement API versioning for microservices?
Answer:
Use URI versioning (/v1/users) or header-based versioning
Maintain backward compatibility
💡 Interview Insight:
Explain seamless evolution without breaking clients.
Q395. How do you implement distributed configuration with GitOps?
Answer:
Store configs in Git
Use ArgoCD or Flux to deploy automatically to clusters
💡 Interview Insight:
Discuss version control, audit, and automated rollouts.
Q396. How do you implement microservice observability for error
budgets?
Answer:
Collect SLO/SLA metrics
Track errors and latencies
Alert when error budgets are exceeded
💡 Interview Insight:
Explain maintaining service reliability within defined thresholds.
Q397. How do you implement microservice security testing?
Answer:
Use penetration testing tools
Validate OAuth2/JWT, input validation, and dependency vulnerabilities
💡 Interview Insight:
Discuss proactive security measures for distributed systems.
Q398. How do you implement microservice load testing with
TestContainers?
Answer:
Use TestContainers to spin up real dependencies
Run performance tests in isolated, reproducible environments
💡 Interview Insight:
Explain realistic benchmarking for microservices.
Q399. How do you implement cross-cluster service discovery?
Answer:
Use global DNS, service mesh federation, or API gateway routing
Ensure services can locate endpoints across clusters
💡 Interview Insight:
Discuss high availability and inter-cluster communication.
Q400. How do you implement microservice observability best
practices?
Answer:
Collect metrics, logs, traces consistently
Use correlation IDs and structured logging
Monitor SLAs, error rates, and latency
Visualize dashboards and set alerts
💡 Interview Insight:
Explain end-to-end monitoring for reliability, performance, and
troubleshooting.
🧩 Part 7 — Performance, Optimization, and Miscellaneous Advanced
(Q401–Q500)
Q401. How do you improve Spring Boot application startup time?
Answer:
Use [Link]-initialization=true
Minimize @ComponentScan scope
Avoid unnecessary auto-configurations
Enable spring-boot-devtools only in dev
💡 Interview Insight:
Discuss trade-offs between eager vs lazy initialization for production
performance.
Q402. How do you reduce memory footprint in Spring Boot?
Answer:
Minimize bean creation
Use prototype scope judiciously
Use lightweight data structures and avoid caching everything
💡 Interview Insight:
Explain optimizing for heap usage and GC pressure.
Q403. How do you profile Spring Boot applications?
Answer:
Use JProfiler, YourKit, or VisualVM
Use Spring Boot Actuator /metrics and /heapdump
💡 Interview Insight:
Explain identifying memory leaks, CPU bottlenecks, and thread contention.
Q404. How do you optimize Hibernate queries?
Answer:
Use fetch joins to avoid N+1 problem
Use batch fetching
Enable second-level cache if applicable
💡 Interview Insight:
Discuss performance trade-offs between eager/lazy loading.
Q405. How do you implement caching for Spring Boot applications?
Answer:
Use @Cacheable, @CachePut, @CacheEvict
Backed by Redis, EhCache, or Caffeine
Code Example:
@Cacheable(value="users", key="#id")
public User getUser(Long id) { ... }
💡 Interview Insight:
Explain cache invalidation strategies and performance gains.
Q406. How do you monitor Spring Boot memory and GC metrics?
Answer:
Use Actuator /metrics
Integrate with Micrometer + Prometheus
💡 Interview Insight:
Discuss heap, non-heap usage, GC frequency, and tuning JVM.
Q407. How do you handle high concurrency in Spring Boot
applications?
Answer:
Use async processing (@Async)
Use reactive programming (WebFlux)
Optimize database connection pool and caching
💡 Interview Insight:
Explain avoiding bottlenecks and thread starvation.
Q408. How do you implement thread pools for async processing?
Answer:
Configure ThreadPoolTaskExecutor
Tune core size, max size, queue capacity
Code Example:
@Bean
public Executor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
[Link](10);
[Link](50);
[Link](100);
[Link]();
return executor;
💡 Interview Insight:
Discuss controlling concurrency and preventing resource exhaustion.
Q409. How do you prevent N+1 problem in JPA?
Answer:
Use @EntityGraph or fetch joins
Optimize OneToMany and ManyToOne mappings
💡 Interview Insight:
Explain query performance improvement in production.
Q410. How do you handle large datasets with Spring Data JPA?
Answer:
Use pagination with Pageable
Stream results with @Query and Streamable
Avoid loading all data into memory
💡 Interview Insight:
Discuss memory efficiency and scalability.
Q411. How do you implement reactive data access with R2DBC?
Answer:
Use R2dbcEntityTemplate or reactive repositories
Non-blocking, scalable database access
💡 Interview Insight:
Explain backpressure handling and resource optimization.
Q412. How do you tune database connection pool?
Answer:
Configure HikariCP: max pool size, idle timeout, connection timeout
Monitor for leaks and slow queries
💡 Interview Insight:
Discuss balancing throughput and resource usage.
Q413. How do you implement distributed locking for concurrent
operations?
Answer:
Use Redis SETNX or Redisson
Ensure only one process executes critical section
💡 Interview Insight:
Explain avoiding race conditions in microservices.
Q414. How do you handle deadlocks in database operations?
Answer:
Keep transactions short
Acquire locks in consistent order
Retry failed transactions
💡 Interview Insight:
Discuss concurrency control and maintaining data integrity.
Q415. How do you optimize Spring Boot logging for production?
Answer:
Use async logging (Logback AsyncAppender)
Adjust log levels and avoid excessive DEBUG logs
Use structured logging for better parsing
💡 Interview Insight:
Explain reducing I/O overhead and improving observability.
Q416. How do you implement connection pooling in reactive
applications?
Answer:
Use R2DBC pool
Tune max connections, validation queries, and idle timeout
💡 Interview Insight:
Discuss optimizing throughput and resource utilization.
Q417. How do you prevent memory leaks in Spring Boot?
Answer:
Avoid static references to beans
Clean up caches and listeners
Monitor heap dumps regularly
💡 Interview Insight:
Explain long-running service stability and GC tuning.
Q418. How do you implement asynchronous messaging with
RabbitMQ/Kafka?
Answer:
Use Spring Boot @KafkaListener or @RabbitListener
Ensure idempotent message processing
💡 Interview Insight:
Discuss decoupling services and scaling message handling.
Q419. How do you optimize REST API performance?
Answer:
Enable HTTP/2, gzip compression
Use pagination and selective fields
Cache responses when applicable
💡 Interview Insight:
Explain reducing latency and bandwidth usage.
Q420. How do you implement load testing and stress testing?
Answer:
Use JMeter, Gatling, or Locust
Identify throughput, bottlenecks, and response time
💡 Interview Insight:
Discuss capacity planning and proactive optimization.
Q421. How do you implement Spring Boot health check
optimizations?
Answer:
Disable expensive checks in actuator
Separate liveness and readiness probes
💡 Interview Insight:
Explain faster startup and better Kubernetes integration.
Q422. How do you implement advanced cache eviction strategies?
Answer:
Use TTL, LRU, LFU, or write-through strategies
Use Redis or Caffeine for flexible eviction policies
💡 Interview Insight:
Discuss balancing memory usage and hit rates.
Q423. How do you implement async exception handling?
Answer:
Use @Async with AsyncUncaughtExceptionHandler
Log and propagate failures properly
💡 Interview Insight:
Explain error handling in multi-threaded environments.
Q424. How do you optimize Spring Boot for low-latency
applications?
Answer:
Use non-blocking I/O (WebFlux)
Tune thread pools, connection pools, and caching
Reduce serialization/deserialization overhead
💡 Interview Insight:
Discuss end-to-end latency improvement strategies.
Q425. How do you monitor JVM GC and tune for performance?
Answer:
Use G1GC or ZGC for low-pause times
Monitor GC logs and heap usage
Adjust heap size and GC thresholds
💡 Interview Insight:
Explain minimizing pause times and improving throughput.
Q426. How do you profile CPU usage in Spring Boot?
Answer:
Use JVisualVM, YourKit, or JProfiler
Identify hotspot methods and optimize critical paths
💡 Interview Insight:
Discuss finding CPU-intensive operations and improving throughput.
Q427. How do you implement reactive backpressure handling?
Answer:
Use Flux with onBackpressureBuffer, onBackpressureDrop, or
onBackpressureLatest
Ensure consumers are not overwhelmed
💡 Interview Insight:
Explain stability under high load in reactive pipelines.
Q428. How do you optimize reactive database calls?
Answer:
Use R2DBC with batch queries
Limit fetch size and stream results
Avoid blocking operations inside reactive chains
💡 Interview Insight:
Discuss non-blocking I/O and high concurrency support.
Q429. How do you implement Spring Boot actuator for production?
Answer:
Enable only necessary endpoints
Secure /actuator with roles and authentication
Integrate metrics with Prometheus/Grafana
💡 Interview Insight:
Explain safe observability and minimal attack surface.
Q430. How do you implement asynchronous event processing with
error handling?
Answer:
Use @Async or messaging system (Kafka/Rabbit)
Implement retries, DLQ (Dead Letter Queue), and idempotency
💡 Interview Insight:
Discuss reliable asynchronous workflows.
Q431. How do you optimize database indexing for microservices?
Answer:
Use composite indexes for frequently queried columns
Avoid over-indexing
Monitor query performance and slow logs
💡 Interview Insight:
Explain trade-offs between write performance and read efficiency.
Q432. How do you implement Spring Boot startup profiling?
Answer:
Enable spring-boot-starter-actuator
Use ApplicationStartedEvent and ApplicationReadyEvent
Measure initialization times for beans
💡 Interview Insight:
Discuss optimizing startup for large applications.
Q433. How do you implement reactive stream parallel processing?
Answer:
Use .parallel() and .runOn([Link]())
Control concurrency to avoid overwhelming resources
💡 Interview Insight:
Explain achieving high throughput while maintaining resource efficiency.
Q434. How do you implement database connection leak detection?
Answer:
Configure HikariCP leak detection threshold
Log and monitor long-lived connections
💡 Interview Insight:
Discuss maintaining pool stability and avoiding connection starvation.
Q435. How do you implement advanced caching patterns?
Answer:
Cache Aside, Read-Through, Write-Through, Write-Behind
Use distributed cache with TTL and eviction policies
💡 Interview Insight:
Explain patterns for performance and data consistency.
Q436. How do you implement microservice load balancing
strategies?
Answer:
Use Spring Cloud LoadBalancer or Ribbon (deprecated)
Strategies: Round-robin, weighted, least connections, zone-aware
💡 Interview Insight:
Discuss optimizing request distribution across instances.
Q437. How do you optimize Spring Boot for low GC pause time?
Answer:
Use G1GC or ZGC
Tune heap size, survivor ratio, and GC threads
Avoid unnecessary object creation
💡 Interview Insight:
Explain minimizing latency in high-throughput applications.
Q438. How do you implement asynchronous logging?
Answer:
Use Logback AsyncAppender
Write logs off the main thread to reduce I/O blocking
💡 Interview Insight:
Discuss improving request latency and system responsiveness.
Q439. How do you implement reactive caching?
Answer:
Use Mono/Flux with cache lookup
Populate cache asynchronously if missing
💡 Interview Insight:
Explain non-blocking caching in reactive pipelines.
Q440. How do you optimize JSON serialization/deserialization?
Answer:
Use Jackson ObjectMapper optimizations
Avoid unnecessary nested objects
Consider binary serialization formats like Protobuf
💡 Interview Insight:
Discuss reducing CPU usage and network payload.
Q441. How do you implement bulk inserts/updates efficiently?
Answer:
Use batch inserts with Hibernate Session or JDBC batch
Disable auto-flush temporarily for bulk operations
💡 Interview Insight:
Explain reducing round-trips and improving DB throughput.
Q442. How do you implement microservice startup order
management?
Answer:
Use @DependsOn annotation for critical beans
In Kubernetes, use readiness probes to control traffic
💡 Interview Insight:
Discuss avoiding race conditions during service startup.
Q443. How do you optimize Spring Boot application for high
throughput?
Answer:
Use reactive programming
Tune thread pools and connection pools
Minimize blocking operations
Use caching and efficient DB queries
💡 Interview Insight:
Explain end-to-end optimizations for high request volume.
Q444. How do you implement bulkhead isolation pattern?
Answer:
Isolate critical resources (thread pools, DB connections) per service or
endpoint
Prevent cascading failures
💡 Interview Insight:
Discuss improving system resilience under partial failure.
Q445. How do you implement idempotency for REST APIs?
Answer:
Use unique request ID or token
Ensure repeated requests do not modify state multiple times
💡 Interview Insight:
Explain reliability in distributed systems with retries.
Q446. How do you optimize Spring Boot actuator for production?
Answer:
Expose only essential endpoints
Secure endpoints with roles and authentication
Monitor metrics externally rather than frequent internal polling
💡 Interview Insight:
Discuss safe observability without performance penalties.
Q447. How do you implement microservice concurrency control?
Answer:
Use synchronized methods, locks, or distributed locks
Limit thread pool sizes and queue capacities
💡 Interview Insight:
Explain preventing race conditions and resource exhaustion.
Q448. How do you implement Spring Boot reactive security?
Answer:
Use spring-boot-starter-security with WebFlux
Non-blocking JWT authentication and authorization
💡 Interview Insight:
Discuss maintaining security in high-concurrency reactive pipelines.
Q449. How do you implement microservice graceful degradation?
Answer:
Provide fallback responses or cached data
Use circuit breaker and retries
💡 Interview Insight:
Explain maintaining user experience during service failure.
Q450. How do you implement efficient pagination for large
datasets?
Answer:
Use LIMIT/OFFSET or keyset pagination
Avoid fetching all rows into memory
💡 Interview Insight:
Discuss performance optimization for APIs and database queries.
Q451. How do you implement Spring Boot memory profiling?
Answer:
Use VisualVM or YourKit to monitor heap, GC, and object retention
Analyze memory leaks and optimize object creation
💡 Interview Insight:
Explain maintaining stable long-running services.
Q452. How do you optimize REST endpoints for latency?
Answer:
Reduce serialization overhead
Use HTTP/2 and keep-alive connections
Minimize DB calls per request
💡 Interview Insight:
Discuss end-to-end latency improvement strategies.
Q453. How do you implement Spring Boot batch job optimizations?
Answer:
Use chunk-oriented processing
Tune commit interval, thread pools, and job partitioning
Use stateless steps for scalability
💡 Interview Insight:
Explain improving throughput and minimizing memory usage.
Q454. How do you implement rate limiting with Redis for distributed
services?
Answer:
Use Redis INCR or Lua scripts to enforce limits
Track per-client requests across nodes
💡 Interview Insight:
Discuss protecting services from high traffic bursts.
Q455. How do you implement microservice observability best
practices?
Answer:
Use structured logs, metrics, and distributed traces
Aggregate logs and monitor metrics centrally
Set alerting rules for SLA violations
💡 Interview Insight:
Explain achieving end-to-end visibility and troubleshooting.
Q456. How do you implement Spring Boot reactive connection
pooling?
Answer:
Use R2DBC connection pool
Tune max connections, validation, and idle timeout
💡 Interview Insight:
Discuss non-blocking DB access optimization.
Q457. How do you implement efficient bulk read operations?
Answer:
Use streaming queries or pagination
Avoid loading all records into memory
💡 Interview Insight:
Explain scalability and memory optimization.
Q458. How do you implement Spring Boot async request handling?
Answer:
Use @Async or reactive endpoints (Mono/Flux)
Return futures or reactive types for non-blocking processing
💡 Interview Insight:
Discuss improving throughput and responsiveness.
Q459. How do you implement garbage collection tuning?
Answer:
Use G1GC or ZGC for low-latency applications
Tune heap size, GC threads, and pause thresholds
💡 Interview Insight:
Explain reducing GC pauses and improving application stability.
Q460. How do you implement advanced Hibernate performance
tuning?
Answer:
Use batch operations, fetch joins, and query caching
Minimize unnecessary lazy loading
Monitor SQL logs for optimization
💡 Interview Insight:
Discuss balancing memory usage, latency, and throughput.
Q461. How do you implement Spring Boot asynchronous exception
handling?
Answer:
Configure AsyncUncaughtExceptionHandler for @Async methods
Log errors and optionally notify monitoring systems
💡 Interview Insight:
Explain maintaining reliability in async operations.
Q462. How do you implement microservice retry policies with
backoff?
Answer:
Use Resilience4j Retry with exponential backoff
Apply for transient failures
💡 Interview Insight:
Discuss idempotency and avoiding cascading retries.
Q463. How do you implement Spring Boot startup optimizations for
large applications?
Answer:
Enable lazy bean initialization
Limit @ComponentScan
Avoid unnecessary auto-configuration
💡 Interview Insight:
Explain reducing startup time in microservices ecosystem.
Q464. How do you implement non-blocking file processing?
Answer:
Use reactive streams (Flux<DataBuffer>)
Process large files asynchronously without blocking threads
💡 Interview Insight:
Discuss memory efficiency and high throughput.
Q465. How do you implement Spring Boot metrics for reactive
pipelines?
Answer:
Use Micrometer with WebFlux
Track request latency, throughput, and error rates
💡 Interview Insight:
Explain observability for non-blocking applications.
Q466. How do you implement efficient WebSocket handling in Spring
Boot?
Answer:
Use @EnableWebSocket or @ServerEndpoint
Use non-blocking thread pools and message batching
💡 Interview Insight:
Discuss low-latency bi-directional communication.
Q467. How do you implement Spring Boot application monitoring
with Prometheus?
Answer:
Expose /actuator/prometheus
Configure Prometheus to scrape metrics
Visualize in Grafana dashboards
💡 Interview Insight:
Explain continuous monitoring and SLA tracking.
Q468. How do you implement memory-efficient reactive streams?
Answer:
Use Flux with .limitRate()
Avoid accumulating large buffers in memory
Apply backpressure strategies
💡 Interview Insight:
Discuss maintaining stability under high load.
Q469. How do you implement Spring Boot health endpoint
optimizations?
Answer:
Split liveness and readiness checks
Disable expensive checks in readiness probes
💡 Interview Insight:
Explain improving startup time and Kubernetes readiness.
Q470. How do you implement distributed metrics aggregation?
Answer:
Push metrics to Prometheus push gateway or use pull model
Aggregate service-level metrics for dashboards
💡 Interview Insight:
Discuss multi-service visibility and alerting.
Q471. How do you implement Spring Boot async REST endpoints?
Answer:
Return DeferredResult or Mono/Flux
Process requests in separate threads or reactive pipelines
💡 Interview Insight:
Explain handling high-concurrency requests efficiently.
Q472. How do you implement Spring Boot HTTP/2 optimization?
Answer:
Enable HTTP/2 in server properties
Use multiplexed connections for reduced latency
💡 Interview Insight:
Discuss throughput improvements and better connection reuse.
Q473. How do you implement advanced serialization strategies?
Answer:
Use Protobuf, Avro, or MessagePack for compact binary payloads
Avoid redundant nested objects and repeated serialization
💡 Interview Insight:
Explain network and CPU optimization.
Q474. How do you implement Spring Boot batch job partitioning?
Answer:
Split large jobs into partitions
Process in parallel for better performance
💡 Interview Insight:
Discuss throughput improvement and resource utilization.
Q475. How do you implement microservice distributed tracing in
production?
Answer:
Use Sleuth/OpenTelemetry
Export traces to Zipkin or Jaeger
Propagate trace IDs across all service calls
💡 Interview Insight:
Explain debugging and latency analysis in complex systems.
Q476. How do you implement Spring Boot advanced garbage
collection tuning?
Answer:
Use G1GC for low-latency or ZGC for large heaps
Tune heap sizes, region sizes, and pause targets
💡 Interview Insight:
Discuss reducing GC impact in production workloads.
Q477. How do you implement microservice dead-letter queues?
Answer:
Use Kafka/RabbitMQ DLQ
Route failed messages for reprocessing or investigation
💡 Interview Insight:
Explain reliability and error handling in asynchronous systems.
Q478. How do you implement Spring Boot actuator metrics tuning?
Answer:
Adjust meter refresh rates
Enable only required metrics to reduce overhead
💡 Interview Insight:
Discuss performance vs observability trade-offs.
Q479. How do you implement microservice circuit breaker patterns?
Answer:
Use Resilience4j or Spring Cloud CircuitBreaker
Configure failure threshold, wait duration, and fallback
💡 Interview Insight:
Explain preventing cascading failures.
Q480. How do you implement reactive backpressure with retries?
Answer:
Combine retryBackoff with onBackpressureBuffer
Ensure non-blocking error recovery
💡 Interview Insight:
Discuss stability under high request load.
Q481. How do you implement Spring Boot advanced metrics?
Answer:
Custom MeterBinder for service-specific metrics
Export to Prometheus/Grafana
💡 Interview Insight:
Explain capturing business-relevant metrics.
Q482. How do you implement microservice data partitioning?
Answer:
Horizontal partitioning by shard key
Avoid cross-partition joins
💡 Interview Insight:
Discuss performance and scalability improvements.
Q483. How do you implement Spring Boot reactive streaming of
large datasets?
Answer:
Use Flux with limitRate and backpressure
Stream data directly to client without full memory load
💡 Interview Insight:
Explain memory efficiency and responsiveness.
Q484. How do you implement JVM heap monitoring in production?
Answer:
Use Micrometer [Link] metrics
Monitor heap, non-heap, and GC behavior
💡 Interview Insight:
Discuss preventing OOM errors and tuning GC.
Q485. How do you implement microservice rate limiting with token
bucket?
Answer:
Use Redis or Guava RateLimiter
Enforce request limits per client/service
💡 Interview Insight:
Explain controlling traffic spikes safely.
Q486. How do you implement advanced SQL query optimization?
Answer:
Use explain plans, indexes, batch operations
Avoid SELECT * and excessive joins
💡 Interview Insight:
Discuss improving DB throughput and latency.
Q487. How do you implement Spring Boot request logging with
MDC?
Answer:
Inject correlation IDs in MDC
Ensure logs can be traced across threads
💡 Interview Insight:
Explain observability and debugging in multi-threaded apps.
Q488. How do you implement Spring Boot async exception handling
with future?
Answer:
Handle CompletableFuture exceptions
Log and propagate appropriately
💡 Interview Insight:
Discuss safe error handling in async workflows.
Q489. How do you implement reactive stream error recovery?
Answer:
Use onErrorResume or onErrorContinue
Provide fallback values or retry
💡 Interview Insight:
Explain resilience in non-blocking reactive pipelines.
Q490. How do you implement microservice SLA monitoring?
Answer:
Define metrics (latency, error rate, availability)
Track with Prometheus/Grafana
Trigger alerts when SLA is breached
💡 Interview Insight:
Discuss maintaining contractual service quality.
Q491. How do you implement Spring Boot HTTP request throttling?
Answer:
Use Spring Cloud Gateway RequestRateLimiter
Control requests per IP or client
💡 Interview Insight:
Explain protecting backend from overload.
Q492. How do you implement Spring Boot async request timeout
handling?
Answer:
Configure DeferredResult or WebAsyncTask timeout
Provide fallback or error response
💡 Interview Insight:
Discuss reliability under high load.
Q493. How do you implement Spring Boot resource monitoring?
Answer:
Track CPU, memory, threads, file descriptors
Use Actuator + Micrometer metrics
💡 Interview Insight:
Explain proactive performance monitoring.
Q494. How do you implement microservice graceful shutdown with
Spring Boot?
Answer:
Listen to ApplicationEvent for shutdown
Finish pending requests, close resources, deregister from service
discovery
💡 Interview Insight:
Discuss zero-downtime deployments.
Q495. How do you implement high-throughput reactive database
writes?
Answer:
Use batch inserts in R2DBC
Apply backpressure to avoid overwhelming DB
Avoid blocking operations
💡 Interview Insight:
Discuss scalability and performance tuning.
Q496. How do you implement Spring Boot memory leak detection?
Answer:
Use heap dumps with VisualVM or YourKit
Monitor cache and listener growth
Analyze object retention
💡 Interview Insight:
Explain long-term stability in production systems.
Q497. How do you implement Spring Boot endpoint throttling with
reactive streams?
Answer:
Limit request rate using operators like limitRate
Combine with Circuit Breaker/fallback
💡 Interview Insight:
Discuss protecting resources in high-load environments.
Q498. How do you implement Spring Boot async logging with
structured logs?
Answer:
Use Logback AsyncAppender + JSON encoder
Include correlation IDs and contextual information
💡 Interview Insight:
Explain observability and debugging efficiency.
Q499. How do you implement Spring Boot profiling for CPU and
memory bottlenecks?
Answer:
Use Java Flight Recorder, VisualVM, or YourKit
Profile threads, memory, and hotspots
Optimize critical code paths
💡 Interview Insight:
Discuss proactive performance optimization.
Q500. How do you implement Spring Boot end-to-end performance
best practices?
Answer:
Optimize startup, thread pools, reactive pipelines
Tune Hibernate, database queries, and caching
Implement monitoring, metrics, tracing, and rate limiting
Profile CPU/memory, tune GC, and reduce latency
💡 Interview Insight:
Explain a holistic approach to high-performance, production-ready Spring
Boot applications.
✅ Part 7 (Q401–Q500) complete
Now we have 500+ Spring Boot interview questions with
answers, fully covering:
o Core Spring Boot & Java topics
o Spring Security, JPA/Hibernate, REST & WebFlux
o Spring Cloud & Microservices
o Kubernetes, Observability, Logging, Metrics
o Performance optimization, concurrency, and advanced patterns