Hey there! I recently went through the internship process at Microsoft for the SDE Intern role. Through this blog, I would like to share my experience of the entire interview process. This was an on-campus opportunity, for which I applied through the Microsoft Careers portal for the respective job post(https://careers.microsoft.com/us/en/job/1081612/Software-Engineering-Intern).
Getting rejected from Oracle after an almost perfect interview was definitely a devastating experience. Oracle interview was important for me, as I spent quite some time preparing for it. The first rejection is always difficult to cope with. As the internship/placement season progresses, we eventually get used to it. But the first rejection destroys mental harmony, especially when you expect a positive result. The icing on the cake was the Microsoft shortlist, which was released on the same day. My name was not there. It was heartbreaking. I did well in the Microsoft test and completed both the questions in under 15 mins. Well, it turned out the questions were too easy, and almost everyone else had completed the test fairly quickly.
I am a part of the Placement Committee Core team. To distract my mind from overthinking, I took the morning duty for the Microsoft Intern interview process.
I woke up the next morning to attend to my duty. My friend Dev informed me that a new list had been mailed to us by the placement committee for Microsoft Intern, and luckily my name was there. I had zero expectations from this interview, as I still couldn’t digest that Oracle has rejected me. Well, this attitude actually helped me calm myself down. Today, I was not at all afraid of rejection. I felt like I had rare chances of making it through. Still, I promised myself to give it my best shot.
Round 1(Technical Interview): My first interview started on time. As this was an online interview, I had to join a Microsoft Teams meeting link.
- The interviewer asked me to introduce myself. The interviewer made sure I’m sure comfortable by asking a couple of rapport-building questions. I had already gone through multiple interviews the previous day, so I was quite comfortable. After this, the interviewer asked me a coding question.
- Question 1: Convert a given number to words (Range 999 crores)
- The question was pretty straightforward. I’ve never done this problem before, but it looked fairly simple to me. I gave a quick approach to solve this problem. I was quite confident about my approach, and I saw a ray of hope actually to make it through.
- Tip: Well, no matter how simple the question is, never get overconfident. Please spend some time thinking about how you’ll implement it before actually starting to code the solution.
- Well, this question looks quite simple. But unfortunately, it turns out the implementation is not so straightforward. You have to take care of a lot of special cases. I got overconfident and didn’t think about the special cases. Because I hadn’t given enough time to think about the implementation, I was having a hard time coding it on the fly. However, I completed my code fairly quickly.
- Now came the time to run the code. It was giving some wrong output. I knew I was close, but I was really embarrassed that I cannot solve this simple question. A lot of thoughts came up to my mind, and I panicked. Here, I would really appreciate the efforts of my interviewer. He was convinced that my approach and code were correct and actually started helping me debug the code. After spending some time, he pointed out that I had missed “seventeen” in one of the arrays of strings, which was being used to output the final answer. Thus, it was giving unexpected output. It was a silly mistake but difficult to debug in the environment with a million thoughts running through my mind.
- My code finally ran perfectly. The interviewer told me that I had crossed the time limits by 10 mins. I apologized for it. He appreciated my efforts. When I asked for feedback, he said that think about the implementation before actually starting to code. It would save a lot of time. I realized my mistake and thanked him for his feedback before leaving.
Round 2(Technical Interview): I was not at all expecting a call for the second round. However, it turned out that they were calling everyone for the second round. I was probably watching some chess stream when I got a call for 2nd round. It was a perfect chance to cover up my mistakes from Round 1. I felt like I’ve got a 2nd chance.
- The 2nd interview was quite delayed. The gap between two successive interviews is filled with a lot of emotions. It’s easy to lose focus during this time.
- Tip: In the gap between two successive interviews, take some time off. Do something that you like, and try to take your mind off the interviews.
- If you feel confident about yourself, you look at some notes or practice questions before the next interview. Otherwise, try to take your mind off the interviews.
- The second interviewer joined the meeting after quite a long time and apologized for the delay. This time we had no time for rapport building. He introduced himself and proceeded with the first question.
- Question 1: Set Matrix Zeroes (https://www.geeksforgeeks.org/a-boolean-matrix-question/)
- The question was quite straightforward. I was familiar with the question. I was confident that I would be able to solve this question. This time I didn’t lose my cool. I started with the naive approach and then told him the problem with it. I then proceeded towards a correct solution, which was not the optimal approach. He was convinced of the correctness of my approach. Next, he asked me to solve it in constant space. I took some time to think about it. He gave a hint to reuse space. I immediately got the idea, as I was already close to it. However, I was still missing a corner case. The interviewer asked me to check my approach once. I immediately realized my mistake and proposed a solution to correct it. He was convinced with my idea.
- As I was already confident about my approach, I took time and wrote neat code with proper variable naming.
- Tip: Use proper variable naming. Follow indentation strictly. Make your code as readable as possible.
- Microsoft focused a lot on code quality. I made sure I follow all the good practices of writing code. I was able to code it out very quickly.
- Since enough time was left, the interviewer asked me another coding question. He asked me to explain the approach only and not to code this time.
- Question 2: Implement LRU cache using suitable data structures (https://www.geeksforgeeks.org/lru-cache-implementation/)
- I was pretty confident about the theory on working of LRU cache. I explained to him the idea behind the LRU cache. I was able to come up with a solution pretty quickly. However, due to some misconception, I assumed that I could not use any dynamic memory. So, I suggested using an array-based queue implementation and a hashmap. The idea was correct, but here I was fixing the maximum size of the cache. In all practical purposes, the size of cache memory is fixed. But he wanted a more flexible solution. He suggested using a linked list-based implementation. I improved upon my solution and explained to him the full working of my solution model. The interviewer was quite impressed. In conclusion, he asked me if I had any doubts. I availed this opportunity to ask him how teams would be assigned to the interns. He answered that we would be allotted to random teams based on the requirement of the teams. In the end, I thanked him and left the room.
Round 3(Projects Discussion + Technical Interview): I was called for the AA (As Appropriate) round. This is the round where it is decided whether to extend an offer to the candidate or not. My first interview was at 10 AM, and the last interview started at around 5 PM. I was completely exhausted.
- The interviewer introduced himself as the ‘Team Lead of Edge PDF viewer. The interview began with a formal introduction. He asked me about my hobbies. I told him about my sports journey. Next, he asked me about my favorite courses. I told him about all the challenging courses that I’ve done. After this started the project discussion. I was very confident about my projects. I explained to him my GSoC project, Independent Project with MIDAS, and Color Switch Game project. He was impressed and didn’t ask any further questions about my projects.
- Questions 1: Given calendar for N people, arrange a meeting of duration d between working hours, say s – t
- The problem in the link above is a similar problem that I found online. I explained to him an approach that immediately came to my mind. Of course, he wanted a better way to do it. He dropped a few hints, and I came up with a very optimized solution for this problem. He pointed out a mistake in my approach, which needs to be handled separately. I was unable to get it, so I asked him to repeat it. He explained the problem again, but I was not able to get it. After a few moments of silence, I told him that I could not understand what he said.
- The interviewer concluded the interview and asked me if I have any questions. I thanked him and left the room.
- I was not confident about my selection. But, later on, I realized he gave me just 10 – 15 mins to solve this problem. In other interviews, I got much more time to solve the coding problems. Maybe he intended to get full code for this problem.
- The results were not announced until the next morning. I was unable to sleep. I asked my other friends, who appeared for the interview that day. All of them had a similar reaction.
- The next morning, I had an interview scheduled for a Qualcomm intern. I was hoping that I don’t have to sit for this. I texted my placement coordinator that I have to appear for an interview right now. If she can tell me the result for Microsoft, it would be beneficial for me. She replied with a congratulations message! I was not able to believe my eyes! After a few mins, I received an email from the placement committee. I accepted the offer by mail, and the party began.
Thanks for reading!
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, GeeksforGeeks Courses
are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out - check it out now!