Microsoft IDC Internship On-Campus Interview Experience 2018
Microsoft IDC Hyderabad visited our campus in July for internships. Engineering Physics and all Computer and Electrical/Electronic branches were allowed. They set CGPA cut off as 7 for applying.
Round 1: Online test
The first online round was online having a duration of 75 minutes. It was hosted on Co-Cubes which had 3 coding questions but everyone had random ones. Their was a choice of language between C, C++, Java and C#. Also not all test cases were visible and majority of them were backend/hidden cases which were evaluated later. Mine were :-
- https://www.geeksforgeeks.org/round-the-given-number-to-nearest-multiple-of-10/ (2 marks)
- https://www.geeksforgeeks.org/linked-list-sum-nodes-0s/ (3 marks)
- https://www.geeksforgeeks.org/delete-n-nodes-after-m-nodes-of-a-linked-list/ (5 marks)
I did these 3 questions in around 25-30 minutes as they were fairly easy. After this round shortlist of 110 students from around 1000 students was released 5 days later. Although the criteria was not revealed mostly those who completed all questions with required time and space complexity were selected.
Tip : Speed can matter in this round if everybody manages to do 3 questions. Think about optimization later when you have attempted all 3.
Round 2: Group Fly (Pen and Paper test)
This was a pen and paper round and happened 5 days after the online test. It was 45 minutes long and included 7 short answer question based on Data Structures and also a Coding question. The Coding question had 2 parts and the second part was a bonus part but all short questions were mandatory.
The Coding question required us to write working code for Boundary Traversal on paper in a language of our choice. Even though I was not aware of this solution beforehand I did it using a modified BFS and it was accepted.
The bonus part was based on Spiral traversal of the tree. So we had to output all the inner layers in an anti-clockwise order as well. I didn’t attempt this part as only 5-10 minutes were left and decided to revise my other answers. Fortunately I found a mistake as well. I also made sure to include comments in my written code during this time.
The short questions were easy but prone to mistakes. Also they varied from person to person mostly in terms of values given. They were based on :-
- Array address calculation
- Infix postfix conversion
- Macro expansion
- Speed Difference b/w Row and Column major traversal
- Output of string after manipulation by loops
- Recommending a Data Structure for the given situation
- Suggestion correction for given code (if incorrect)
Tip : Make sure to do questions correctly rather than doing all questions.
Round 3: Technical Interview 1
Only 31 students were selected after the previous round for the interviews.
My interview started a couple of hours after the test. The interviewer did not bother to ask me for my resume. She immediately gave me a question.
It was LCA problem and I wrote the code based on method 2 in under 5 minutes.
Then she asked me Anagram Substring Search. For this question we discussed quite extensively on optimization and even went on to discuss trade-offs b/w unordered and ordered map like memory usage and also the underlying data structure i.e. Red Black Tree and Hash Table. Initially she was not convinced with my algorithm and kept asking me to make test cases and perform a dry run (My handwriting and untidy code may have contributed to that :p ). Due to this we spent almost half an hour on the interview.
Tip : Practice writing code using pen and paper as all interviews were taken in this manner.
Round 4: Technical Interview 2
This interview started half an hour after the previous one. The interviewer initially inquired regarding how my written test went and then asked me for my resume. She asked a couple of questions on some mentioned points. Afterwards she also gave me questions to code for.
Firstly she asked me Root to leaf path sum problem and I wrote the code in a recursive manner. I was accumulating the sum instead of subtracting it and she asked if I could improve it more. I told her I could remove the extra variable and she agreed.
Then she asked me what my favorite Data Structure is (FYI it is DSU) and that she would ask a question on it. I told her that I did not mind it and she could ask me related to whichever one she wished. She looked a bit surprised at first but then told me that I had the right spirit and for this question she gave me an array related one. The question was:
Find the position i in an array of length n such that absolute difference b/w maximum element to left of i (a[j] where j<i ) and maximum to right of i (a[k] where k>i) is maximum.
In other words, |max(a[0..j])-max(a[k..n-1])| should be maximum where j<i and k>i.
The solution immediately struck me and when I told it to her she asked me to code it. It was done using two arrays using one-dimensional Dynamic Programming (prefix max and suffix max). Due to this it was the shortest interview out of all even though she kept insisting on making a variety of test cases.
Tip : If you are confident in your skills take a chance. You can impress interviewers very well this way.
Round 5: HR + Technical Interview
After waiting about an hour for other interviews to finish the results were announced and few people were told to wait. I was the first person to be called from the group by the HR manager. This one lasted about half an hour. Initially he asked me to give a basic introduction and after this he asked about the projects and skills from my resume (Android+Web+Data Science). Although he didn’t ask about Android we discussed why I took certain decisions in my project and the rationale behind. There was a lot of stress on the reusable aspect of code in the projects. He even went as far as asking about details of implementation in packages like numpy, pandas and Django and why they were effective as opposed to the conventional implementations.
He seemed more like a Manager as he was visibly older than the rest of the interviewers. But to my surprise even he asked me Coding questions as I thought it would be strictly HR round. QWERTY Words was the question. I did this one easily. Then he asked me to do it in an iterative way instead of recursive and I took some time to get to the solution. I explained to him that the difference in question was similar to the difference b/w DFS and BFS and so it could be done be using a queue. When I finished writing the code he hold me that the interview was done and asked if I wanted to ask him anything. (All interviews ended like this)
Tip : HR rounds are a potential banana skin so be communicative and don’t give up as you may get a subtle yet important hint.
Round 6: Final Interview
This was an impromptu interview seconds after the previous one, taken by another Manager who was taking HR Round of other candidates. I felt that it was just to test me after a long day as he went back to other candidates after giving me just one question. Later I found that other selected candidates weren’t required to give this so I guess he was just trying to test me himself and/or unsettle me with a casual interview. The question was to build a custom ATOF function (Ascii to Float) with character array as input. After about 10 minutes of writing the basic function I wanted to ask him a doubt and when I called him he came back and read the code straightaway. After reading it he told me I was done for the day.
Naturally I was cranky as it had been almost 14 hours on campus and so I got a little agitated in my response to his cryptic answer of what the result is :p . He then said with a smile in Hindi – “Go home and party”. I didn’t expect the official confirmation that day but just when I got home the Internship Coordinator sent the list.
8 people were selected and my name was among them. Immediately congratulations started pouring in and it was a great moment.
Tip : Majority of Tech companies prefer to concentrate on competitive coding and problem solving ability of the applicants in interviews. Practice. Understand. And don’t cram because when you will be dealt with an unknown question only your understanding of topics can help you. So believe in yourself as you can cover up for other flaws by concentrating on this.