Interview Experience at NavGurukul for software engineer intern
Abhijit Mishra
SDE @ Jio || ICPC Regionalist '24 || Specialist @ Codeforces || CSE @ IIIT Kottayam
?? My Interview Journey: From Application to Final Verdict ??
Part 1: The Application Process
I applied through the Navgurukul's careers page. The application process was straightforward, requiring me to fill out a small form. To my delight, I received an instant email confirmation stating that my application would be processed within a few days. Shortly after, a member of the People and Culture team reached out to me via phone. He provided an overview of the upcoming steps in the hiring process and informed me that I would soon receive an email containing detailed requirements for an app I had to create. The deadline for the project submission was set for the following week.
Part 2: Developing the Student Tracking App
I enthusiastically embarked on creating the student tracking app, it took me about 8-10 focused hours to complete the project. The entire process took me three days: two days were dedicated to creating the project itself, while an additional day was spent selecting suitable recording software, loading mock data, and demonstrating the app's functionality in a video. If you're interested in watching the demonstration video, you can find it here:https://screenrec.com/share/bDVim0gLSn
They had also requested my codechef profile, founder of codechef is a part of NavGurukul. I had done a lot of competitive programming of Codechef, i also provided some of my other coding profiles to solidify the point XD.
After submitting the project, I received another call from the People and Culture team. We scheduled my first interview, which was set to take place the following day at 5:00 pm.
Part 3: The First Interview
During my first interview, I had the privilege of speaking with a senior engineer who possessed an impressive 25 years of experience working at FANNG companies. He commenced the interview by introducing himself and sharing insights into the company's vision and goals for the role. Subsequently, he requested an introduction from me, which I provided.
领英推荐
The interview then transitioned into a more technical focus. The interviewer asked me to demonstrate the project once again, this time from a purely technical standpoint. The questions followed a "why" style, delving into the reasoning behind my choices and implementations. I explained my thought process and provided justifications for the decisions I had made.
After the demonstration, the interviewer requested a modification to one of the project's requirements. I encountered some challenges during this live coding session, but with the interviewer's assistance, I managed to reach a point where the necessary changes were nearly complete. Only a script was required to finalize the modifications. The interviewer acknowledged the difficulty of live coding and praised my performance.
The interviewer also inquired about my familiarity with scripting languages. I mentioned my proficiency in Python and JavaScript but expressed a preference for coding in C++.
About 20 mins were left, I was presented with a Low-Level Design (LLD) question: "Create a URL shortener." Although I had not prepared for this specific question (or any system design question), I initially believed that designing a mechanism to hash URLs into strings would be the main challenge. I shared my knowledge of tries, string algorithms, and mapping optimizations, explaining how I would apply them to tackle the question. However, the interviewer had a different expectation. They asked me to assume the availability of a library or function that performed the URL hashing and requested me to design the class accordingly. Ultimately, I presented the code that precisely fulfilled these requirements. Initially, I had used a different implementation, but after discussing the time complexity, I made further adjustments to achieve an optimal O(1) time complexity. The interviewer expressed satisfaction with my response.
The cover of this blog is the image is the code i wrote during the interview. It isnt language specific, though i know c++ and java well, so something might be only be readable from that standpoint.
Part 4: The Final Verdict
In the end, I received the final verdict from the interview process, and I was selected for the position. However, due to academic restrictions, I was unable to accept the offer to join the company. Though I was disappointed, I cherished the valuable experience gained throughout the interview journey.
My interview experience taught me the significance of demonstrating technical expertise, articulating design choices, and adapting to unexpected challenges. I am grateful for the opportunity and the valuable feedback provided by the interviewer, which has further fueled my passion for growth and improvement in the field of software engineering.