# Microsoft Internship Interview off-campus

Last Updated : 04 Apr, 2019

There was one online competitive programming round which shortlisted around 100 students to the recruitment process that happened at VIT Chennai campus.

The first round was a written test. (1 hour)
Questions :
1. Given two singly linked lists sorted in the ascending order, return a linked list sorted in descending order combining elements from both the given linked lists. (10 marks)

2. Write test cases for the above question. (5 marks)

3. Given a string, return the Run length encoding of the string. For eg : aaabbc -> a3b2c, abbbbc -> ab4c
(10 marks)

4. Write test cases for the above question. (5 marks)

5. Some C++ program is given and the output should be determined. (I did not get time to attempt this) (2 marks)

6. Find the error in the given program. A java program that takes two linked lists representing two numbers and return a linked list which is the sum of the two numbers. (3 marks)

Second round : Interview

Question: Check whether a singly linked list is a palindrome or not.
I started with the solution of finding the middle element and reversing the second half of the linked list, then doing a linear comparison of corresponding elements. This works but we are changing the state of the original list.

Then I told about the approach where we traverse from the middle element to the end putting each element inside a stack. Then popping out one by one and comparing with the elements from the head of the list.
This requires O(n) space complexity.

Final approach was a recursion based one. I took time to think this from scratch. One way to solve this is given here. My approach was little different. First finding the mid node. Then passing that mid node to the recursive function. When the recursion bottoms up, we check if the head pointer and the current node in recursion is same or not, also head pointer is updated to next node in each recursive call backwards.

Discussed about how to find the middle node using fast and slow pointers.

Then he asked me to write the end to end code in any language. I used python to code it. He complimented when I used nested functions in python to keep the code clean.

Third round : Interview

Question : Given a chessboard and Knight is placed at point x, y. Given the destination coordinates, find the least number of moves Knight should take to reach the destination.

I used a BFS based approach to explore all paths. There were lot of corner cases to check. We are expected to discuss all these cases.

PS : If you have efficient approaches to solve any of the problems above, put them across the comments section. I will update in the article.

Previous
Next