This was the first round of on-campus interviews. I was selected as one of the 12 interviewees who got the opportunity. The recruiter came from HQ in Seattle and joked that he still felt the jet lag. The recruiter was a serious guy but very professional in recruiting. I liked the way he went straight to the point and asked me about my background and the languages I am comfortable with – C++ and Java.
The first technical question was about the similarity and difference between C++ and Java. Then he asked me to calculate the factorial of an array of integers. I think I didn't do that badly on this one, because everyone knows how to calculate the factorial of an integer.
After finishing with the code, he wanted me to tell him the pros and cons of choosing the recursion algorithm. I talked about the efficiency of writing and understanding in the format of recursion, and the con being algorithm complexity.
He then asked me how to improve the algorithm. I did not come up with a good alternative algorithm, so I told him I could implement the recursion in a distributed fashion. The pro is scalability, and the con is the extra cost on machines.
Lastly, he asked me to say something about testing – how to possibly test the class I had just written. I think I did well in this one. You just need to explain how you generate the input and how to compare the experimental output to the known output.
Calculate the factorial of an array of integers.
How to improve the factorial algorithm?
The following metrics were computed from 634 interview experiences for the Microsoft Software Development Engineer role in United States.
Microsoft's interview process for their Software Development Engineer roles in the United States is very selective, failing most engineers who go through it.
Candidates reported having very good feelings for Microsoft's Software Development Engineer interview process in United States.