Summary
I recently had an interview at Cloudera for an SSE role, which involved a Low-Level Design round focusing on service dependencies and a technical deep-dive on Java, Spring Boot, microservices, and practical production challenges.
Full Experience
My interview experience at Cloudera for the SSE role was structured into two main rounds. The first round was a Low-Level Design (LLD) focused on designing linked services and managing their dependencies. The interviewer emphasized the need to optimize dependent service querying and strictly adhere to SOLID principles throughout the design process, ensuring proper class design, dependency management, and separation of concerns. It was a challenging session where I had to think critically about architectural best practices.
The second round delved into more specific technical areas, primarily covering Java, Spring Boot, and microservices. We also discussed my current projects in detail. The questions were quite practical, testing my knowledge of framework nuances and production-level problem-solving. It was an engaging discussion covering various aspects of enterprise application development.
Interview Questions (3)
The LLD round required me to design linked services and their dependencies. The key focus was on optimizing how dependent services query each other, while rigorously applying SOLID principles in class design, dependency management, and ensuring a clear separation of concerns.
I was asked to explain the behavior and solution for implementing a retry mechanism in Spring Boot when a @Retryable method is invoked by another method within the same class. This typically leads to a self-invocation issue where the proxy mechanism doesn't intercept the call.
The interviewer posed a practical scenario: how would you go about changing a live database column name in a production environment without incurring any downtime for the application?
Summary
I interviewed for a Software Engineer position at Cloudera in August 2022 and successfully received an offer after completing four rounds focusing on coding, technical knowledge, and behavioral aspects.
Full Experience
My Interview Experience at Cloudera
As a final year undergraduate from a Tier 2 engineering college, I applied for the Software Engineer role at Cloudera and secured an offer with a CTC of 19 LPA.
Round 1 - Coding Round (120 mins)
This round was conducted on the Hackerrank platform and featured 4 questions. These included one problem based on heaps, a mathematical problem, a tree-based problem (a variation of the maximum sum path), and one SQL query. I managed to solve 2 questions completely and partially solved the other 2. Out of many candidates, 37 of us were selected to proceed to the next round.
Round 2 - Technical Interview 1 (45 mins)
My second round began with a self-introduction. The interviewer then asked me to solve 3 coding questions on the Codebunk platform:
- To find a cycle in a linked list.
- To implement a stack in C++.
- To merge 2 sorted arrays.
Following the coding segment, the interviewer inquired about my web development project, specifically asking how I would integrate advertisements into my website. When I mentioned Google AdSense, he delved into how Google AdSense works and the functionality of cookies.
Round 3 - Technical Interview 2 (45 mins)
This round also started with introductions. The interviewer showed significant interest in one of my Flutter projects and asked several questions related to it. Following this, I was asked to explain various process scheduling algorithms, their pros and cons, and to identify the most optimal one. He then presented a problem based on the Round Robin Algorithm.
In Computer Networks, I discussed the differences between HTTP and HTTPS, the OSI model, various protocols, why HTTP resides in the Application layer, and the roles of Switches and Routers, along with how a packet is transmitted.
For DBMS, the discussion revolved around Indexing and database optimization techniques. I initially mentioned sharding and normalization, but the interviewer wasn't fully satisfied. I then proposed using binary search if IDs are sorted for optimization. This led to a discussion on searching and sorting algorithms. I explained different sorting algorithms, specifically Bubble Sort and Merge Sort, including their time complexities. I also explained how binary search works and the two ways to calculate the middle element.
Towards the end, I answered a few OOPs questions with real-life examples and discussed operator overloading. I was also given one coding question on balancing parentheses on the Codebunk platform.
Round 4 - Hiring Manager (HM) Round (30 mins)
The final round began with mutual introductions and a casual conversation. The HM asked several questions from my resume concerning my projects, hackathons, CTFs, coding contests, and my involvement in a technical club. He also asked about B+ trees, which I couldn't answer. We then discussed various factors to consider before releasing an app as a product. The round concluded with some HR-related questions and an opportunity for me to ask questions.
Out of three selected candidates, I was one of them, ultimately receiving the offer.
Interview Questions (4)
Implement a basic stack data structure in C++.
Given two sorted arrays, merge them into a single sorted array.
Preparation Tips
My Preparation Strategy
My preparation focused heavily on core computer science fundamentals and problem-solving. I spent considerable time practicing Data Structures & Algorithms (DSA), ensuring I had a strong grasp of various data structures like heaps and trees, and common algorithms including sorting and searching.
I also revised key concepts in Operating Systems (OS), particularly process scheduling algorithms, and Computer Networks (CN), covering topics like HTTP/HTTPS, the OSI model, and packet transmission. Additionally, I prepared for Database Management Systems (DBMS), focusing on indexing, optimization, sharding, and normalization.
My practical experience from various projects, especially in web development and Flutter, also proved beneficial during the technical discussions. I also participated in hackathons, CTFs, and coding contests, which enhanced my problem-solving skills and provided practical exposure.
Summary
I completed an on-campus interview process for an SDE-1 role at Cloudera, which involved a coding test with four programming questions and two subsequent technical rounds covering data structures, algorithms, operating systems, DBMS, networking, and OOPS concepts. I managed to solve most coding problems and discussed various theoretical aspects.
Full Experience
I recently participated in the on-campus hiring drive for an SDE-1 position at Cloudera in 2022. The selection process was structured into four main steps.
Step 1: Resume-based Selection
The first stage involved a screening of resumes, which I successfully cleared to move to the next round.
Step 2: Coding Test (120 minutes on HackerRank)
This round consisted of four programming questions, where two were easy and two were of medium difficulty. All of them were standard problems:
- Longest Increasing Subsequence
- Word Compression
- Last Remaining Element
- A problem described as: "For strings and an integer k, a selection of substrings is valid if the following conditions are met: The length of every substring is greater than or equal to k. Each substring is a palindrome. No two substrings overlap. Determine the maximum number of valid substrings that can be formed from s."
I was able to solve three of these questions completely and achieved partial acceptance for the fourth one.
Step 3: Technical Interview 1
My first technical interview began with a standard introduction. The interviewer then presented two coding questions on their platform (codebunk):
- Program 1: We discussed the theory of how a Binary Search Tree (BST) works, followed by a coding question to check if a given binary tree is a valid BST and how an optimal solution can be implemented. This is similar to LeetCode - Validate Binary Search Tree.
- Program 2: This was an array-related question, essentially a Kadane's Algorithm problem focusing on its complexity, asking for the maximum subarray sum. This is similar to LeetCode - Maximum Subarray.
Following the coding problems, we moved to theoretical discussions:
- How memory allocation works in a program, specifically static and dynamic memory allocation.
- Deep dive into OOPS concepts, particularly the abstraction part.
- Differences in Java String declarations, with examples like
String str = "abc";andString str = new String("abc");.
Step 4: Technical Interview 2
This interview started with the usual "Tell me about yourself" question. Afterward, we covered several theory questions:
- Differences between Array and Linked List.
- DBMS – ACID properties, along with real-life examples.
- OS – Deadlock Condition, the difference between thread and process, semaphores, and Mutex.
- Networking – HTTP requests, DNS, how TCP works, and how various processes operate in a network, among other related questions.
Finally, there was a programming question:
Library System Design: I was asked to design a library system capable of storing a maximum of 50 songs. The requirements were:
- If the library size is less than 50, simply add the song.
- If the song already exists in the library, it should be removed from its current position and moved to the top (most recently played/added).
All insertion and deletion operations were required to be performed in O(1) time complexity. I decided to use a combination of a Queue and a Hashmap for my solution to meet these requirements effectively.
Interview Questions (15)
Standard problem to find the length of the longest increasing subsequence in a given array.
Problem involving compressing words, specifics not detailed but common in coding challenges.
Problem to find the last remaining element after a series of operations or deletions.
Given a string s and an integer k, determine the maximum number of valid substrings that can be formed from s. A selection of substrings is valid if the following conditions are met:
- The length of every substring is greater than or equal to
k. - Each substring is a palindrome.
- No two substrings overlap.
How does memory allocation work in a program (static and dynamic memory allocation)?
Deep dive into OOPS concepts, particularly the abstraction part.
Explain the difference in Java String declaration: String str = "abc"; and String str = new String("abc");.
Standard introductory question: 'Tell me about yourself'.
Difference between Array and Linked List.
DBMS – ACID properties and give real-life examples.
OS – Deadlock Condition, the difference between thread and process, semaphores, Mutex.
Networking – HTTP requests, DNS, how TCP works, and how various processes operate in a network, among other related questions.
Make a library system where it can store 50 songs at most. The requirements are:
- If the library size is less than 50, simply add the song.
- If the song already exists in the library, it should be removed from its current position and moved to the top (most recently played/added).