Sunday, October 26, 2003

Thursday afternoon I flew to Seattle for my job interview with Microsoft. Kudos to them for making the trip so painless. The flight, hotel, rental car was all arranged. And even though I didn't have a direct flight, there was virtually no waiting at the United hub in Chicago -- I stepped off one plane and onto the next. Future candidates, I have to recommend taking the rental car transportation option over the taxi. Getting from the airport to the hotel to the campus by car is really easy and following driving directions is a good way to take your mind off the stress of the upcoming interview for a bit. Also Redmond is so suburban -- you need a car to go anywhere -- like finding a place to eat dinner for example. 10AM, Building 19, Met with my (third) recruiter contact, Jenna. She was very nice, gave off the impression that she wanted me to succeed, and gave the standard technical interview tips: ask questions, think out loud, yada yada. After that she put me on the shuttle to do the interview circuit, first with .NET compact framework, then with Visual Studio for Devices. Since I didn't totally bomb out, I "survived" until the 5th (as appropriate) interview at about 5pm. Here's a pretty complete list of the questions I got asked during the day
  • As a busy student, how do you keep up to date with technology developments in industry?
  • What was the last technology that you heard of and thought 'that's really cool'? 'uncool'?
  • Suppose you're locked in a building and can't leave. How many ways can you think of to measure the exterior temperature?
  • Resume related questions: Fairtunes, C&O, Waterloo.
  • How can you prevent deadlock in a concurrent system?
  • Write a function to add 64 bit numbers using 32bit arithmetic.
  • What is a thread? What is a process?
  • Write a function that, given an alphabetic string, outputs the characters a) sorted b) duplicates removed and c) in lower case. Do it using only a few (<26) bytes of storage. (eg: "Mississippi" -> "imps")
  • Insert into a circular doubly linked list.
  • A square island, with side length n meters, lies in the center of a square pond, with side length n+2 meters. Given only two boards of length 0.99 meters, how can you reach the island from the mainland?
  • ASCII strings are typically encoded using 1 byte per character, even though for alphanumeric text, only the first 7 bits are used (the MSB is always 0). Write a function that compresses a c string by outputting a string of bytes where each group of seven bits represents each character of input. For example, the 3 byte string 01111111, 01011100, 00000101 would compress to the 21 bit string 111111110111000000101.
  • itoa() (He first suggested "reverse the word ordering in a string", then malloc()/free())
  • Tell me about a time your beliefs were challenged in the workplace.
  • Tell me about a time when you discovered a fundamental error in the design of your project.
  • Design and implement the "shuffle" function for a 200 disc CD changer. Your only constraint is that no song may be repeated until every other song has been played once.
At the end of the day, I drove back to the hotel and went to sleep, wanting never to think about programming again. I felt happy to have survived the experience, but I don't feel like I came off as being that stellar. We'll see what happens.

Monday, October 20, 2003

Our RTOS now supports paging. Each process runs in its own virtual address space. Sweet!
Operating system kernel development -- The only situation where a 0 pointer might actually be valid!

Friday, October 10, 2003

Safety Tip for would-be operating system authors: Make sure your stack and your uninitialized data section do not cross paths, or you'll be up until 5am wondering why user programs crash. We're doing a bit more than other groups this term. Instead of the stock toolchain and libraries provided in the CS452 course account, we're using the latest gcc/binutils/newlib and booting according to the multiboot spec. implemented by grub. Furthermore, our binaries are ELF, not a.out. Translation, we can use // style comments, declare variables anywhere in a function body, boot on any PC with a floppy drive, and run in the bochs i386 emulator (think "work at home" and built in debugger). Stefanus has a page all about this setup, which will probably become standard in future terms of the course.

Monday, October 06, 2003

From: xxx@microsoft.com Sent: October 6, 2003 7:40 PM Subject: Microsoft Interviews Hi John, We still have not heard from you! If you are still interested in a FT SDE position at Microsoft please respond ... -----Original Message----- From: xxx@microsoft.com Sent: Wednesday, September 24, 2003 4:52 PM To: jdcormie at u-w-a-t-e-r-l-o-o dot c-a Subject: Microsoft Interviews Hi John We would like to talk to you further about Fulltime opportunities at Microsoft. We would like to interview you for a Software Design Engineer position at our Redmond, WA campus ...

Holy Crap! Thanks to UW's lossy mail servers, I never got the original message and almost missed out on booking my interview! I was just about to give up hope on this one too. Redman was speculating that UW was blocking mail from microsoft.com during the recent e-mail virus epidemic.