preface
The Puget Sound region gets snow only a couple of days a year in the lowlands, so people were unprepared for the blizzard that shut down most roads on my Microsoft interview day in January 1996. Because none of my scheduled interviewers made it to work, recruiting had to scramble to find people who could see a candidate at the last minute. My first technical interviewer that morning was a young, irritated, and (understandably) unprepared database developer. He set me what was already in 1996 a cliché coding exam: write the code to reverse a linked list. Microsoft interviewers then and now expect candidates to ask clarifying questions about even trivial problems before diving in and writing the code, so I did:
“Can I use an object-oriented language?”
“Sure.”
“Can I assume that I have a list class implemented?”
“Sure.”
“Can I make the list immutable?”
“Uh . . . sure. I guess.”
“Great!” I dashed off four lines of C++ code to reverse an immutable linked list.
“That’s wrong.”
Things didn’t improve from there; I didn’t get any offer that day. Fortunately, I had an offer in hand from the Visual Basic team on which I’d interned, so the day wasn’t a total loss.