Summary
I interviewed for the Associate Software Engineer (Internship + FTE) role at Energy Exemplar through an on-campus drive and successfully received an offer after three rounds of technical and behavioral assessments, followed by an HR round.
Full Experience
Round 1: Technical and Project Assessment (30-45 min)
The first round began with a brief introduction. I was then asked to solve a Data Structures and Algorithms (DSA) question that involved creating an N-ary tree and performing both Breadth-First Search (BFS) and Depth-First Search (DFS) traversals on it. Following this, the interviewer questioned me on some basic Object-Oriented Programming (OOP) concepts and dynamic memory allocation.
Next, I had to describe my project, including its features and usage. The interviewer reviewed my GitHub and LinkedIn profiles, inquiring about my internship experience. The round concluded with a few basic Git commands.
Round 2: Development and Project Assessment (~1 hour)
This round was entirely focused on development and proved quite challenging. The interviewer meticulously noted every keyword I mentioned during my introduction and asked detailed follow-up questions about each one. I was also asked about my specific contributions during my internship.
The interviewer then questioned me extensively on every technology stack listed in my resume, probing into the internal workings of the packages I used. For instance, in my case, he asked specific questions about Hive, BLOC, Firebase, and the Razorpay payment gateway.
Following this, I was presented with some straightforward System Design and DBMS questions. Instead of asking for direct definitions, the interviewer presented a scenario where a virtual machine is deployed on a server with millions of incoming requests and asked how I would handle it, prompting discussions on load balancers and the concepts of vertical and horizontal scaling.
Later, I was asked to create the database schema for one of my full-stack projects and then demonstrate how to convert a one-to-many relationship into a many-to-many relationship within that schema.
Other topics covered included:
- Normalization and its forms
- Docker/Containerization
- Linear Merge vs. Squash Merge in Git
- Authorization vs. Authentication
- Caching
- JWT (JSON Web Token)
A key takeaway from this round was that all questions were based on the technologies mentioned in my resume, emphasizing the need for a deep understanding. Many questions were situational, requiring me to solve problems rather than just provide definitions.
Round 3: Vice President (~45 min)
The final round began with further questions about my internship experience. Then, I was given a DSA question: to detect a loop in a singly linked list, with a follow-up question to find the starting point of the loop.
The interviewer also asked me about the parameters used to evaluate the efficiency of a sorting algorithm. He then asked me to write and explain four sorting algorithms, including Quick Sort. For all the coding tasks, I had to write the code syntactically correctly on paper.
After successfully completing these rounds, I was called to the HR round, where I happily received the offer.
Interview Questions (5)
I was asked to solve a DSA question involving the creation of an N-ary tree, as well as performing Breadth-First Search (BFS) and Depth-First Search (DFS) traversals on it.
Given a scenario where a virtual machine is deployed on a server with millions of incoming requests, I was asked how I would handle this situation. This involved discussing the role of a load balancer and the concepts of vertical and horizontal scaling in a practical context, rather than just providing definitions.
I was tasked with creating the database schema for one of my full-stack projects. Following that, I was asked to demonstrate how to convert a one-to-many relationship within that schema into a many-to-many relationship.
I was given a DSA question to detect a loop in a singly linked list, with a follow-up question to find the starting point of the loop.
I was asked about the parameters used to evaluate the efficiency of a sorting algorithm. Following this, I had to write and explain four different sorting algorithms, with Quick Sort being specifically mentioned as one of them. The coding had to be done syntactically correctly on paper.
Preparation Tips
My preparation heavily focused on understanding the technologies listed in my resume in depth, as many interview questions were situational and based on my stated skills. I recommend practicing Data Structures and Algorithms thoroughly, especially common problems related to trees, graphs, and linked lists. For development and system design rounds, be ready to discuss project specifics, internal workings of technologies you've used, and common system design concepts like scaling, load balancing, and database schema design. It's also crucial to be proficient in Git commands and understand software development principles like OOP and dynamic memory allocation. Being able to explain and write code for fundamental algorithms is also very important.