Interviewing with Microsoft : Part 2 – The Butterflies Period
Posted by anirudhsaraf on April 13, 2008
After I got the interview call, I felt butterflies in my stomach. Literally my stomach was churning. I was excited, true, but I had no idea what to expect. Google search revealed lots of question, which ranged from easy to outright impossible. I had not programmed in C++ for over 2 years, C# was a relatively new language and I was yet to take a formal Algorithms course. To top it I was interviewing for a position in Test – and I had no idea about the formal way to test. I had just learnt that something called Unit Tests existed. Most of my knowledge was on a need to know basis. It’s actually a simple concept I follow to learn.
Step 1: Decide on a project. No matter how absurd it seems, you need to have a fundamental belief that you can make it work.
Step 2: Get excited about it for 2-3 days. Think in very abstract terms (plain English) how it can be achieved. If at the end of the 3 day period I still have the same excitement, then I know that I can make the project happen. It is vital to wait for 2-3 days so as not to have too many abandoned projects. Of 10-12 ideas I generate, at the end of the wait period only 1-2 seem to be manageable and implemental. So for example, for the DoubleHyperlink project I broke it down as
1) I create a new page – Simple I knew how do that.
2) Create Hyperlink to that New Page – Again relatively simple using the API.
3) Insert Hyperlink at the Current Cursor Position – I didn’t know how to do this when I started.
4) Browse to new page – Again relatively simple.
As a rule of thumb, if there are more than 5 abstract concepts I need to figure out – I drop the project. Note : Most of my projects are 2-3 weeks timeframe projects with a full course load of classes. So I don’t want anything too big on my plate.
Step 3: Now I have the basic idea of how to achieve my goal. I just need to gather the knowledge. So I need to figure out how to insert at the Current Cursor Location. This is basically the bottleneck in my project. So my goal is narrowed to one single thing – learn how to insert text at the current location in OneNote. At this stage I break it to more fundamental steps. How can I achieve this, since there is no API to do this. After some though I decided that copy-paste would be the simplest thing. So what I need to do is put the hyperlink on the Clipboard and then Paste it into OneNote. So the whole project was broken down into learning how to handle the clipboard. I googled Windows Clipboard management and spent some time learning the syntax and basics behind how the Clipboard works. Equipped with this knowledge I was ready to embark on my major project.
So back to the main point. My entire knowledge is haphazard, with no structure and I felt totally unprepared to take a technical interview without google at my disposal. I had a week before my Interview date. I was panicking. At this point, of the various people I talked to, the best advice was from John (yes he was the one who “noticed” me) which I will quote below
“The only tip I have is relax. Think of writing and testing your code, and then just do it.No pressure.” – Thanks John 🙂
Although it seems too simple and obvious – I’ll advice everyone interviewing to repeat this mantra 10 times a day. You’ve gotten this far; You know your stuff – and you can’t really do much in a week’s time in terms of increasing your knowledge. I did review some C++ – pointers , linked lists and trees – which seemed to be popular according to Google. And yes I did freak out a little when I read questions which seemed totally beyond my grasp. The only thing I recommend practicing is the WhiteBoard question. Don’t do it alone. Get a professor ( if you can) or a friend to give you a mock interview. Practice thinking out aloud. Trust me, you don’t want your first experience to be in front of an interviewer. The first time I did it ( with my prof.) I was totally tounge-tied – specially after I stumbled. Don’t stress over knowing deep issues like the difference between a class and struct. They aren’t looking at what you know. They are looking for how fast can they teach you. This was of course only clear to me after the interview. As for the actual interview – well you’ll have to wait a few more days for that one !!