Quantcast
Channel: YouChew Community Blog List
Viewing all articles
Browse latest Browse all 480

tabull's Blog - My Experience at Microsoft

$
0
0
Right now I got the joys of working swing shift with nothing to do except wait for an email. I really need something to do to pass the time, and so what better way to do this than write a blog post! I guess I could also play some more Professor Layton, but I just got a hotel based off of a camel or something and that seemed like a good place to stop playing for a while.

So, what would be an interesting thing to talk about? I don't have access to YouChew's code at the moment, so I can't show anything there. I can't show any code I do have access to, that'd be a breach of security and my next assignment would be to put all my stuff in a box and leave. I've got a theme of coding going on right now, so why not delve into my experience with trying to get a job at Microsoft? I can't see anybody nodding or shrugging, but I'll give the lack of an answer as response saying it's a good idea. I apologize if it becomes too long; I've got a lot to cover.

Let's go back to spring 2011; I'm a senior in college getting ready to graduate soon with no jobs lined up. A pretty good scenario, I'd say so myself. And by pretty good, I mean completely nerve-racking. Luckily, my school has a deal with Microsoft: if my school will teach quality assurance to computer science majors, they'll allow anyone to get a first-round interview for an internship or position at Microsoft. Pretty good deal, if I have anything to say about it, so of course I took that opportunity. There were three positions I could apply for: Software Engineer, Software Engineer in Test (i.e. a tester, but not like a video game tester, these testers write just as much code or even more code than a software engineer trying to break the program), or a Program Manager. I like writing code so the Program Manager spot wasn't for me; I only had a semester-worth of testing classes. Thus, I went for the Software Engineer position. The thing was, I had no idea what position I'd be interviewing for, which is why the first-round interview was more general.

It came time for the interview. I was pretty nervous, but not as bad as the year prior, since I had tried and failed to get an internship with them. It was the same interviewer, too so I felt a bit more comfortable and confident since I knew she was more laid back and was not a software developer. This interview went really well. I got asked things like what my favorite classes were, what I like doing in my spare time and if I had any questions about working at Microsoft in general. Pretty much questions to see where they'd be able to fit me to best. But of course, with any interview for a software developer position, you got to write some code on a white board. I don't remember the specifics of the question on this one, but it was kind of like implementing a spell checker. I was given a list of words to be considered the dictionary, and I used that with an inputted word to find the closest match and a score of how off it was to that word. After getting some specifics down, I believe I used C++ vectors (List if you use C#, ArrayList if you Java [but why would you?]) to help with the offsets or something. Long story short, I spoke everything out loud and drew pictures and had something written down. I was then asked how I would test it, so I went off listing things I learned in my testing class I was currently taking and how to apply them here and there. And that was it, the 30 minutes went by really quick, I thanked the interviewer and went back to my dorm feeling much better than I did the previous year.

And my intuition was right, a few days later, I got an email from a Microsoft recruiter saying they wanted to see me for the second-round interviews. I should pause for a second and explain a bit how Microsoft interviews work. After applying and getting a first-round interview (which luckily for me was as easy as signing my name on a list) and doing well on them, you get asked to fly over to Redmond (just outside of Seattle, WA) and do 3-5 interviews on their campus in one day. These interviews are an hour each with an hour and a half lunch interview where they pay for your lunch and you get to interview while you eat. So not only do you get to look lost in one of their cafeterias, you have to hold your nerves, speak coherently, and not choke on your food at the same time. The best part of these interviews is that Microsoft pays for everything and at the end of the day I was given money since I drove to Seattle. But I'm getting ahead of myself.

Now go over to the day before the interview. I'm at the hotel, I had called in to multiple sessions the weeks prior where recruiters give advice about the interviews and answer any questions anyone had (fun fact: I learned a lot of people have no conference call etiquette and have no idea what a mute button is). I felt nervous but confident in my abilities; I had researched the type of questions they'd ask, brushed but a bit on my data structures, and reversed a linked list more times than I can count. Then came the time to go to bed. I couldn't sleep, so what do I think is a good idea? Read other people's experiences with Microsoft interviews (ironic I'm writing mine right now). Reading how everybody did just made me doubt myself way too much, no matter how much I reassured that getting to the part I was at that point was an achievement in itself.

Fast forward to the next day, I'm completely nervous and manage to make it to the building I'm supposed to go to. I sign myself in and head over to some refreshments. They also had a Surface (the table, not the tablet), a Kinect, and some other stuff I don't remember that they said I could look at, but decided against it and sat down with the other interviewees, which there were about 10 or so. Most were for internships, but a couple were for actual positions and talked a bit with them. A half an hour after my scheduled time to arrive passes and I get called in to talk to a recruiter, where I'm told the position I'm interviewing for is the Windows 8 team. From what I could tell, I was going to work on the kernel, or the main component of the entire operating system. So that didn't help my nerves at all.

After the brief talk, I go to a shuttle and get driven to my first interview (Microsoft's campus is huge liek xbox lol, btw). I get introduced to the interviewer, and do a bit of general questions like what I like doing, anything cool I'm doing or read about, stuff like that. Then comes the technical question, write the C function malloc. This was the question I dreaded getting asked since I had never studied it, however a good time to show my logical skills in action. This function essentially allocated memory to you in the form of a pointer (variable that points to a location in memory). All I'm given is a global pointer variable and the length of said pointer. So, what I have to do is manage the memory of that pointer and give the programmer a pointer somewhere inside that chunk of memory that won't overlap anything else. After some time and some guidance from the interviewer, I am able to come up with a solution using a linked list embedded in that chunk of memory that has a pointer to the next pointer in the chunk and how much free space there is between the pointers. I don't get to fully implement it (I'm only given a half an hour to implement something like that) but I felt while incomplete, I was able to get my point across. The interview finished and I'm sent off to the next interview.

The next interviewer, I felt a bit more comfortable around, for one he was closer to my age and he didn't have a heavy accent. This guy worked with Virtual Machines, so during the lunch he talked a bit about that. And then comes the first big mistake I made. He asked me what my least favorite class was and without saying "you know maybe I should say my second least favorite instead" I blurted out "Operating Systems". Smooth move there, interview for a position on the Windows 8 team and you say "Operating Systems." However, in my mind this was more due to the teacher I had than the subject material itself, but since I was so nervous, I didn't qualify the answer with that. After that blunder and my weak try to continue the interview, we go to his office where I do some technical problems. The first one was to take two absolute paths, and return the relative path of the second path to the first path. I felt I had a good solution, but since you don't get Intelli-sense, I felt like I'd screw the substring method call and used character concatenation instead and made it look extremely primitive. But truth be told, interviewers don't really care about that, they just care about how you get to the solution. I finish up that question and then get asked to essentially write a queue. Easy enough, but in my haste, I accidentally wrote a stack (the polar opposite of a queue). Whoops. I quickly corrected that and the interview finished.

Then came the third interview, the worst one. This guy was a lead developer and so he knew his stuff and thus managed to ask all the certain questions I had no idea in a particular field I thought I was good at. I said I preferred C++ over C# (at the time) and when asked why I more or less said I preferred the more control. He then asked why someone would use a virtual deconstructor. I got taken aback on this one, I knew what a deconstructor was knew what polymorphism was, so I BSed an answer based on that information, whether what I said was accurate I'll have no idea. The next question was about databases, I said I had some experience with it and felt comfortable using SQL since I had finished the first iteration of the Top 100 posts page here. So what do I get asked? The benefits of using transactions. I had to dig into my memory on the one class lecture I had 1 and a half years prior and said something about it, but not quite the whole thing. I probably didn't look too well informed to this guy. Then came the code portion. I was asked to reverse a linked list. Sweet, I had done this many times before and managed to pull my way through it iteratively despite my nervousness. Then he asked how else I could do it and I said recursively. He then asked me to write it recursively and my mind went completely blank and I started fumbling around way too much and in the end he gave the solution which I found to be completely inefficient but didn't bring it up. I wonder now if he was trying to see if I would bring that up to be able to discuss it. After that train-wreck, I was asked to partition an array of integers where the odd numbers are on the left side of the array and the even numbers are on the right side of the array. I get a bad example done (2 while loops inside a while loop, boo!) and finish up the interview.

As we're walking back to the building entrance, he informs me that this was my last interview. This was a telling sign to me that I didn't get the job. If you're told you'll have 3-5 interviews and you only have 3, it's not a good sign. So of course I become disappointed that I blew my shot and become pretty silent for the rest of the day. Sure enough, a few days later I'm told "while you have demonstrated certain skills, we are going to have to pass on this one. Try again next year."

And that was that, despite the not so great outcome, I felt it was such a great experience and actually getting the opportunity to work at a place like Microsoft was amazing (despite how everyone hates their decisions nowadays). Not only that, this was my first real interview ever and it gave me such a great glimpse into what a career in software development would be like. As such, I got an interview with another, much smaller company and nailed both the initial interview and the onsite interview and got the job I'm currently at today. Which, to be honest, I enjoy it much more than if I had gotten the one at Microsoft. Although, this motion sensitive light switch is getting on my nerves. Thanks swing shift!

To wrap things up, that was pretty much my experience with Microsoft and considering how well received Windows 8 is, maybe it's good I didn't get the job.

Viewing all articles
Browse latest Browse all 480

Trending Articles