Microsoft Interview Experience (On Campus for Full Time)
Microsoft visited BITS Pilani, Hyderabad Campus for placements in August, 2018. The detailed process was as follows:
Round 1: Online Coding, 75 Minutes, 3 coding questions from a Question bank ( 65/~150 shortlisted)
The platform used was Co-Cubes. 3 questions were asked of 2, 3 and 5 marks respectively with varying difficulty.
- Given a number, round it off to the nearest multiple of 10. https://www.geeksforgeeks.org/round-the-given-number-to-nearest-multiple-of-10/
- Given a date, find the day it will be if 1/1/1990 was a Monday. similar to – https://www.geeksforgeeks.org/find-day-of-the-week-for-a-given-date/
- Given a linked list, print m nodes, delete n nodes and so on. https://www.geeksforgeeks.org/delete-n-nodes-after-m-nodes-of-a-linked-list/
some of the other questions which were also asked were
- Given a grid with each cell consisting of positive, negative or no points i.e, zero points, find minimum initial points to reach cell (m-1, n-1) from (0, 0), with some constraints. https://www.geeksforgeeks.org/minimum-positive-points-to-reach-destination/
- Given a string ‘str’ of digits and an integer ‘n’, build the lowest possible number by removing ‘n’ digits from the string and not changing the order of input digits. https://www.geeksforgeeks.org/build-lowest-number-by-removing-n-digits-from-a-given-number/
Round 2: Group Fly Round, 45 Minutes, 2 coding questions, Written Round ( ~20/65 shortlisted)
This was a written round and we were expected to write fully functional code, without any bugs and errors. Library functions used, if any, had to be explained and if possible, code for that too (not that rigorous). Pseudo code and algorithms were also allowed. All the assumptions made had to be explained as well.
- Print the nth line of the pattern given
- Given an array of numbers, arrange them in a way that yields the largest value.
Round 3: Technical Interview 1, ~1:15 Hrs
The interviewer was very friendly and started by asking some questions related to my resume and summer internship . Then he started with some questions based on Data Structures and Algorithms
- Given a Unix File Path as a string, normalize it as efficiently as possible
e.g “/abc/def/../..” would yield “/” on normalisation and “/ghi/jkl/./..” would yield “/ghi”
I gave him an approach using stack and he was satisfied with it. Corner cases were very important.
- Given a polynomial expression, simplify it as efficiently as possible, and sort it in decreasing powers of the variable.
e.g 5x^12 + 6x^10 + 4x^5 + 6x^5 + 3x^3 + 2x^3 + 9 would result to 5x^12 + 6x^10 + 10x^5 + 5x^3 + 9
I provided him with 3 approaches, one with trees, one with max heap and finally one with Linked lists, considering all the corner cases and continuously optimizing the code with respect to time and space complexity. He seemed happy with my approach.
- Given a reference to a linked list node(not the head node), delete that node. https://www.geeksforgeeks.org/in-a-linked-list-given-only-a-pointer-to-a-node-to-be-deleted-in-a-singly-linked-list-how-do-you-delete-it/
Next, he moved on to DBMS and OS. Some SQL queries and Synchronization problems were asked and I was asked to explain the Producer-Consumer problem in synchronization. A few ML questions were also asked.
The interviewer then moved on to my projects and I was asked to draw the detailed ER diagram for one of my projects.
Round 4: Technical Interview 2, ~1:15 Hrs
Some more questions related to projects were asked along with a few puzzles. Some basic Coding questions were also asked.
This round was a mix of technical and HR, as there were a lot of resume related questions. I was required to explain the project that I had done in my summer internship in detail, which technologies I had used, team structure, designing the project as well as why we had chosen to go with the said details.
Round 5: HR / Design Round, ~1:30 Hrs
This round was basically a mix of HR and creative design round. The interviewer wanted to check whether the candidate can think out-of-the box with regard to any given problem and come up with unique, optimized solutions.
Questions like design a spectacle, Inventory Management System were asked and a lot of DBMS theory like 3 schema abstraction, data independence, ACID properties, concurrency control, 3 tier, 2 tier architecture were asked. I was required to draw each and every phase of the designing process.
In the end, 4 candidates were selected for the the role and I was one of them!!!
Some tips related to coding interviews which helped me a lot
- The interviewers were very friendly and knowledgeable and try to understand your solution, rather impose theirs on you, unlike certain companies.
- The NUMBER ONE thing interviewers were looking for was CONFIDENCE. Almost everyone shortlisted had superb knowledge of computer science, but if he/she could not speak confidently, or stayed quiet during the interviews, they were rejected on the spot! Even people who had the highest score after group fly and had completed the HR round first were rejected due to this.
- It’s okay to make mistakes during the interviews, they’re there to correct and help you, but its more important to keep talking and let the interviewer know what is going on in your head the whole time.
- Keep talking about your thought process and telling the interviewer what is going on in your head. Don’t sit idle.
- Always inform them of any assumptions and your language preferences you make before coding and then proceed. Always try to include Corner Cases.They are very important.
- Yeah and one thing, except the online coding round, ALWAYS write comments while coding. I repeat, always write comments for anything you do. It matters a lot, especially for the group fly round.
- Prepare 2-3 questions for the interviewer for each round. Its better if its related to the company, JD and shows your interest in them.
- You should know each and everything written on your resume. You can be asked to elaborate on anything in detail. Don’t write anything you can’t speak for ~5 minutes.
- Important subjects include DSA, DBMS, OOPS, OS, TOC and to some extent Networks. Disciplinary Electives are very important too.
- *Vital Info – Co-Cubes displays only 3 test cases and rest are all hidden. So try to make your code as efficient and optimal as you can, including all the corner cases.
- Try practicing coding on a computer as well as on paper. You’ll understand the nuances of the code better.
- Internships! Try getting a summer internship. The work that you’ll do there will be an important talking point in your resume. If you get a PPO, then chill, else experience is still very valuable. Resume is very important and please spend more time on writing it properly.