Sharing interview experience

Dear Professor,

I know that you always ask graduates who are working to share experiences with students who are still in school. When I took your classes, I received several emails from former students sharing their experiences so I would like to share mine.

Like many students from China I went to CMU with a desire to learn as much as I can from one of the best technology schools. Beside the technical knowledge that I learned, I also learned about friendships, relationships, and especially valuable advices from you. After graduated, most of my friends stayed in the U.S. and got jobs at companies like Google, Microsoft, Oracle and IBM but I returned to China because I had to take care of my elderly parents. I was the only son and I wanted to spend time with them after four years away to study in the U.S. With the degree from CMU, I got a good job with a top software company in Beijing. Since then, I heard from friends who worked in the U.S. about how those top software companies operated; how well they treated their workers; how software people worked together and learned from each others; how nice were their facilities; especially they were given time to innovate and create new ideas etc. The more I heard about it, the more I wished that I had the opportunity like them.

Having worked for a top software company in China, I always enjoyed my work but the way the company operated was very different from U.S. company. Developers must work long hours and follow certain direction as everything was driven by business, learning new things or innovation were considered luxury things that they cannot afford. Last month, I received a call from a friend who works for Microsoft. He told me that due to the critical shortage of skilled people, Microsoft began to hire developers from all over the world and they are hiring people in Beijing for the local center, this was great news for me.

Following is my own experience on the interview with this software company. I do not know if my experience is any difference from others but I hope that it may help some of you who want to work for Microsoft. I believe that my CMU degree and working experience really help as within few days, I received a call from Microsoft for a telephone interview. Later I found out that there were over thousand applicants who applied for the job but they selected about one hundred for interview.

For the first interview that Microsoft called “Screening Interview”, we used Skype to talk to three people in the U.S. They began by reviewing my resume and asked me about my education, my capstone project at CMU, and my present project. After about twenty minutes, they gave me some problems to solve. The problems were simple (They were about Linked-lists and Binary-tree) and I had no problem with the answers. After that, they moved to programming concept and asked me many questions about Object Oriented Design in which I answered accordingly. (I think anyone who study Computer Science or Software Engineering should be able to answer these questions). We continued on several topics mostly about software quality. I mentioned Quality attributes such as Maintainability, Scalability, Performance and Security which seemed surprised them. Later I learned that most candidates only referred software quality to defect. While I was explaining to them about secured coding, one person suddenly stopped me: “Could you come to our office in Beijing next week, I wanted you to meet someone.” Of course, I told him that I am available for additional interview. They said that they will send me an email with the details and the “screening interview” was over. It lasted about 45 minutes but it seemed much longer than that but I was very happy because I thought that I did well.

The next interview happened at Microsoft office in Beijing. The place had a different atmosphere as compare with our company. It was bright and had a lot of pictures, a small table with coffee pots and lot of snack foods. The receptionist offered me coffee but I declined. After waiting for about 15 minutes, I was asked to go into a small room with a large white board.

The first interview was conducted by three young people about the same age as mine. They were polite but seemed serious and it made me a little nervous. Two of them asked most questions when the other was taking notes on his laptops. I felt uncomfortable because he typed very fast as he recorded everything I said. The interview began with a problem where I had to write code on the whiteboard. I asked what programming language that they preferred and they told me that I could select any language so I chose C++. The problem was relatively easy and I did it with about 50 lines of code. They looked at it then took a picture of what I wrote on the board with their phone camera. The next several problems were more difficult. Some of them were very challenging like a puzzle that I must solve by putting pieces together. The last question was about designing a system where they wanted me to started from the beginning of the development process with context diagrams, design diagrams, and class diagrams and explained to them how do I come up with that logic before any coding. They challenged my design and asked me about tradeoff analysis. As I explained to them how my design could work but they keep interrupted and asked me a lot of question about “What if …” I knew what they wanted were several alternative solutions rather than just a single solution. I explained to them how I came up with this design rather than others as I did considered them. I explained about design efficiency and performance as contrast with other alternatives. They seemed pleased but no one said anything. Most of these problems were associated with data structures, sorting, searching, binary, and Bayesian logic. It lasted over two hours then they asked me if I wanted anything before they left the room. I had about fifteen minutes break before the next interview but my mind was busy as I kept asking myself on how I did in the first interview.

The second interview was conducted by two managers, a Chinese and an American. They were very kind and asked me if I wanted to use English or Chinese. I answered that since I attended CMU in the U.S. I would use English instead. This seemed to please both of them. Later I learned that the conversation was to test my communication skills as if I got hired, I would have to work in both China and the U.S. Unlike other interview where I had to discuss programming, this interview was mostly about my knowledge on software lifecycle, process, and methods. They wanted me to describe in details each phase of the software lifecycle, the entry and exit criteria. They also wanted me to compare and contrast between the Plan-driven and Agile approach. It seemed that they were interested in my thought process, my analytical and problem solving skills. They gave me several scenarios and asked me to solve. The first was fairly easy but after that they went deeper into more details, and more difficult problems. Occasionally they would give me some hints as they did not expect me to be perfect. Although they were very kind and patient, I felt very stressful about this type of scenario interview. I did not remember much because there were several but one scenario stuck in my mind. This was one of the case studies that Professor Vu always taught in his course: “How do you recognize a disaster project that was completely out of control and how do you fix it.” As I explained step by step to identify, analyzed, re-organize, and re-planning the project just like I learned at CMU, I could feel that they were surprised. They looked at each other and kept nodding their heads. I knew that I did well. When I finished, one manager told me: “It seemed that you do have experience in software project management. Tell me about your management experience.” I explained to them about the important of project management such as “Working with customers to get requirements, involving team members into estimating and commitments.” They seemed happy but did not say anything but I knew that I was heading in the right direction.

The third interview happened at lunch. Another senior manager took me to a nearby restaurant. We did not talk about design or code but the conversation was about my view on the future of the software industry. He asked me what I think about cloud computing and mobile apps as well as what areas that I was interested in. The topics then suddenly switched to unexpected areas as he went from one topic to another. He asked about globalization and the “Flat world” then switched to crowd-sourcing and entrepreneurship. I had to admit that if I did not follow Professor Vu blog at CMU, I could not answer most of these topics. Later I learned that Microsoft wanted their employees be knowledgeable about many things, not just technical or programming. Since I did answer most of the questions, he seemed very please and told me that many candidates did not do well in these topics. He commented: “It seemed that you do read a lot and know what is happening in the industry, and I am very please.”

The next interview went back to technical aspects. This time I had to write more code but they were more interested in my algorithms as they kept asking me if I could do better. I knew what they were looking for was optimization. Almost every algorithm I wrote must be optimized enough to handle sophisticated transactions. Later I learned that they did not expect that I only wrote code that works but wanted to push me to the point that I would gave-up, this gave them the exact capability of the applicants. I also had to say that people who interviewed me were technical managers, they knew what to ask and knew how to appreciate good code and well designed works. Most managers in my current company were not technical. They were what we called “Manager based on relationships” because they got their positions based on who they knew and family connection rather than their abilities and skills.

I had a mixed feeling when I walked out of the office. I did not know whether I did well or not. At least I did whatever I could. Two weeks later, I got a call from Microsoft and they offered me a position at the Microsoft Research Asia in Beijing. I will spend six months training at Microsoft in Redmond, Washington then start to work in Beijing. My job will require me to travel between both countries several times a year since I speak very good English as compare with other candidates. Later I found that I did so well so instead of the software developer position that they had in mind when I applied, their managers decided to gave me a team leader position to lead a small project.

At last my dream to work for Microsoft became a reality. I wrote this experience to share with you and hope that some of you will have an experience like mine.

Sources

  • Blogs of Prof. John Vu, Carnegie Mellon University