Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Microsoft IDC Interview | Set 35 (On-Campus for Internship)

  • Difficulty Level : Medium
  • Last Updated : 10 Oct, 2019

Online test: This test was organized by, and had to be completed within an hour.

There were two coding questions:

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!

1. There is a linked list whose node is defined as follows

    struct node
        int x,y;
        node* next;

We had to implement a function which takes the head of linked list, and if any three consecutive points lie on same horizontal or vertical line, we had to remove the middle node. The linked list will either be empty or will contain atleast two nodes. The function prototype was:

    void remove(node* head)



Input: (1,2)->(2,3)->(2,4),(2,5)->(3,4)
Output: (1->2)->(2,3)->(2,5)->(3,4)

2. Given a sorted array, convert it into a height balanced binary search tree. A height balanced tree is one in which for every node, the height difference of left and right subtree is at most 1. Node of binary tree was:

    struct node
        int data;
        node* left;
        node* right;

Function to be implemented was:

    node* binary_tree(int* ar, int len)


There were 3 rounds of interview, and we had write code on paper.

Round 1:
There were two questions:
1. Given a string, remove all continuous occurrences of ‘a’ and any occurrence of ‘b’.
Example: Input: “aacbccdbsssaba”, then output: “acccdsssa”

2. What data structure should be used if we have to implement insert and delete functions in a text editor? The functions should be as fast as possible.

Round 2:
Question 1: Given a string and two positions in that string, shuffle the string, that is, move the given substring to the front. Example:
Input: abcdefgh, 4,6
Output: defabcgh
This has to be done inplace with O(n) time complexity.

Question 2: How to implement dictionary data structure in C++? What kind of hash functions shall we use? How to manage collisions?

Question 3: How would you implement vector data structure in C++ on your own? What would be the accessing time complexity? How can you make it O(1)? How to resize the structure?

Round 3:
Question 1: Given a k-ary tree, how to print the elements layer wise?

Question 2: Given a singly linked list and a number ‘n’, write code to reverse every ‘n’ elements of the linked list. Example:
Input: 1->2->3->4->5->6, n=3
Output: 3->2->1->6->5->4

If you like GeeksforGeeks and would like to contribute, you can also write an article and mail your article to See your article appearing on the GeeksforGeeks main page and help other Geeks.

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!