CleverTap | Senior Backend Engineer | Interview Experience
Summary
I interviewed for a Senior Backend Engineer role at CleverTap, starting with an online assessment and proceeding through two technical rounds. Despite strong performance in the initial DSA round, I ultimately faced rejection after struggling with system design and multi-threading problems in the later stages.
Full Experience
I applied for a Senior Backend Engineer position at CleverTap after filling out a Google form shared by HR on LinkedIn. Based in Mumbai, I received a HackerEarth online test link about a month later, which I had to complete within two days. I was informed that my candidacy depended on successfully passing this assessment.
Round 0 - Online Coding Assessment (2 hours)
This round comprised three Data Structures and Algorithms questions, broadly covering concepts like sieve prime factorization, DFS on connected components, and string palindrome checks. I successfully passed all test cases within the given time. Following up with the recruiter a week later, I learned I had qualified for the next stage. She then called to discuss the next steps and scheduled my first technical round for the following week.Technical Round 1 (60 minutes)
This round was conducted by a senior backend engineer. The interview began with introductions, followed by questions based on my current projects, Data Structures and Algorithms, and my resume.Project-Based Questions:
- I was asked about the most complex feature I had built in my current project.
- The interviewer delved into SQL vs NoSQL, and ACID vs BASE properties.
- I was presented with several scenarios and asked to explain which database I would prefer and why, along with discussing the disadvantages of SQL.
- There was a deep dive into blob storage concepts.
Data Structures and Algorithms:
- The first question was LeetCode 39, "Combination Sum." The expectation was to code the solution and perform a dry run on various test cases.
- The second question was LeetCode 15, "3Sum." For this, I only needed to explain different approaches and their time/space complexities.
Resume-Based Questions:
- Discussions revolved around concepts like availability, SLA, load balancers, microservices architecture, and data replication.
- I was also asked about database optimization techniques.
Towards the end, I inquired about any in-house tools the interviewer was working on. This round had a significant focus on system design. Overall, I received good feedback, which led me to expect a call for the next round.
A week later, the recruiter called to provide detailed feedback on my Round 1 performance, which I greatly appreciated as very few companies offer such comprehensive insights. My second round was scheduled for the very next day.
Technical Round 2 (60 minutes)
This round was conducted by an associate director and placed a heavier emphasis on system design. It started with introductions and a discussion about my top three features built in my current project. I was then questioned on Kafka brokers, topics, partitions, and their underlying mechanisms. Following this, I was given a system design problem: to create a generic queue system for teams to utilize. I struggled to fully understand the description and how to approach the problem. When I tried to propose an API design, the interviewer consistently posed counter-questions to everything I suggested, and I found myself unable to answer well. Finally, he presented a Java programming problem where the goal was to manage multiple threads such that at most two threads would run in parallel. Given my average multi-threading skills, I wasn't very comfortable with this. It wasn't a good round for me, as I couldn't provide the exact solutions the interviewer expected and found it difficult to explain my thoughts.As anticipated, I received a rejection email later that day.
Interview Questions (11)
Describe the most complex feature you've built in your current project.
Discuss the differences between SQL and NoSQL databases, and explain the ACID (Atomicity, Consistency, Isolation, Durability) and BASE (Basically Available, Soft state, Eventually consistent) properties.
Given various hypothetical scenarios, choose the preferred database (SQL/NoSQL) and justify your choice. Additionally, discuss the inherent disadvantages of SQL databases.
Provide a comprehensive, in-depth explanation of blob storage, covering its principles, use cases, and underlying mechanisms.
Discuss fundamental concepts related to system design, including system availability, Service Level Agreements (SLA), the role and implementation of load balancers, microservices architecture, and data replication strategies.
Explain various techniques and strategies used for optimizing database performance, covering aspects like indexing, query optimization, schema design, and caching.
Discuss core concepts of Apache Kafka, including the roles of brokers, topics, partitions, and their underlying mechanisms for message production, consumption, and storage.
Design a generic, scalable queue system that can be easily adopted and utilized by different internal teams for their various asynchronous processing and messaging needs.
Given a Java programming problem involving multiple threads, design and implement a solution to ensure that at most two threads run in parallel at any given time, managing their execution and concurrency.