I applied through an employee referral. The process took 1 day. I interviewed at Microsoft (Redmond, WA) in Jun 2012
Interview
They flew me in for a full day interview. I was greeted in the morning by HR and shuttled off to meet the folks I'd be working with for interviews. It started well but went downhill. They were very aggressive with the questions they asked and how they went about it. I like to think through my answers verbally -- but anytime I said something they didn't like, they would derail my train of thought picking away at it, making it difficult to approach things systematically. Overall, the technical questions weren't that difficult, but their style of interview made it difficult and somewhat unpleasant.
I applied through a recruiter. The process took 2 weeks. I interviewed at Microsoft (Hyderabad) in Apr 2012
Interview
A recruiter reached me via linkedin and scheduled a f2f interview two days later in a hotel. Had five rounds of technical discussion (each 1 hour) and they told there may be one more round (may be technical). 1week later they scheduled a video call with a director (but it was actually an audio only with screen sharing). We talked about some design level ideas then he asked a technical question. I was running into trouble to setup the video call because I'd a mac (hope you understand because the video call tool was developed by MS).
Interview questions [5]
Question 1
Imagine there are n cities (say c1, c2....cn) connected circularly and each of them has a petrol bunk (say p1,p2...pn). The distance between each cities are d1, d2...dn. Here 1unit of petrol will be used to travel 1unit of distance. You can start from any city so that you can go through all of them and reach the same location (city). Find from where we've to begin the navigation.
FOR EXAMPLE:
c1-->c2-->c3-->c1
p1 has 2ltr
p2 has 10ltr
p3 has 4ltr
and the distance between each cities:
c1<-->c2: 3
c2<-->c3: 2
c3<-->c1: 8
Here we've to start at c2 in-order to come back again to the same place.
Explain the logic to find whether u can come back to the same location. Find where to start. Write a program for the same. Write test cases for the same.
You're converting a string (s1) into another (s2) by changing the characters in s1. You can do add/delete/replace the characters of s1 to get s2. The cost of any of those operation for a character is 1. Find the minimum cost to convert s1 into s2. Write program and test cases for the same.
For example: Convert "Hi" into "Hey". This would require minimum two cost.
1. Replace 'i' with 'e' in s1
2. Add 'y' to s1.
Now we've s2.
Write a program to iterate through a 2D grid in a spiral way. Since I can't attach images here, I'll explain it using an array. Imagine you've a nxm matrix of bytes. you've iterate through it in a spiral way. It means, iterate the first row (left to right), then iterate through the right most column (top-bottom) then iterate the bottom most row (right-left) until you reach the center of the matrix. Hope its clear now.
You've a singly linked list where every node in the list has a field "random" which points to other node in the same list. Write a function to clone this list (create a new copy of the same). Don't use extra space (just the pointer variables are fine).
Some other standard questions:
1. Given a BST and a range, print all the numbers that comes in that range.
Ex: the function will be something like: print(node * head, int x, int y);
It has to print all numbers within the rage x&y
2. Print max height (level) of a binary search tree.
3. Given an array of integers, determine the sub array which makes max sum.
4. Find LCA of the binary search tree.