Truemeds | SDE-2 Backend | Mumbai | Interview Experience
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)
SQL vs NoSQL Schema Difference
Explain the difference between SQL and NoSQL database schemas.
Database Normalization
What is Normalization in database design? Explain its purpose.
SQL GROUP BY and HAVING Clauses
Explain the role and usage of GROUP BY and HAVING clauses in SQL.
MongoDB Large Datasets
How does MongoDB handle large datasets and scaling?
SQL LEFT JOIN vs INNER JOIN
Explain the difference between LEFT JOIN and INNER JOIN in SQL.
SQL Query: Inactive Users
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.
API Gateway in Microservices
Explain the role of an API Gateway in a microservices architecture.
Container Orchestration Purpose
What is the purpose of container orchestration?
Orchestrator Service Explanation
Explain what an orchestrator service is and how it works.
Java Generics Concept
Explain the concept of generics in Java.
Circuit Breaker in Microservices
What is a circuit breaker pattern in microservices, and how does it work?
Integrate JPA in Spring Boot
How do you configure and integrate JPA (Java Persistence API) in a Spring Boot application?
Java Inner Classes
What are inner classes in Java? Explain their different types.
Java Anonymous Class
What is an anonymous class in Java?
Shallow Copy vs Deep Copy
Explain the difference between shallow copy and deep copy.
@SpringBootApplication Annotation Purpose
What is the purpose of the @SpringBootApplication annotation?
@AutoConfiguration Annotation
Explain the @AutoConfiguration annotation.
Lombok Annotations Benefits
What benefits do Lombok annotations offer in Java development?
Spring Boot Starters
What are 'starters' in Spring Boot and what is their purpose?
Move Zeroes
Given an integer array nums, move all 0's to the end of it while maintaining the relative order of the non-zero elements. Note that you must do this in-place without making a copy of the array.
Stack vs Queue Difference
Explain the difference between a Stack and a Queue data structure.
Implement Stack using Array
Implement a stack data structure using an array. Provide methods for push, pop, peek, and isEmpty.
Container With Most Water
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.
Java Stream API groupingBy
Explain the usage of groupingBy collector in Java Stream API.
HashMap vs LinkedHashMap
Explain the differences between HashMap and LinkedHashMap in Java.
Solving Deadlock in Java Threads
How can deadlocks be detected and resolved or prevented when working with threads in Java?
Java try/catch/finally
Explain the concepts and usage of try, catch, and finally blocks in Java exception handling.
@Repository Annotation in Spring Boot
What is the purpose and usage of the @Repository annotation in Spring Boot?
Replacing @Repository with @Service in DTO
What are the implications if you replace the @Repository annotation with @Service in a DTO class in Spring Boot?
@Autowired vs Constructor Injection
Discuss the pros and cons of @Autowired vs constructor injection in Spring, and which is generally preferred.
Design REST API Endpoints
Design and write code for some example REST API endpoints.
Elasticsearch Data Operations
How do you insert and retrieve data in Elasticsearch?
Scaling for 1 Million Concurrent Users
How would you design a system to handle 1 million concurrent users hitting an endpoint?
Redis Working Principles
Explain the internal working principles of Redis.
Pagination in Spring Boot
How do you implement pagination in a Spring Boot application?
Solving Circular Dependency in Spring Boot
How can circular dependencies be identified and resolved in a Spring Boot application?
Centralized Microservice Logging
How can you centralize and view logs from multiple microservices in Spring Boot in a single place?
Spring Boot @Transactional and @Profile
Explain the purpose and usage of @Transactional and @Profile annotations in Spring Boot.
SQL Query with GROUP BY and HAVING
Write a SQL query that involves the use of GROUP BY and HAVING clauses.