Following on from the recruiting event I mentioned Microsoft emailed me for an on campus interview. Thus I had succeed on the resume screening and my next challenge was a half hour in-person interview.
Microsoft flew in two engineers for two days of interviews. We were able to schedule our own interviews through a webapp. Four hours after the interview invitation email I logged into the app and saw only ~5 interview slots blocked off. Since there was capacity for ~48 interviews I had my pick of the prime timeslots.
Worrying over meta interview tactics is distracting yet fun. When is the optimal time to interview? Right after lunch? Definitely not later in the day, but could you interview too early?
After thinking on it for 10 seconds I picked the very FIRST slot on the first day. The decision became much easier when I realized earlier meant less waiting.
The early timeslot also gave me the chance to arrive 30 minutes early, meet the interviewer, and help setup the interview room. With blatant disregard to notions such as “fairness” I also extracted extra interview time with a 10 minute early start.
In my defence I really like interviewing. I also like exams and interviews are like my favourite kind of exam. You go in with nothing to fall back on and you must think your way to the answer. I can only assume this is not a common attitude since my classmates insist on spoiling the fun by studying before exams. Of course Software Engineering wise this attitude would lead to disasterious code duplication and sub-optimal algorithms so I reserve it to exams and interviews.
Interviewer wise the engineer started by classifying my experience and preference: “Configuration-less printing” + “Low & Medium level Systems”. The low level systems might be a bit to generous. When I mentioned my preference he gave me the distinct impression he expected a more popular Microsoft project. I can only imagine how many times people have asked for the Xbox team or The New New thing.
Next he asked a super common open ended question. Every recruiter I had talked to so far had mentioned how “passion” was very important, and this was the question where he want to see it. In anticipation I had a very passionate tale about a yet-announced personal project. This project includes a custom designed algorithm and cool web technologies so it was perfect for the question.
After this came a code design question, take a sub-optimal situation and design the best hacked together work around. The hypothetical situation involved lists. Out of my three interviewing experiences two have featured linked lists. I love this since I spent half a summer using linked lists in libjtapi. Yet I cannot help but worry I’m being mollycoddled, where are the difficult tree and graph problems I’ve been worrying over? My pet theory is that the interviews so far have not been comfortable evaluating C code so they stick to simple problems for their own sake.
Once we agreed on a semi-optimal solution he asked me to code it up. This was uneventful, C is my most favoritist language so I wrote it top to bottom without any syntax errors. We discussed an error case I wasn’t checking for. I prefer things to segfault if the calling function acts silly and passes in a NULL parameter, no risk of someone ignoring an error code. NULL pointers are not something that tend to occur at run time. If you are calling with a NULL pointer it is because you messed up, hiding that is dangerous. Of course I didn’t mention this since we had no time to explore the justification.
This brought the interview to an end, time really does fly when you are enjoying yourself. I thanked him and headed to class.
Overall I though it went well, no further interviews yet but its only been a week.
Update 2012-10-22: I got the next interview set, the in Redmond ones!
Update 2013-10: If you are still interested please consider reading through the overview of my internship.