My Interview with Microsoft

 Mar 13th, 2010 

 , , , ,

This post is for those who want to apply or have already applied (but not finished the interview) for a Microsoft Job. The recruitment process is quite similar for everyone and consists of a few steps.

  1. Application
  2. E-Mail Interview
  3. Phone Interview
  4. On Site Interview

I will tell you my story and how I went through the four phases.

1. Application

My blog’s title (Ex Nihilo Nihil Fit) means “Nothing Comes Out of Nothing”. You can’t get a job at Microsoft by not doing anything – this is true for anything else. The first step you need to complete is the application process.

For this, many options are available. You can…

  • … apply online on Microsoft’s Careers website as I did
  • … send your CV to different e-mail addresses (there are some dedicated e-mails for different positions)
  • … apply through some 3rd party organization (job shop, campus recruitment, job agency, etc)

On MS Careers you just have to post your CV and choose the job you want. That’s all! No recommendation letter, no cover letter, no nothing. Of course, not every CV passes the selection process. Here are some tips for improving your resume (worked for me):

  1. Don’t write it just before applying! Write a draft version, wait a few days and then review it. This way you will find a lot of mistakes and stupid things you wrote initially. If you review it immediately after writing, your mind will not be criticism oriented and will just ignore mistakes. Repeat the write-wait-review process as many times as necessary, until you find that the review revealed no mistakes.
  2. After you did the final review and the CV is bullet-proof, ask others to review it. They will definitely find inconsistencies and mistakes and this will make you feel stupid. This is good because will open your eyes will make you go into an ‘I want to improve’ mode. You’ll try to correct everything. After you come up with a modified version go again through steps 1 and 2. Repeat this as many times as necessary. [Special thanks to Lucian Sasu, Nadia Comanici, Andrei Ciobanu, Monica Balan and Lavinia Tanase for reviewing my CV!]
  3. Make it short and give only relevant facts. Initially, I come up with a 5 pages CV because I wrote every single technology with which I worked. There were a lot irrelevant things, I wrote Windows Workflow Foundation just because I played with it for a few days. I added extensive descriptions for every project, made a personal details section (name, birth date, address, etc) of 1/2 page. Others suggested to cut everything that was not necessary. You don’t need to give extensive descriptions, just add a few words. For example, I wrote “VS Image Visualizer – Visual Studio 2008 debug visualizer for images” and added a link to the project’s page – you submit formatted andcan embed links.
  4. Add something that makes it different. I don’t know if this makes a difference, but I added some lines to separate items just like in the picture below. Definitely Microsoft gets thousands of CVs per day. You need something special.
  5. Don’t lie! Tell exactly what you did and what is the proficiency level of your skills. For example, don’t write “Advanced” for UML if you don’t know the difference between composition and aggregation. Be realistic and don’t under/over estimate yourself.
  6. Use the spell chick. Make sure everything is written in correct English and there are no grammar/spelling mistakes. Noddy likes a WC with grammar mi takes. You mght fail just because of that.

Once you completed your CV, choose the job that suits best your needs, apply and wait… The waiting is a problem because all these big companies like Microsoft, Google, Mozilla, Apple, etc. will contact you only if they find something interesting in your application. If you’re not suitable, then no rejection is sent.

I applied for an Intern Software Development Engineer position at Microsoft Redmond. I cannot apply for a full time position because I want to finish the master program on time, in the next summer – an internship is just what I need.

2. E-Mail Interview

January 20, 2010. Two months since I submitted the CV. I wasn’t hoping anymore that MS will contact me, when I got an e-mail titled: “Victor Hurdugaci ES DK” from Holly Peterson saying:

Hi there,
My name is Holly and I work with the Microsoft International Internship recruitment program.
We recently received your CV and would like to consider you for one of our technical internship positions in Denmark in 2010.
[...]
Please respond by the end of the day if possible
[...]

Wow! Now this was a good news. The possible bad side was that the internship was going to take 12 months. This might be a problem. However, it solved really well after talking to my professors. They understood the value of this internship and considered that will be possible to go for 12 months in Denmark and do my thesis there.

The e-mail also contained a set of 15 questions that I was supposed to answer when sending the response. The topic of the questions was not the same. Some asked HR questions like:

  • In what city/country will you be residing in June 2010?
  • Describe your ideal job
  • Have you interviewed with Microsoft before?

Others were a little tricky and technical:

  • How many lines of code would you estimate you personally have written in the last year?
  • How would you test a function that is supposed to calculate the factorial up to 1000?

I tried to be as specific as possible, but still give exhaustive answers, trying to cover all possible uncertainties present in the question’s text. By the way, you can’t send an e-mail back to ask for more details or clarifications. I don’t think I am allowed to post my answers to questions. I will just leave them as homework for you.

Replied the same day (actually the next day at 00:20 in the morning) and I waited again. Now was better because they are going inform me about the decision, no matter if is positive or negative. It was just a matter of time.

You might have more than one e-mail interview. I met someone who had two with less questions.

Few days later, another e-mail arrived. They continue to consider me as a candidate. Someone from Microsoft Development Center Copenhagen (MDCC) will contact me to schedule a phone interview.

3. Phone Interview

This is where it gets interesting. Until now everything was asynchronous and for all questions I had time to think. During a phone interview you have to come up with (almost) instant solutions.

I was contacted by Mario Lucich who proposed an interview on March 5th at 10:00. That time was not convenient for me and I asked to postpone the call. The new time, 13:00, was good. If you get to the phone interview and the proposed time-slot is not good for you, don’t be afraid to ask for changes.

March 5th, around: 12:30. I was preparing for the interview: a piece of paper, a pencil, a glass of water and I was really cool with this.

March 5th, around 12:50. I was nervous, I felt like I wasn’t ready for this and I was expecting for a bad interview.

March 5th, around 13:00. Mario calls on Live Meeting (we decided to use this application instead of phone – is more convenient).

The start of the interview was a relief because we both had problems with the headset and there was a period with “Can you hear me? No? Click-click. How about now? No? Click click … “. This showed that the interview was not going to be formal. Good!

After we solved the headset problems and went through the usual “Hello. How are you? Fine. How about you?”, we got straight into questions.

From what I read on the Internet, each phone interview is different. Each individual got a different set of questions. Again, no answers will be provided. I was asked:

  1. Suppose <some name> will give you 1M dollars. What project would you start?
  2. You are supposed to hire an assistant. For what qualities are you looking? [HINT: short skirt, big boobs, etc. are not good answers]
  3. If you wouldn’t work in software development for what other job would you look?

An interview, usually, lasts for 30-45 minutes. After 10 minutes, the interviewer, dropped a bomb: “Victor, I’ll say this directly. I don’t think we should go any further with this interview”. Ups… I got upset and I said to myself: “Victor, you are so stupid. You provided the worst answers possible and now you missed your change”. And then he said: “… because you convinced me and you will be invited for another interview at MDCC”. I was completely amazed! After just 10-15 minutes the interview was over and it was a success.

I was expecting to technical questions. Other had quite a lot of them, but I got no technical question. The only technical part was when I talked about expert systems – my Bachelor thesis.

Again “someone will contact you in order to schedule the interview and all the details”.

Tips for interview:

  1. Don’t lie! Tell the truth even if it might sound silly. They want to know how are you and not how you pretend to be.
  2. If you need time to think, ask for it. Don’t say “I don’t know”. Take your time to think and say the best solution you come up. Express your thoughts and say what you think.
  3. Try to be calm, wait for the interviewer to finish each question before coming up with an answer.
  4. Stay in a quiet place and don’t be tired. Try to maximize the chances of coming up with good answers.
  5. Don’t search for answers on Internet! Don’t type at computer! Usually, if the interviews hears this, is bad. Use just your mind (and eventually pen/paper).
  6. Take notes. You might even want to write down the question you are supposed to answer.

4. On Site Interview

As agreed, I was contacted by someone to schedule the date of the on site interview. I was supposed to fly on March 4th to Copenhagen, sleep that night at Raddison Blu Scandinavia hotel and have the interview in the next morning. This is how it happened.

The flight with KLM was really nice! I am quite afraid of flight, but I enjoyed this one. The plane was not full so I had 3 seats to seat on :) The same thing happened when I was returning to Holland (with a minor difference. More on this below).

The plane ticket was prepaid by Microsoft. The same thing didn’t happen with the hotel room. I had to pay it and money will be reimbursed. Be careful that Raddison Blu Scandinavia is not accepting Maestro cards! I was really lucky to have a VISA card with me.

So, after a good sleep and a delicious breakfast I took the taxi to MDCC. The taxi driver said he knows where are we going and after a few minutes started to look on the map for the location. He didn’t know where we were supposed to go. I used my phone to find the location and I think he made a huge detour because I had to pay twice as much as others. The good side is that this expense will be reimbursed.

I arrived at MDCC 1 hour before the schedule. The interview was scheduled at 10:30 and I arrived at 9:30. I was hoping to take a walk through the campus, but it was too cold to stay outside. The lady at the front desk invited me to wait there, on a couch. I read some brochures and had some water.

At 10:30 I met Scott Simmons, the person who was going to be my guide in that day. He took me to another room with other interviewees (~10 . They were coming from Romania, Austria, Germany, Russia, Moldavia and Finland) and a table full of snacks and drinks. Whooo party! In that room was also a Microsoft Surface with which we played during the day – unfortunately is not as impressive as in commercials.

Near our room, was another full of interviewers. They were coming out when someone was supposed to be interviewed and they were going back in when the interview finished. After 10 minutes, one interviewer asked for me. We went to another room, in another building and the interview day started.

The first interview was really direct. I was expecting an introduction or something, but went straight to the blackboard and said: “You are given two arrays: before: {3, 3, 5, 8, 1} and after: {5, 3, 2, 4}. Determine what numbers were removed/added from/to the ‘before’ array in order to obtain ‘after’.” I had to write code on blackboard. I choose to write C# code and I implemented the solution using a dictionary. After this, I was asked about the complexity of the algorithm and the discussion went really deep in the implementation and complexity of dictionary (hash table) – “What elements to you add to a dictionary in order to make the Contains method run, always, in O(n), where n is the number of KeyValuePairs in dictionary?”. After a few hints, I was able to come up with the solution, which is not really simple even after knowing it. Can you figure it out?

After that he explained me what is his role at Microsoft and how the development process works – he was a developer team lead. We had a chat on our way the waiting room, in the other building. Drinks, Surface, chat with the other for another few minutes.

My second interviewer comes out from ‘The Room’ and we are going to a room in the same building. This was great because outside was really, really cold. It was the interview I enjoyed the most. After each of us telling his story – he told me about his life at Microsoft, I told him how I got to Netherlands and what I like to do – he told me to design a Tetris game, on blackboard. This wasn’t hard – I did some UML diagrams, explained each design decision and in the end had to write some code that will show a design pattern which can be applied to that design. I implemented a pseudo observer pattern and quite messed it up, but seems it wasn’t so bad after all. The interview ended with me asking for feedback about my design.

The third interview, thinking back now, was supposed to be the easiest. I had to design a function that takes a string as argument and reverses the order of the words, preserving spaces. Imagine that I spent 1 hour and I managed to come with a crappy implementation. First I tried something with regular expressions which didn’t worked eventually ending up by manually splitting the phrase in words and groups of spaces. What disoriented me was, that between words, you can have multiple spaces or tabs. After arriving home I found the solution in 1-2 minutes. I really performed bad in that interview and I don’t think the interviewer was impressed at all.

The last interview session was not really technical. I talked with one product manager who wanted to know what I want to do there and I think he was trying to understand on which position – tester or developer – I fit better. The discussion was awesome because I found some more information about the development and shipping process of Microsoft products.

I was getting tired, nervous and anxious after the four interviews. In the waiting room there was just me and a guy from Austria. The person responsible for me comes out of the room and asks me if I am someone else. He apologies and after a few minutes comes back again. We were still waiting. We gather around a table and he tells us that we both are going to get a job at Microsoft! None of us knew how to react. Then, he gave us some more details about the internship program and how are we going to proceed further.

After four hours of interviews, everything ended up with success. Me and the Austrian went to the train station, waited for a train which was more that one hour behind the schedule and finally arrived to the airport. We had dinner and a beer (duh!!) and each of us went to his plane – we’ll meet again in summer. There is an cool commercial in Kastrup Airport (after you pass the security check) – see the picture on right.

The flight back to Netherlands was quite good. We had some turbulence before landing, but otherwise it was OK. There were some lousy guys in the plane which amused me.

My tips for the on-site interview (you can find many others on Internet):

  1. Take time and think. Don’t go straight into coding. Take a few minutes, simulate different solutions in your head and implement the best one.
  2. Be goal oriented! If you need to choose between a crappy implementation that will work and not doing anything, go for the former. A working solution is better than none. You can say, as I did, that the implementation is not the best but you cannot see a better one now.
  3. Sleep before the interview. Try to maximize you chances as much as possible. Not being tired gives you a good boost.
  4. Don’t eat to much in the morning. Might sound silly but have a light breakfast even is you are tempted by all the good meals at the hotel’s restaurant. The last thing you want is to have problems with your stomach.
  5. Don’t think you have to be perfect. The interviewer are aware that everyone mistakes and they will not kill you :) Think loud, explain your solution, try to prove its correct and don’t panic if you find mistakes (or the interviewer points some). Correct what you can and that’s it.
  6. Socialize with the other candidates. No matter if you are competing or not with the others for the job don’t forget to be nice and socialize. Is good to have connections all over the world.

Yesterday, March 12th, I received my employment contract which will start in summer and will last 12 months. Finally, I’ll go where I always dreamed.

Resources

When you are preparing for the interview you are searching for as many information as possible. I will make your job a little easier and share the best resources I used (in random order):