Again, I was pretty shocked when I got the invitation to interview in Redmond, WA, at Microsoft headquarters. After replying to the email, I was contacted by a travel coordinator who set up my flight plans. Yes, Microsoft flew me out, gave me a rental car, and put me up in a hotel within walking distance of the main Microsoft campus. They even covered my meal expenses–nice.
Before flying out to Redmond, I had to digitally sign a few documents having to do with use of private information, travel insurance, etc. How I digitally signed them was to first, create a Microsoft Passport account, then after reading a document online, simply type in my name and click a button. Easy.
I flew to Seattle on Sunday and visited a friend from high school. I made sure I got back to the hotel early to get a good night’s rest. The next morning, I took my time getting ready–ironing my shirt and slacks, etc. By the way, I wore a white shirt, tie, and suit this time. I also spent a little time working a little on SnoShack.com just to wake up my programming mind. I also read a few puzzles in the programming interviews book I mentioned in part 2.
My day of interviews started at 11:00 a.m. I met with a recruiter and was told which teams I would be interviewing with. I guess the recruiter used my resume to determine which teams to choose. I said on my resume that my interests were in web services and server technologies. So I was happy to find out I was going to interview with the an Exchange Server Team and a SQL Server Team. I was told I would have two interviews with both teams throughout the day, and that each interviewer woudl usher me along to the next one. I was to end up at the recruiting office to talk about how the day went.
My first interviews were with the Exchange Team. My first interviewer was a guy named Oleg, a Russian who spoke English very well. He was, of course, shocked when I busted out my fluent (but rusty) Russian which I learned as a missionary for two years in southern Russia (that’s another story). I made it clear, however, that I wasn’t prepared to have a technical interview in Russian, unless we were going to talk about religious matters
. Instead of having the interview in an office setting, Oleg drove me to a resturaunt and we talked over lunch. He gave me a linked-list problem which I think I nailed. By the way, the food was great. Afterwards, we drove back to the Microsoft campus, and Oleg took me into the building where the Exchange team operates and brought me to my next interview.
Just my luck, my next interviewer was also a native Russian, Yuri. His English was really not that great, so I think my Russian chit-chat at the beginning helped break the ice and set him at ease. One thing I learned quickly while interviewing was that language barriers are often easily overcome when talking about technology, and not only because most technical terms are cognatives of English words. Anyway, the problem he gave me was to write a function that implements a base64 encoder–basically to test my understanding of the reader/writer pattern. It took me a while to understand what he wanted, so I don’t think I hit a homerun with this problem, but I thought the interview went fairly well. Afterwards, Yuri wished me luck in Russian, and he took me to my next interview in the building next door.
My next interview was with an Indian guy that blew my socks off with how smart he was. What an impressive engineer! He was in charge of a team that is responsible for data integrity in the data storage division of SQL Server. He gave me another linked-list problem which I would have nailed if he hadn’t wanted me to get my pointer syntax right. Most of my programming experience in the last few years has been with C#, not C++, so I was a little rusty on the syntax. Come to find out, all production code in SQL Server is still in C++, whereas all production code in Exchange is actually C#.
Afterwards, my final interview was with the last guy’s boss. He gave me a pretty simple array-sorting problem which I nailed quite well. The interviewer asked me about my interests and how the other interviews went. He then asked me about my C++ experience. I told him honestly that all of my C++ experience was in school and that I was most familiar with C#. He then told me that he would like to offer me a position as a tester (SDET, as opposed to SDE–what I was interviewing for). I told him was would be willing to entertain the offer.
So, when I got back to the recruiter’s office, I was able to report a pretty good day. I felt like I was going to get an offer for sure from SQL Server, but I wasn’t so sure about Exchange.
I was pretty tired after a full day of interviewing, so I lounged around the rest of the night. By the way, when I called my wife after I was done interviewing, I found out that my little boy, Parley, had broken his arm. Poor kid. Lucky that I didn’t find out about it until after my interviews were over. Then next day I flew home to wait for news from the recruiter.