1st Round (DSA + Technical): 1.5 hours
**Theory: **
- Java 11 new features , Java 8 new features
- Functional interfaces - ones introduced in Java 8
- Lambda functions : uses, examples
- How generics work under the hood
- Exception hierarchy in java
- Hashmap internal working
- HashSet vs HashMap
- Polymorphism in java : types and how they work
- Streams - uses
- Method overloading vs overriding
- Transaction management in Spring/Hibernate
- REST api - good practices
Coding:
- Given an array of strings, group the anagrams together Input: strs = ["eat","tea","tan","ate","nat","bat"] Output: [["bat"],["nat","tan"],["ate","eat","tea"]]
- Given a string array of sentences use stream api to return distinct list of words that start with #
- String[] sentences = {
"Here is a #sample sentence.",
"This is another #example of a sentence.",
"#Java streams are powerful.",
"Find words that start with #."
};
Note: Coding has to be done in an online editor provided by interviewer. Do-not expect auto-indentation or syntax-suggestions. Even run/execute button is disabled (Only interviewer can execute)
2nd Round (DSA + Technical) : 1.5 hours
- Introduce yourself : skills, tech-stack, projects
- Features introduced in Java 8 , Use of Streams, functional interfaces
- Stream related basic Java program
- CAP theorem
- SAGA pattern
- Spring boot annotations : @Qualifier , @Primary
- Normalization in DB: why to normalize, types of normalization
- Design a Popularity counter class with methods,
- incCounter(String uid);
- decCounter(String uid);
- getMostPopularContent();
- https://leetcode.com/problems/task-scheduler/description/
3rd round (Techno-managerial) : 1 hr
- Introduce yourself : skills, tech-stack, projects
- Explain architecture in detail of current project that you’re working on. Draw using draw.io
- Explain each component of the micro-services architecture:
- Service registry -how it works, what is heartbeat message ? where is it configured and what parameters.
- API gateway : Deep dive into internal working and configuration, how it routes request to an instance of a service
- Config server : what configurations are stored and how it is fetched by services
- Explain the steps/configuration changes needed if you have to introduce a new micro-service to the current application — (IN DEPTH)
- How microservice communication is handled - synchronous vs asynchronous (RESTTemplate , FeignClient)
- Microservice patterns : 2PC, Saga, CQRS (Questions related to practical implementation) ,drawbacks of Saga
- How monitoring is done in current project
- How logging is implemented : In depth steps/algo how log aggregation (like ELK ) works internally
- CI/CD used in current project (Jenkins) : How CI/CD pipeline works for a Java application via Jenkins (In depth)
- Mention 2 challenging/critical features you have implemented or fixed