# Microsoft Interview Experience for Software Engineer Internship | On-Campus 2021

**A Short Overview:** Microsoft came to our campus to select candidates for Summer Internship in August 2021. Out of the 200+ candidates (from CSE + ECE + EEE + ENI) who applied for the position of SWE Intern, only 13 students were selected finally. The entire process was virtual and was conducted in 4 ( 1 coding round + 3 interview rounds) rounds.

**Coding Round**: It was conducted on the Codility Platform and consisted of 2 problems supposed to be solved in 90 minutes. The description of problems is as follows:

Hey geek! It's time to become a success story instead of reading them. Check out our most renowned **DSA Self Paced Course**, now at a student-friendly price and become industry ready. And if you are looking for a more complete interview preparation resource, check out **Complete Interview Preparation Course**** **that will prepare you for the SDE role of your dreams!

Feeling prepared enough for your interview? Test your skills with our **Test Series** that will help you prepare for top companies like **Amazon, Microsoft, TCS, Wipro, Google** and many more!

- This problem was an easy variant of the standard merge intervals problem. This was doable in 15-20 minutes.
- This problem was an interesting one and the most optimal solution was not so easy to figure out. A 2D binary array(an array of 0s and 1s) of size N*M is given. And the distance between any two cells is taken as their manhattan distance(Manhattan distance between two points (x1, y1) and (x2, y2) is |x1 – x2| + |y1 – y2|). Also, you are given an integer ‘K’. We were supposed to find the total number of cells with value 0 such that the distance of every cell with value 1 is not more than k units from it. Constraints: 2 <= N,M <= 400; 1 <= K <=800; There is atleast one cell with value 1. I actually came up with a not-so-intuitive O(n*m) solution. It took me almost the whole of the remaining 70 minutes to code up my solution and submit it, more because your code runs just on sample cases and you never know the correctness of hidden cases until you are fully confident in your solution.

In the end, I along with 25 other candidates was selected for interview rounds.

**Total Interview Rounds : 3**

**Platform:** Microsoft Teams, Codility

**Round 1: **This round went on for nearly 60 minutes for me. The interviewer was very friendly and firstly asked me to introduce myself. After that, we dwelled directly on coding questions. He shared a codility link with me and I was supposed to use it to code it up. I was asked one DSA question and one puzzle.

- The DSA question was to find the second largest element of the BST. I coded it up well in time by discussing some edge cases and approaches first. Then, he generalized the question to the kth largest element of the BST. It took a hint from the interviewer for me to finally come up with the most optimal approach, but he was very satisfied with the overall solution. This took around 35-40 minutes.
- Then he asked me a puzzle which was to come up with an optimal strategy to win the game irrespective of opponents’ moves. The description of the game is as follows: You are supposed to select a starting number ‘x’ between [1,9]. Then you and your opponent take chances turn-by-turn. If a player chose the number ‘n’ in the last turn then the other player can choose any number between [n+1, n+10]. The game goes on till one of the players reaches number 75. Select ‘x’ in such a way that you win every time. I came up with a faulty approach at first but then after rigorous thinking, I came up with a solution, and luckily it was the correct one. (P.S.: The answer is – x should be 9. Figure out the reasoning :p) This took me around 15-20 minutes and finally, the interview was wrapped up with a question for the interviewer.

**Round 2: ** This round started within 5 minutes of the completion of my first round and was supposed to be 30 minutes long. And, it was the easiest of all three rounds. The interviewer started formally by asking me to introduce myself and then went straight to the DSA question.

- The question was pretty standard. It was a variant of checking valid parenthesis. I coded it up and explained my approach to the interviewer within 15-20 minutes and that marks the end of my second round.

**Round 3: **Final Round

- This round too started within 5 minutes of the completion of my second round (and by this time I was kinda feeling tired speaking for more than 90 minutes straight). This was the round I enjoyed the most and went on for almost an hour. The interviewer was very friendly and started by asking me to introduce myself and how my day went till then along with few other questions from my resume. He then asked me to share details about my previous internship experience. He then asked about my previous rounds and my detailed approach in the same. Then asked about my favorite code editor (which obviously is VSC <3) and asked me to open it up and present the screen. Then he shared a DSA question which was a standard variant of boundary traversal of BST (My question was to print the traversal in a clockwise fashion rather than an anticlockwise one). We then went on the discuss various approaches, corner cases, and methods of implementing the most optimal approach (in single traversal, rather than three separate traversals). Evidently, I was asked to code up one special case and that marks the end of the problem-solving part of the interview. He was pretty impressed with my approach, code, and communication and shared positive feedback on the same. Then we talked a bit about the process of project and campus allocation after getting an internship offer. And finally wrapped up the round.
- In the evening, I got to hear good news from our Placement Unit and I along with 12 other candidates was offered an internship offer from Microsoft India.

**Tips for interviews:**

- Read a lot and a lot of interview experiences a day before the interview (irrespective of the company being Microsoft or not).
- Stay calm and composed during the interview. The person interviewing you is there to select you and not reject you!
- Always keep communicating your thought process and approach, because that’s what the interviewer is looking for.
- Always ask about the results on cases that you are unsure of, and once you come up with a solution dry run it on a test case before actually coding it up.
- Try to write well-commented and readable code.