1.
Core Java
Q: What are the key differences between an interface and an abstract class in Java 8 and above?
A:
- Interfaces can have default and static methods since Java 8.
- Abstract classes can have constructors and instance variables, interfaces cannot (until Java 9's
private methods, with limitations).
- Use interfaces for contracts, abstract classes when you need base functionality.
2. Collections Framework
Q: How does ConcurrentHashMap differ from HashMap in terms of thread safety and performance?
A:
- ConcurrentHashMap is thread-safe using segment-based locking (up to Java 7) and bucket-level
locking (Java 8+).
- HashMap is not thread-safe; it can lead to race conditions.
- CHM doesn't allow null keys or values, unlike HashMap.
3. Multithreading
Q: How do you handle thread safety in a high-concurrency environment?
A:
- Use concurrent collections like ConcurrentHashMap.
- Prefer synchronized, ReentrantLock, or atomic variables (AtomicInteger) depending on the case.
- Use thread pools (ExecutorService) for better resource management.
4. Spring Boot
Q: How do you manage profiles and configurations in a Spring Boot microservice application?
A:
- Use application-{profile}.yml and activate via [Link].
- Externalize configs using Spring Cloud Config Server or environment variables.
- Profiles help separate dev, QA, and prod configurations.
5. Microservices
Q: How do you handle inter-service communication and failure in microservices?
A:
- Use REST (via Feign clients), gRPC, or messaging systems (like Kafka).
- Implement circuit breakers using Resilience4j or Hystrix.
- Apply service discovery with Eureka/Consul and client-side load balancing with Ribbon or Spring
Cloud LoadBalancer.
6. Java 8 Features
Q: Explain how Optional, Streams, and Lambdas can be used for cleaner code.
A:
- Optional avoids null checks and makes APIs more expressive.
- Streams support declarative processing of collections.
- Lambdas reduce boilerplate in functional interfaces, especially in sorting or filtering.
7. AWS or Angular 2+
Q (AWS): How do you design a scalable, resilient service architecture on AWS?
A:
- Use EC2 with Auto Scaling, ALB for load balancing, RDS/Aurora for managed DBs.
- Use S3 for storage, CloudWatch for monitoring, and SNS/SQS for decoupling services.
- Apply IAM roles, security groups, and VPC for security.
Q (Angular): How do you optimize Angular apps for performance?
A:
- Use lazy loading for modules, OnPush change detection strategy.
- Tree shaking and AOT compilation.
- Efficient DOM manipulation and using RxJS for reactive programming.