My first post after today's website rewriting will be about my summer Microsoft internship.
The full story started much earlier. When I was in high-school and was doing some basic programming I found out about sport (aka competitive) programming. I was quite successful at olympiads and took 3d and 2nd places in Kyiv city in subsequent years. In 2012, during my last year of school I participated in Google Code Jam online competition, and, surprisingly, after 3 rounds I was in top 1000 (from about 20,000 people initially) which was fascinating for me. The next year I wasn't able to get even to that stage.
My acquaintance with top companies started when about 3-4 month later HR from Google send me an email where I was proposed to think about potentially having a job at Google (or something like that). Of course, that in no way meant an offer from the company. Reminding you, that, at that time, I was still in high-school and was just 16 years old, my answer to the email was so non-impressive that I was ignored and didn't receive any emails later on from him.
But after that email I seriously started to think about a job or internship in a top company like Google, Microsoft, Facebook etc. A year later I visited an office of one of the top companies in the USA, I saw how awesome it was and strove to result even more.
So, in April - May 2013 I found Microsoft website where you can apply as a potential intern and I applied. It was too late for summer 2013, so about 3 months later I've got an email from local Microsoft HR with suggestion to reapply for the next summer.
And then I had the first trouble... When filling the new form I wasn't able to fill-in a required job-experience field. I connected back with my explanations why I still might be a good candidate and received a positive answer (for the interview). If she (I'm not sure I'm allowed to disclose her name) wasn't so kind to answer everything would stop at that moment! Thanks to her! Frankly, I was a bit afraid to write that email, but the result proves it was worth a try. Anyway, there is nothing going to happen with you if you are dismissed.
Later on, I found out, there are quite a big number of interns without previous professional job experience, so it's mostly your current skills and ability to speak, explain clearly, which is important.
In the same time I applied for internship at Google, remembering the interest from the company some time ago.
After I send applications, there was about a month until the interviews. I tried to read as much articles from other people about this topic as possible. As I expected, they suggested to focus mostly on algorithms, data structures, complexity analysis as companies like MS are mostly testing your ability to think. Not just how much information is in your head but how you think and reason about it.
As far as I remember I read the following (very useful) books:
- Programming Interviews Exposed
- The Google resume
They are especially targeted for people who applying for jobs in the top IT companies and were written by people who had big success in this field (some of them later became interviewers in those companies). There was one very important advice - it's more important to try to do 10 problems yourself than reading solution for 100 problems. I understood it well that but was still... too lazy, because most of them looked quite simple. And that was a serious mistake.
Google was first to schedule and make the interviews. I had two of them. The format is the following: you and your recruiter decide about interview time, and at that time the interviewer calls your over a phone (yes, just a usual home phone), you both open Google Docs document up. You listen for a task and write your code. The interviewer can immediately see how you type your code and give some feedback.
The first interview was a complete fail...
There were a few pretty basic problems, well, I couldn't even imagine that Google could ask that simple questions.
(I'm not allowed to publish them).
So I was like, well, it's so simple, and I started rushing and wrote a piece of
During the next 3 minutes I removed and rewrote that code 3 times. A similar thing happened with the next task.
After the interview I started analyzing and found about 10 bugs, mistakes or bad design decision in my programs.
I felt like a bad (_|_)
I made the conclusions and the second interview went much better, I was much more confident, almost didn't rush and in general had a feeling that, if my first interview was not that bad, I would almost 100% come to the next stage. I guess, in summary, my chances were probably 30%/70%. My HR wrote me that I'd have an answer in about 6-8 weeks.
And then, Microsoft finally scheduled it's first interview for me. Although the tasks were quite similar but the process itself was a bit different. First of all, it wasn't a phone interview. I was lucky - Microsoft guys flew to Kyiv - it was chosen as a central interviewing place in the East Europe! All interviewees not from Kyiv had their tickets reimbursed (there were also a few of them who had their first interviews over Skype). During this first initial interview I had two subinterviews with two different people (each 30 minutes) - with my local recruiter I talked with before and with MS developer, one of the people behind MS Office, as he told me. During that day it was mostly getting in touch with each other, telling about ourselves and asking questions. After leaving the office I had a strong confidence in positive result and in a few days I was confirmed to have another round of interviews. I think the fact of having interview on-site was one of the reasons I was more successful than with Google, it's so much easier to talk with a person you see with your eyes!
Before that day, the day, which was probably one of the most important in my life, I didn't really think I had high chances to pass. I talked to a couple of guys who had their interviews a day before, which looked very clever, and they were older. But they both failed.
Each intern had 3 interviews and 1 additonal in case of hesitations. I had a feeling that each of my 3 interviews were successful each time increasing my confidence in the positive result. That's why I felt quite surprised after I had been told that the fourth interviewer was waiting me. But instead of asking questions and asking to solve problems he was mostly telling me about how cool Microsoft is, we had a discussion why would a developer work in one or another company. That increased my confidence even more - why would we talk about that if I was going to be dismissed?
An interesting fact was, that, in between the subinterviews one of HRs was constantly telling us not to worry about rains in Seattle. During those moments I was always thinking like, are there really people in this world, who wouldn't go for MS internship only because of rains!? In general the atmosphere was very friendly, the company tries to thing about all possible details for you.
So the time for an answer comes and I am... accepted! So I've got an awesome summer this year, hopefully lots of new friends, connections, time spending, programming experience and, unexpectedly, very good compensation package with many of the perks you can read about on the Internet. As I had to give my answer during a very short time I send my apologies to Google rejecting to continue later conversation. I don't even know my results there.
In summary, for your interview with Microsoft (primarily) or Google you'll (subjectively) need :
- basic problem-solving skills, algorithm and data structure knowledge.
- try solving, even easy, problems yourself. You can try to simulate an interview with someone.
- ability to write code in any language, but preferably C/C++/Java (or C# for Microsoft)
- quite free form resume, at least in Microsoft it's not very important, they understand, that for students it's hard to have their resumes in perfect shape.
- professional experience is not necessary but hobby projects are probably necessary.
- be confident in yourself.
- high grades in the university are a plus if you tell about them but nobody will probably ask you.
- Understanding and ability to speak English is required just to be able to speak with the interviewer. But the higher your English level is - the more time will be available for thinking about the problems and not about the language.
I'll probably keep blogging about my adventures in Seattle during and after the internship itself.