On Campus Interviews with Microsoft

On Campus Interviews with Microsoft

It’s digging back into prehistory time :) WAY back into pre-historical times.

Microsoft has always done on-campus interviews, it’s an integral part of the recruiting process. Gretchen and Zoe have written about it a lot here.

My on-campus interview story is a bit dated nowadays, it occurred when I was interviewing at Carnegie-Mellon University back in October of 1983 (or thereabouts).

I had signed up for the interview with Microsoft more or less on a lark, I wasn't particularly interested in Microsoft as an employer, but Microsoft did compilers, and operating systems (for toy computers), and I figured that it would be worth an hour or two of my time. I REALLY wanted a job working in operating systems development on a "real" computer - something like a Vax would be nice.

I walked into the interview cold - I had no idea who this "Steve Ballmer" was, I figured he was yet another development manager, just like I had all the other interviewers I had seen. Boy was I surprised.

I walked into the office-let that they used for interviews, and was introduced to this great big strapping slightly balding guy with a voice almost as loud as my own. He started in asking me the usual questions - what's your favorite course, what do you do in your spare time, etc. So far, nothing unusual.... Then he started asking me questions - but not programming questions like I'd had before, logic questions.. The one that sticks in my mind was:

"We're going to play a game. I'm going to pick a number between 1 and 100, you get to guess the number. If you don't get it, I'll tell you if you're too high or too low. If you guess it, i'll pay you $6 less the number of guesses that you take - so if you get the number on the first guess, you get $6, but if you take 7 guesses, you pay ME $1.

Now do you want to play the game or not?"

I said "Of course not - a binary search on 1 to 100 takes 7 guesses for the worst case, you can pick your numbers such that you will always force 7 guesses".

Steve looks me and says "Are you sure?”

Long pause on my part.... "Well, I don't need to choose my first pivot point at 50, any number between 32 and 64 will work just as well, and if I do that, I change the spread, so if I change the start point of the binary search, I can win this game".

Steve then moved on to describe the work environment at Microsoft - everyone gets their own office, development work is done on Sun workstations, and most of the compiler and language work is done on a DECSYSTEM-20 (since I was a die-hard dec-20 fan back then (and still am), this was music to my ears). Steve then described the Microsoft DEC-20 and commented "We love the DEC-20, except when we do our nightly builds - it gets totally unusable when we're doing builds, the load average gets to 10 or 20" (the "load average" on a DEC-20 was a measure of the performance of the machine - the higher the number the lower the user response time). He got quite emphatic about how horrible life was on the mainframe when this was happening.

At that point, I totally lost it. "You think that a load average of 10 or 20 is bad? Man, you are clueless - you have absolutely no idea how bad the load can get on a DEC-20. On a good day, the load average on our DEC-20 is 50, and when projects are due, it goes up to 100 or 120". I continued ranting for several more minutes.

At about that time, the interview ended, but I was convinced that I had blown it (no big deal, as I mentioned - I didn't really care about the job anyway). On the way out, I started reading the Microsoft literature that I'd been given... When it came to describing the executive team at Microsoft, I stopped and stared at the brochure. There was his name and picture - "Steve Ballmer, Vice President, Operations".

Sigh.. If I had any chance of getting that job, I had surely blown it totally - you just don't just tell the guy who’s interviewing you that he's an idiot. Especially when he's the head of H.R. in a company that's trying to hire you...

Needless to say, the very next day, I received a telex asking me to come to Redmond and interview with Microsoft. I remember Valorie running into my compiler design class with the telex in her hand. Three months later, I interviewed on campus at Microsoft (my first plant trip). Things must have gone well; I got my very first full time job offer at about 4PM on the day I interviewed.

Oh, and about that interview question (there was a reason I put it in the story)... I wasn't happy with the answer to the question that I'd given Steve, it kept on niggling away at the back of my mind. About a week later, I was busy working on the parser for my Compiler Design class, and I decided I needed a break, so I wrote a program to emulate the game choosing different pivot points (you can tell I am/was a totally obsessive geek for even considering this). After running through the game, even after choosing pivot points that aren't in the middle, it turns out that you CANNOT win the game - there is no other pivot point that can be used to improve your odds of guessing the worst-case numbers based on a pivot on 50 - the alternate pivot points still require more than 6 guesses to find the value. On the other hand if the person you’re playing with believes that you’re going to choose a pivot point of 50, and picks his numbers accordingly, you CAN potentially win, but it’s a crap shoot.

I ran into Steve in the hall about a year after I had started, and asked him about that (further proof that I’m an uber-geek – I actually followed through with the interviewer and challenged him on his interview question)... He said "Yeah, I knew that, the point of that interview question is to see if the interview candidate can even consider a pivot point other than 50, I didn't care about what the real answer was"...

Edit: KC pointed out in private email that I left out a crucial detail - hey, it was more than 20 years ago, you expect me to get every detail right? :)

I've had a very similar question asked to me in an interview. The only change was the number being picked was Random. I'm also assuming a first guess payout of 5, to get the 7th guess of -1 (5,4,3,2,1,0,-1)

If that's the case, then I would play. Sure, there are 37 chances in a hundred of getting -1, but there are 32 of getting 0, 16 of getting 1, 8 of getting 2, 4 of getting 3, 2 of getting 4, and 1 of getting 5.. Thus, your randomly average payout is .2. And that's in the "worse case" using 50 as a pivot. If you start with $6, and skip 0, the payout is even better in your favor.

If the other person can play against you picking any number they want (potentially knowing how you'll play), then it's a different game..

Pete
spam_drierp_sucks@yahoo.com

Nicholas Allen

22 Jul 2004 4:16 PM

That's actually a real tough one. I'll have to actually crank through it and see what the estimated payout is if both Steve and you play optimally with a fixed strategy. It's a nice story.

Nicholas Allen

22 Jul 2004 10:18 PM

So it looks like Steve does come out ahead if both players are allowed to play as they wish (including strategies not based on binary search). I also puzzled a little variant for a bit:

Suppose Steve had instead asked Larry to write a computer program to play the number guessing game. The program forgets what happens in previous games, but can use random number generators or other tricks to vary how it behaves. Steve looks at the program and then picks a single number which he will play against it every time. Is it always possible for him to pick a number that will win in the long run?

An opponent that is "any computer program" is kind of slippery. There are a lot of different strategies to try out to get a foothold for tackling a problem like that. Security problems where you need to defend against an arbitrary attacker are good practice.

By the way, the answer is yes, although proving it isn't as much as fun as just trying to get started.

In the story, Larry says "any number between 32 and 64 will work just as well". Powers of two look pretty but is that true? If the expected payout is different, what goes wrong to make that happen?

Petr Kadlec

23 Jul 2004 4:48 AM

A power of two should be the number specifying the amount of numbers _left_. So that you have to be sure that your first guess splits the numbers in a way that no "half" is bigger than 64 numbers. That is, the first guess should be between 100-64=36 and 1+64=65. IIANM.

Sathyaish Chakravarthy

23 Jul 2004 5:47 AM

Thanks for such a wonderful post. More stuff like this will be great. Thanks for sharing it with us. Especially for those of us aspirants who are betting all their odds on joining Microsoft, it would be a priceless reading to have a few entries blogged on how the day-to-day working is at Microsoft.

It's a pleasure to be able to hear it from the employees themselves. This blogs thing and Channel9 have done an amazing job in reaching out to the people out of Microsoft and letting them have a peek into the life inside Microsoft.

I hope I join Microsoft soon and I too will have a blog of my own where I will write detailed accounts of my interviews and day-to-day work at Microsoft. It must be a feeling of enormous pride to be able to tell your friends that you work for Microsoft, where you have the most intelligent people on the planet as your co-workers. All the people who created the software - Windows, MS Office et al. - are there. All the resources are at an arm's length. Guidance and mentoring is available from the people who created the stuff themselves. So, if you're stuck with COM, for instance, talk to none else but ahem...Don Box himself. What a feeling it must be.