I got the opportunity to interview for an internship with Microsoft this semester. I talked to a recruiter at the career fair here at Iowa State, got an on-campus interview, and then ended up getting flown out to Seattle for a round of software developer intern interviews.
In this post, I'm going to go into more detail the interview process and what it was like for me.
I traveled out to Seattle with one of my other friends from ISU, and we met up with others from there once we arrived. The flight out as well as the hotel and food for the trip was completely paid for and reimbursed by the company, which was definitely nice. We got a pretty healthy budget for meals, so we definitely ate a higher quality food than I was used to eating on ISU campus.
Our interview process was a series of 45-minute interviews for either an entire morning or an entire afternoon. They were pretty relaxed, and we were not required to dress up at all. One of my interviewers was in sweatpants. It was only slightly intimidating since I had never done a technical interview at this caliber before, so I had no idea what exactly to expect.
Each interviewer was just a member of the team I was going to work on. They asked their own questions, and some just talked to me about some of my personal projects.
I was asked 4 main interview questions during the process. Here they are: (some details may have been altered)
- Suppose you have a 5 x 8 grid (which has 40 cells in it). That grid needs to be filled with random digits between 0 and 9. Each digit must occur the same amount of times as all the other digits. Thus, each number must be randomly placed, and occur 4 times. Write a method to fill the grid.
- Imagine a tic-tac-toe board that is n x n in size (3x3, 5x5, etc). Assuming that standard tic-tac-toe rules apply, write a method that will check whether a move will be a winning move to end the game.
- Assume the data passed to the method is as follows (move: X or O, x coordinate, y coordinate)
- You must check for winning moves vertically, horizontally, and across both diagonals if required.
- You have a binary tree filled with digits.
- Do an infix traversal of the tree and write the order of visiting each node.
- Can you accurately recreate the tree based only on the order you wrote?
- Do a postfix traversal of the tree and write the order again.
- Using the infix and postfix outputs, can you now recreate the tree?
- Write the algorithm for it.
- Imagine a network of friendships, similar to Facebook or LinkedIn. Suppose you have two people in the network, person A and person B, who are not directly friends and do not have any mutual friends.
- Write a method to find the closest route from person A to person B in the smallest amount of time.
After a day of interviewing, my brain was dead. I packed up and flew back to Iowa for school the next day. A few days later, I received a call from my contact with a pretty sweet offer.
Overall, the interview process was not as bad as I had expected. I was able to work through all the problems given to me, even though I did not reach the final answer for a few of the questions.