Summary
I interviewed for an SDE-2 Backend role at Truemeds in Mumbai. I completed two technical rounds but was ultimately not selected as I was unable to provide the expected answers to some conceptual questions, despite solving the coding problems.
Full Experience
I saw a post on LinkedIn by a Lead Software Engineer of Truemeds hiring for backend engineers (SDE I/II/III/Lead) and shared my resume over email. I got an email after 8 days saying that my profile was shortlisted for interview rounds, and the first round would be taken by BarRaiser (third-party). The Truemeds HR called to schedule an interview the next day itself.
Round 1 - BarRaiser (1.5 hours)
The key focus areas mentioned were:
- Database
- Java Internals and Springboot
- Coding and Problem Solving (Java)
- DSA
Database
- SQL vs NoSQL Schema difference.
- What is Normalisation?
- Role of Group By and Having Clause.
- How does MongoDB handle large datasets?
- Difference between LEFT JOIN and INNER JOIN.
- A user table has the last login date as a column. Write a SQL query to find all the users who have been inactive for more than 90 days.
Java Internals and Springboot
- Role of API Gateway in microservices.
- Purpose of Container orchestration.
- Explain an orchestrator service.
- Concept of generics in Java.
- What is a circuit breaker in microservices?
- How to configure to integrate JPA in Spring Boot?
- What are inner classes? Explain their types.
- What is an anonymous class?
- Difference between shallow copy and deep copy.
- Purpose of @SpringBootApplication annotation.
- @AutoConfiguration annotation.
- What do Lombok annotations offer?
- What are starters in Spring Boot?
Problem Solving/DSA (Java)
- LC 283. Move Zeroes
- Stack and Queue difference
- GFG Implement Stack using Array
Although in the mail it was mentioned the interview was for 90 minutes, it was wrapped up in 70 minutes. I faced internet issues a couple of times, and thankfully it did not affect the interview. In the end, I asked for feedback, and he said to read more about distributed systems, and the rest was good. Overall, I felt the interview went positively. Although I read numerous posts on Leetcode beforehand about people's negative experiences with BarRaiser as a third-party interviewing company, I was fortunate to have a good experience. It probably depends on the interviewer to interviewer.
Round 2 - Technical Discussion (1 hour)
- LC 11. Container With Most Water
- Stream API - groupingBy
- HashMap and LinkedHashMap
- How to solve deadlock using threads in Java?
- try/catch/finally block concepts
- @Repository use in Spring Boot.
- What happens if we replace @Repository with @Service in the DTO class?
- Which is better between @Autowired and constructor injection?
- To write some REST API endpoints.
- How to insert and get data in Elasticsearch?
- How to handle 1M users trying to hit an endpoint?
- How does Redis work?
- How to use pagination in Spring Boot?
- How can we solve circular dependency in Spring Boot?
- How can we see all logs of microservices in Spring Boot in a single place?
- Explain @Transactional and @Profile annotation in Spring Boot.
- SQL query involving GROUP BY and HAVING.
This round was average, according to me. Although I was able to solve all the coding problems, I was unable to provide the expected answers to some of the conceptual questions. Also, I had a hard time understanding the interviewer's accent.
After 1 week followed up with HR to know that they would not move ahead with my candidature.
Interview Questions (39)
Explain the difference between SQL and NoSQL database schemas.
What is Normalization in database design? Explain its purpose.
Explain the role and usage of GROUP BY and HAVING clauses in SQL.
How does MongoDB handle large datasets and scaling?
Explain the difference between LEFT JOIN and INNER JOIN in SQL.
A user table has the last login date as a column. Write a SQL query to find all the users who have been inactive for more than 90 days.
Explain the role of an API Gateway in a microservices architecture.
What is the purpose of container orchestration?
Explain what an orchestrator service is and how it works.
Explain the concept of generics in Java.
What is a circuit breaker pattern in microservices, and how does it work?
How do you configure and integrate JPA (Java Persistence API) in a Spring Boot application?
What are inner classes in Java? Explain their different types.
What is an anonymous class in Java?
Explain the difference between shallow copy and deep copy.
What is the purpose of the @SpringBootApplication annotation?
Explain the @AutoConfiguration annotation.
What benefits do Lombok annotations offer in Java development?
What are 'starters' in Spring Boot and what is their purpose?
Explain the difference between a Stack and a Queue data structure.
Given n non-negative integers a1, a2, ..., an where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of the line i are (i, ai) and (i, 0). Find two lines, which, together with the x-axis forms a container, such that the container contains the most water. Return the maximum amount of water a container can store.
Explain the usage of groupingBy collector in Java Stream API.
Explain the differences between HashMap and LinkedHashMap in Java.
How can deadlocks be detected and resolved or prevented when working with threads in Java?
Explain the concepts and usage of try, catch, and finally blocks in Java exception handling.
What is the purpose and usage of the @Repository annotation in Spring Boot?
What are the implications if you replace the @Repository annotation with @Service in a DTO class in Spring Boot?
Discuss the pros and cons of @Autowired vs constructor injection in Spring, and which is generally preferred.
Design and write code for some example REST API endpoints.
How do you insert and retrieve data in Elasticsearch?
How would you design a system to handle 1 million concurrent users hitting an endpoint?
Explain the internal working principles of Redis.
How do you implement pagination in a Spring Boot application?
How can circular dependencies be identified and resolved in a Spring Boot application?
How can you centralize and view logs from multiple microservices in Spring Boot in a single place?
Explain the purpose and usage of @Transactional and @Profile annotations in Spring Boot.
Write a SQL query that involves the use of GROUP BY and HAVING clauses.