How I faced my job interview
As soon as I was offered a job offer after clearing all the rounds of my interview for a full-time position at the organization, I was asked to share my experiences and tips that I thought would help my peers in their pursuits.
Here goes:
I started the preparation for the job during the first week of June. I had rarely solved any coding questions before that time. Although I had less than 2 months to prepare, I made sure not to overwhelm myself by doing a lot of programming and problem solving in one day. For example, I solved at most 3-5 problems on average per day, while exhaustively examining the concepts that went into solving those "puzzles". I mostly used python for the coding tests and as usual, I chose not to make notes.
Before the interview:
-
Refered to a list of leetcode problems by neetcode. I picked around 80 problems to work on, starting with the easy problems and then moving on to the medium ones. Neetcode's youtube channel was helpful.
-
The first ~60 pages of "Cracking the Coding Interview" by Gayle Laakmann McDowell give some useful general tips and insights into what to expect in the interview process in general. Chapters 12-15 were helpful as refreshers for fundamental CS concepts.
-
Spent a couple of days revising my resume and making it ATS-friendly. I Used latex to make my resume on overleaf.com. I mainly focused on the projects and experience sections and made sure that the resume didn't cross one page in length.
-
Finally, decided on a few key facts to tell about myself and my works in my 1-2 minute-long pitch for answering common questions like βTell me about yourselfβ.
During the interview:
Knowledge of these concepts came in handy: Object Oriented Programming Fundamentals, Operating Systems, Databases and SQL, Data Structures and Algorithms, Basics of computer networks
-
Round 1 Coding: Questions on OOP concepts (Inheritance, polymorphism and its types, differences between classes and interfaces), Database Management, and Operating Systems were asked. A question based on designing a set of classes and interfaces was asked. A question based on a greedy algorithm was asked. Familiarity in estimating the time and space complexity of a piece of code or an algorithm is essential. This round lasted for ~50 minutes. I made sure to sit back, relax and talk to the interviewer while I crafted the code on paper.
-
Round 2 HR: A series of questions based on an imaginary scenario with a client and team were asked - questions that give insights into your approaches towards situations like team conflicts and project deadline overlaps. This round was an hour long discussion about various circumstances we would face while working on a project as a team. These questions have no right or wrong answers - I'd say, honesty is key. For each such question asked, I would imagine myself in that scenario and explain to the interviewer all the possible things I could do, eventually giving what I thought would be the best response to every situation.
-
Round 3 System Design and problem solving: "Design a food ordering app". The code for the design was supposed to be written as a set of related interfaces and classes. I first gathered all the requirements and clearly specified each assumption I made before actually starting the design. I did not explicitly study system design concepts before this. However, basic familiarity with Design Patterns and Database concepts (Sharding, ACID, etc.) were helpful. A Linked list based question was asked followed by an in-depth discussion about my projects in my resume. This round lasted a little more than an hour.
This was an in-person interview, which meant that explaining my solutions, while thinking out loud on a whiteboard/paper might have been appreciated. As a general rule, I ensured to let the interviewer know my thought process by keeping a conversation flowing about my approach to each solution while I wrote the code on paper so the interviewer could know if I was going in the right direction. If my approach was not correct, the interviewer would help me think of another solution, immediately pushing me closer towards the correct approach or would simply move on to the next question.
Also, in my opinion it is not necessary to keep talking in the interview. Moments of silence to think clearly before talking is okay :).
After the interview:
- Introspect on what went right and wrong.
- Most importantly, in any case, celebrate! π