On February 5, 2010 I interviewed with Microsoft (Bing specifically) for a SDET position. I wanted to share my interview experience with those who have asked me to let them know how the interview went and with all those who come across my blog (perhaps, in preparation for an interview with Microsoft as well :) ).
After having a technical phone interview (technical screening) with a SDET in Bing, I was notified that Microsoft would like to interview me in person in Seattle (all expenses paid, of course). The airfare, hotel, and a rental car were all arranged by Microsoft. There was a bit of confusion about the fact that I was not a local candidate -- somehow the system did not indicate that I lived outside of the Seattle area, so I had to follow up about the travel arrangements :). Otherwise, the preliminaries were straightforward.
I arrived in Seattle on February 4th, picked up the rental car and checked into the hotel. Outside of lunch, dinner, and a quick stop by the grocery store to buy some water for the stay, I did not plan anything else. I was able to get about 7.5-8 hours of sleep that night.
My interview started at 10:30am on Friday. I arrived at about 10:20am and parked across the street from Bellevue City Center (that's the 25-story Microsoft building in downtown Bellevue). I let the receptionist know that I have arrived and she informed me that the recruiter would see me shortly. The recruiter came a few minutes later and took me to a conference room. She did an excellent job of explaining the interview process to me and did all she could to make me comfortable. She asked me some questions about my current job, my responsibilities, etc. The question of salary expectations also came up. She then gave me a sheet that included the interview schedule and explained to me that if the team feels good about me as a candidate, more interviews might be added after the initial three. The first interview was with an experienced SDET, the second and third were with lead SDETs.
The first interview was interesting. After a few quick questions, I was tasked with testing a function that returned a random number. This was quite interesting: input, range, distribution testing, etc. I also mentioned other types of testing that should be done: concurrency, performance, etc. That probably took about 20-25 minutes. Afterwards, I was asked to write code to traverse a matrix in a zig-zagged manner as shown in the image below.
It took me a few minutes to figure out the algorithm by thinking out loud and asking questions of the interviewer. The algorithm turned out be very straighforward, so I started coding. Overall, this went well although there were several times I had to make changes based on the interviewer's hints and observations.
My next interview was over lunch. We went to
El Gaucho, which is an upscale restaurant on the first floor of Bellevue City Center. After some casual talk and placing the order, we got down to business. I was asked how I would go about testing a card-reading system (such as one used by Microsoft employees to get into buildings). This was quite interesting. We covered a lot of testing scenarios (invalid input, valid input, power failure, interference, distance, velocity, direction, external conditions, scalability, performance, concurrency, etc.) and I'm sure there are lots more cases that we did not cover. This really probed my testing mindset and it revealed instances were I was not approaching testing methodically. Overall, this was a great learning experience.
The lunch interview actually went thirty minutes longer than planned so there was a little bit of schedule readjustment. The next (third) interview was changed to last 30 minutes and, at that point I was informed that I would have an interview afterwards as well with the manager. The third interview was the least enjoyable. The interviewer came across as somewhat condescending and impatient -- I have to presume that this was intentional to see how I would do under those conditions. The interviewer asked me about my experience and noted that I had some senior experience (including an architect position with my previous employer). Some of the comments almost seemed to indicate that the interviewer did not believe that the experience was credible... Afterwards, I was asked what data/metadata would be useful in making multimedia search results more relevant/useful to the users of Bing. This was interesting although it also revealed how little I knew about this area of Bing (in fact, I was not familiar with Bing's multimedia search feature at all). After this, the interviewer asked me to traverse a binary tree in a breadth-first fashion. I got stumped on this one. I started talking about the drawbacks of the breadth-first traversal and that depth-first is better in terms of memory utilization. I had a mental block actually figuring out the algorithm for breadth-first traversal -- not that the algorithm was hard (hint: using queue for breadth-first as opposed to a stack for depth-first traversal) but it was one of those moments that I just wasn't making the connection :(. Anyway, I didn't do well on this interview...
My final interview was with the manager. I was not asked any technical questions although there were a lot of questions about the SDLC, estimating, my strengths, weaknesses, what I like to do, etc. By this time, I had been interviewing for at least 5 hours and was getting quite tired. Of course, this is the point where I had to be at my best since the manager is the primary decision maker in whether to offer me the job or not. In retrospect, I wish I had thought through some of these questions better instead of having to come up with answers on the spot after my brain had been grilled for several hours... I would say this interview went so-so. It was close to 4pm by the time I was finished and headed back to the hotel. My final thoughts as I was headed toward the car were: "Is this job worth the exhaustion I'm experiencing now?". In retrospect, I believe it was a great experience and definitely worth the exhaustion... I'm actually still waiting to hear back from the recruiter whether Microsoft would offer me the job or not.