My Journey to Microsoft SDE - 2023

My Journey to Microsoft SDE - 2023

The date was 11th July 2019. I was sitting in the large auditorium of our college. It was our college counseling. While I was waiting for my turn to choose my branch, on the large screen of our auditorium, the college placement stats were displayed. 14 students received the highest package of 39L in Microsoft. 14 out of thousands of students. And I wondered will I ever be as smart as those 14 students.

Fast forward to 23rd July 2022. A mail popped up on my phone from the college placement cell. 22 students were selected for Microsoft. The fourth name read "Arnab Poddar".

In this blog, I will share everything I did that led to this day. Along the way, I will share some tips which helped me do better than others.

For freshers reading this blog, before you start preparing you need to know everything involved during college placement selection in a company. Usually, your eligibility is decided solely by your branch and cgpa. For some companies, your resume can also be a factor. The first round of any product-based company during placements is an online test, which mostly contains coding questions but can also have questions on aptitude, and computer science fundamentals. Then comes the technical interviews which test your Data structure and Algorithms, System Design, and Computer Fundamentals knowledge. You can also be asked questions based on your resume content like projects and internships. Lastly, there can be a cultural round after all the technical interviews are over.

To make things simple, I will explain my preparation in 4 parts - Data Structure and Algorithms; CS Fundamentals, Projects and Internship; System Design and Software Development; Mock Interviews.

Data Structure and Algorithms

Language

The first step is to know a programming language well. C++ and Java are the recommended options. C++ has STL and Java has the Collection library which contains data structures and their functions that help us while solving questions. I used Hackerank to learn C++ and STL, by practicing basic questions.

Practice Questions

Practice is the key. It's normal to not be able to solve any question in the initial days. But consistent practice over the period of months will take you places. Now there are many platforms where you can practice questions. GeeksforGeeks, Leetcode, Codeforces, CodeChef, SPOJ are some of the reputed ones. I started out with GeeksforGeeks. Solved around 150 questions there. Then I moved to Leetcode where I solved over 400 questions. I had also solved around 100 questions in Codeforces. The strategy I used to practice question was to solve at least 3 questions daily. Initially I started solving topic wise questions. Twice for each topic. When I became fairly confident in all topics including the hard ones, I started picking questions randomly, ones with good number of likes and those which were asked in some interview.

Contests

If you want to take only one thing out of this blog post, I would say that should be to give as many contests as possible. I can not emphasize enough on this, but I really believe that the number of contests you give has a direct positive corelation on how your entire placement journey will be. But sadly, it's something most people don't do or they keep procastinating or they are not consistent with it. Giving one contest a month will not help you. I recommend participating in at least 2 contest a week, ideally once every two days. Use the day in between two contest to solve the questions of the previous contest that you could not.

I used to attend the weekly and biweekly contests in Leetcode, and also the div2 and div3 contests in Codeforces. Initially I could hardly solve a single question, but over the period of months, the number kept increasing. I had reached top 15% in Leetcode, by the time my placement season started.

CS Core, Projects, and Internships.

While the importance of these comes after DSA, you can not just ignore them. These will help you stand out the most in the competitive market. Most people will keep them for the very end. But if you are in your 2nd year or early 3rd year, I would recommend getting these done as soon as possible. Because in the last few months, you will not want to be busy doing a project or an internship.

For the CS Core subjects which are Database Management, Operating Systems, Networking, and OOPs, I prepared them while they were in my semester syllabus and made notes for future revision. I believe this is the best way to study them as it saves duplication of efforts. If this is not possible for you, refer to one of the many resources available online and also have a look at the interview questions.

I should probably write a complete post just for projects. But to tell you briefly, they should be solving some unique problem, must not be technically simple, and each of your projects should display a certain skillset of yours. Personally, I was involved in development, projects, and going to hackathons from my very first year. So I just put 3 of the best projects that I had done on the resume.

Talking about internships, I would say they are a little overhyped. You will see people posting on LinkedIn about getting internships right from the very first year of college. While they do add significant value to your resume, and I do recommend doing at least one, but it is not at all a mandatory thing to get a good placement. So do not make getting an internship your only goal, focus on the entire journey. The best time according to me to do an internship will be the summer break after your 2nd year ends. That's when you have enough knowledge to get an internship but also do not have pressure of other things. Personally, I had done two internships, one was during my 2nd year at Samsung and another during the summer break after 2nd year in an early-stage startup.

Development and System Design

Historically software development and system design knowledge were not something that was often asked of freshers, especially in big tech companies like Microsoft. But trends are changing. In the 2022 placement season, a lot of companies including Microsoft asked questions about these domains

While doing your projects, make sure you learn about the tech you are using a bit more in-depth and refer online to the questions that can be asked about that technology. My expertise was in Javascript and full-stack development as that is what I did for most of my college life.

For System Design, having an overall knowledge of both High level and Low-Level System Design will get you through. I referred to a system design playlist of Gaurav Sen on youtube and practiced some questions for both high-level and low-level system design. You can easily find a lot of resources on youtube.

Mock Interviews

After participating in contests, if there is something that helped me the most, I would say that will be giving 10 mock interviews, in the month before the start of the placement season. You may have done everything that I have written till now, but presenting them in a time-constrained interview is a completely different ball game that can only be learned through mock interviews. I started giving mock interviews first on a free platform called Pramp, and later on a paid platform where people from FAANGM took my interview.

Most people don't do this step. They treat the first few interviews during the placement as their practice interview. That is a deadly mistake, as your very first interview can be with your dream company, which was the case with me. So make sure from the very first day, your interviewing skills are at their best.

My Interview Experience

Microsoft was the very first company that visited our campus. Over 3000 students had applied. Around 800 were shortlisted based on CGPA and resume. The first round was an online coding test held on the codility platform. There were 2 questions and the time limit was 90 mins. The first question involved the usage of HCF and hashmaps, and the second question involved prefix sum. Both were medium-level questions. 50 students were selected from this round for the interviews.

In the first interview, I was asked two DSA questions. The first one was of easy to medium difficulty involving hashmaps. The second one was a standard DP question of medium difficulty. I was also asked some questions about the projects I did. The interviewer asked me some deeper questions about Javascript like the event loop and asynchronous programming. The second interview had only one really lengthy DSA cum LLD question involving LRU Cache. The final interview was a high-level system design discussion around the project I did during my Samsung internship.

22 people were selected after all the interviews.

On a closing note, I would say the one thing you should carry with you in this whole journey is consistency because it is a marathon, not a sprint. All the best for your interviews! Happy Learning!