INDMoney | SDE Intern | Interview Experience | October 2024
Summary
I successfully interviewed for an SDE Intern role at INDMoney, securing an offer after three challenging technical rounds that covered a wide range of topics from Data Structures and Algorithms to System Design and core computer science concepts.
Full Experience
Overview
This was an off-campus opportunity where a recruiter reached out to me directly via LinkedIn to inquire about my internship experience and availability for a 6-month onsite internship. After expressing my interest, my first round was scheduled for the very next day. There was no Online Assessment.
Round 1: Technical Interview
The first round began with introductions. The interviewer then outlined the flow: my experience, system architecture/Core CS questions, and finally, the DSA part. He was very helpful and polite. I explained my previous internship work and projects in detail. He asked me about the Producer Consumer problem, which I explained, but I struggled to provide the most appropriate real-life analogy.
Next, we discussed system architecture and API flow for an e-commerce order placing system, followed by questions based on REST APIs mentioned in my resume. I wasn't very proficient here, and he helped me understand some concepts.
For DSA, he presented a problem: "Given 'n' people and 'm' transactions between them, where each transaction represents an amount of money one person owes to another, minimize the number of transactions required to settle all debts so no one owes anyone else in the end." I quickly recognized it as a graph problem solvable with a greedy in-out degree approach with certain conditions. We discussed time and space complexities; I proposed an O(m) solution, and he challenged me to reduce it to O(n). After trying a few approaches, I landed on a logic, and he clarified that he wasn't expecting code for all test cases as it was an NP-Hard problem, but asked me to code my approach. I coded it in 10-15 minutes (he gave me 30), and we discussed edge cases, where I, with his help, identified negative weighted cycles. My code worked for all other cases.
He then asked some questions related to an ER-Model for a student report card, where I wasn't fully prepared but tried my best. Finally, there were situation-based questions like, "How would you cope with a fast-paced environment?" and "Which code would you prefer, your own or the 'correct' one, considering scalability?" My response was that my code would solve 90% of the problem, and for the remaining 10%, we would handle specific cases and apply algorithms like Bellman-Ford, checking my exception handling skills. This round, scheduled for 60 minutes, lasted about 90 minutes.
Round 2: Technical Interview with Director of Engineering
The next day, I received a call from the recruiter confirming my selection for the next round. In this round, the Director of Engineering (DOE) immediately moved to DBMS questions:
- What is Indexing, with detailed complexities (as I mentioned it in my resume)?
- Where to use Indexing, the logic behind it, and real-world applications.
- Normalization.
- Normalizing a given table (I couldn't complete it entirely, but normalized about 90% of the three tables in 3NF).
- How I optimized API calls in my previous internship.
- Some basic GET and POST methods.
- API status codes and their uses, such as 200, 400, 500, 505 (I missed 400).
- Design APIs for adding two numbers.
- A variation: if we want to get data from a third party through integration.
For the DSA problem, he asked: "Given a binary tree, calculate the sum of the minimum distances between all pairs of nodes and return the total sum." He noted it was a variation of Sum of Distances in Tree but for a binary tree and with no re-routing allowed. I started with a brute-force BFS, but it was inefficient. My optimized approach used DFS with DP and LCA. I used DFS to calculate and store the depth of each node in a DP array to avoid redundant calculations, and then calculated the Lowest Common Ancestor (LCA) for each pair of nodes for efficient distance computation. Except for the approach, there was no feedback during coding and design questions. He asked how long it would take to code, and I said 15 minutes. He requested a working code within that time, which I delivered, and it passed the test case he provided. This round lasted 65-70 minutes.
Round 3: CTO Round Technical
The recruiter called me for a final technical round with the CTO the following day. I prepared for DBMS and other core concepts based on the recruiter's feedback. The CTO was very cool and humble. He started by asking about my past work and then gave me a MongoDB aggregation-based problem, allowing me to use the internet.
Next, he asked about my comfort with DSA and requested me to prove the time complexity to find the distance between two nodes in a perfectly balanced binary search tree, which I did. Finally, he gave me a variation problem of the spiral matrix and allowed 20 minutes to code and run it for a given test case. While debugging, we discussed competitive programming in depth, which made the atmosphere lighter. My code eventually worked. He also allowed the use of macros and templates for CP and shortcuts. This concluded my third round.
Verdict: Selected
The next day, I received a call from the recruiter confirming my selection.
Interview Questions (16)
Describe the Producer Consumer problem and provide a real-life analogy.
Design the system architecture and API flow, including methods, for an e-commerce order placing system. Discuss questions based on REST APIs.
Given 'n' people and 'm' transactions between them, where each transaction represents an amount one person owes another, minimize the number of transactions required to settle all debts so no one owes anyone else in the end. Discuss time and space complexities, and consider edge cases like negative weighted cycles.
Design an ER-Model for a student report card system.
How would you cope with a fast-paced environment? Which code would you prefer, your own or the 'correct' one, considering scalability as a factor?
Explain what indexing is, including its detailed complexities. Discuss when and where to use indexing, its underlying logic, and real-world applications.
Explain database normalization and normalize a given set of tables (specifically, three tables in 3NF).
Describe how you optimized API calls in your previous internship.
Explain the basic HTTP GET and POST methods.
Explain the uses of various HTTP status codes, such as 200, 400, 500, and 505.
Design APIs for a service that adds two numbers.
Design APIs for adding two numbers, considering integration with a 3rd party to retrieve data.
Solve a problem requiring MongoDB aggregation queries.
Prove the time complexity to find the distance between two nodes in a perfectly balanced binary search tree.
Solve a variation of the Spiral Matrix problem.
Preparation Tips
I specifically prepared for DBMS and other core computer science concepts based on the feedback I received from the recruiter. For future candidates, my suggestions are: always be honest on your resume, maintain confidence in your approaches even without immediate feedback, and remember to ask clarifying questions during the interview.