Monday, July 14, 2008

 

My interview with Microsoft

My first blunder: I am from NCState and I am living in North Carolina, Raleigh and my onsite interview was at Seattle. My reporting time was 9.00AM and it is 12.00 noon according to the Raleigh time as it is 3hrs ahead of west coast Seattle. So early morning 8.00AM(time at seattle) I booked a cab for 8.30AM to go to interview. By mistake I gave him 11.30 AM(Raleigh time) instead of Seattle time. When I came down from my restaurant room at 8.45AM there was no cab and I was little surprised and also shocked because I had only 15 mins to reach the interview. When I called the Yellow cab they said I gave the time as 11.30AM and then I realized I gave wrong time due to confusion and requested him to send a cab immediately. I also immediately called the recruiter and told him that I would be there within another 15 mins and also apologized for the delay.

Since I asked for cab immediately he said you have to wait at least 15-20 mins. So when the cab arrived it was 9:10AM. There was little traffic at this time on the roads as it is monday morning office hours. By the time I reached the campus it was 9.25 AM. But the cab wala got confused about where exactly the building is located since it was not according to the linear progression of the building numbers, so the building searching added 10 more minutes to the delay so finally when I was at the interview building it was 9:35 AM.

This definitely gives a very very bad impression about the candidate to the interviewer as I did not report on right time. Because reporting at the right time at the right place shows the seriousness of the candidate towards the interview. But still I mainited my coolness and explained what happenned and the interviewer said we usually give 15-20 mins off from the reporting time because we understand that candidates will be new to the campus and need some time to figure out where the building is. He showed me the way to rest room and gave to 10 mins to relax and then the receptionist verified my passport and other identities and now the real show starts......

Conclusion: So eventhough you do some stupid mistakes like what I did it is very important that you need to maintain your cool-ness. So as soon as the interview started I immediately forgot about my first blunder and was more focussed on the interview. I was thinking where can I make up for my mistake.

My first interview was with the recruiter. He started asking me questions like
Q1. Tell me about yourself?
Q2.Tell me about your background and skills?
Q3.Tell me about your work experience?
Q4.Why testing?
Q5.Tell me about what experience you have in testing?
Q6.Why Microsoft?
Q7.What is your salary expectation?
Q8.When are you expected to graduate?
A: I had well prepared for all these questions and answered ok.
Comments:Out of all my answers it seems he was more particular about my testing experience, background and my aptitute towards testing. Recruiter most of the time was jotting down different types of testing I am familiar with and all the keywords I would say related to testing. He was not really much bothered about my other answeres since it was anyway totally technical and that too my background was totally out-of-place and context:).
Suggestions:Since I was little tensed (and usually need some time to settle) , eventhough my answers were right to the point I did not put them in sequence while presenting my answers and was going back and forth. So the interviewer gave me a suggestion that,
S1."I would recommend you to present yourself in a methodical and step by step way rather than moving back and forth". He also said that they will usually observe whether candidate will incorporate the suggestion given by the previous interviewer in the next interview or not seriously.
S2.He also told me that MS usually expect candidates to continuously reflect about your performance as the interview process goes and improve yourself to perform better.
Conclusion:Finally he gave me print out of the interview schedule for the day and told me that you will be having 3 interviews for the day and you are free to go after 3 interviews and we will ask you more information if we need further.

My second interview was with my Manager.
He seems to be very cool guy.
I: Manager gave me more information about which team I would be working if I am hired and under whom I would be working and what would be my work and what is expected out of this role and what is the goal and motivation about the product they are planning to build upon. And told me finally that it is time for you to ask me more questions.
M: The motivation and goal behind their future product was one of the driving factors for me to apply for this position. So I presented him about my previous work experience and background and showed him how it exactly matches with the overall goal and the motivation about the product. The interviewer was quite impressed with my background and told me that you have exactly understood what is the problem.
I: Tell me about your testing experience.
M: Explained about different types of testing I have done as a part of my graduate and undergraduate project work.

Now comes the testing question: Given a GUI, consisting of three fields to input lenghts of a triangle, a button to invoke drawTriangle algorithm to render triangle to the user, how do you test this GUI.
M: First I gave about 15 test cases about checking whether can you form a valid triangle out of three values given as an input (please refer to Art of Software Testing for more details). (Interviewer seems to be quite impressed with my different test cases and the ease with which I presented them). Second I gave some test cases about NULL, incompatible data types given three input fields in the GUI and also test cases about drawing the triangle algorithm. Test cases related to placing the components in GUI at appropriate places etc....

Now comes the coding question: Write a function on the white board given its signature func(int a, int b, int c) return Points datastructure to invoke drawTriangle(Point p1, Pointp2, Point p3) . He allowed me to make reasonable assumption. So I assumed that one of the points of the triangle is always origin and filled two points and did not fill anything for the third point and used an array of points as the return value for the function. He asked me to how to explain other approaches for drawing a triangle given only its lengths. My another approach was assuming that the given three integers are distance of the points from the median of a trinagle and we can find the points from this assumption....finally he said I never expected any candidate till today to answer this question, because I know it is very difficult and only one candidate till today has answered this question and he said that you need to use one of the side as the radius and draw a circle and similarly for other edge and the intersecting points of these two circles seems to the candidate for the third point.

Observation: It seems he was more looking for my approach about how I return multiple values in a function. I used array to do this. It seems he was quite satisfied.

Comments: In the middle of this interview I became comfortable and was more serious, focussed, calm in answering his questions. I tried to me more methodical in explaining my answers inorder to incorporate previous interviewers suggestion.

Suggestions: No suggestions were given by this interviewer.

Now comes the third interview:

He seems to be very jovial guy. He pronounced my name(Chandramohan Boggaramgopinath) fluently as any other Indian would pronounce. I usually give complements to people who pronounce my name correctly and properly and till today I have found only two people on this land of America who pronounced my name flawlessly. Otherwise I would be usually tiered eveytime telling the spelling for my name, which is more horrible like C for cat, H for hat, A for apple....uffffffffff

Coding Question: Find the first non-repeated (unique) character in a given string. Code it on the board. Code it in any language of your choice. Discuss test cases.

M:
Step 1: I gave two ways of solving this problem
Step 2: I discussed about the time and space complexity for both the approaches. Choose the approach which had linear time and space complexity.
Step 3: Described on the board steps to solve this problem.
Step 4: Then translated it to C code using arrays as the datastructure (eventhough hashing was a better option interviewer told me to go with arrays).
Step 5: Identified test cases for this problem. Test cases such as null string, string having no repated characters at all or string with all repeated characters, string with a combination of this, incompatible datatypes as inputs etc.....

comments: He was pretty satisfied with my solution, approach and presentation and was more than happy

Suggestion: He said I would expect you to write comments while writing the code. Because writing comments is considered as very important in MS. I would look forward you to incorporate this in the next interviews.

TIME FOR LUNCH:) (but as expected it was a lunch interview)

When I entered the cafeteria I was very happy to see "Udupi" stall and immediately went and grabbed three idlies (oh god I found some indian vegetarian food:) ). It seems that interviewer also would usually have Indian vegetarian food. He grabbed some rice and now the lunch interview starts...

Q1. Why Microsoft?
M: Answered well
Q2. Why testing?
M: Answered well
Q3. If you are given a microsoft product (choose any) how do you test it?
M: This was a pretty long discussion identifying what are the different types of tests you would conduct on a product in general and in specific like unit tests, security, data integrity, performance, functionality, stress, load...etc...etc....(he seems to be very happy with my answer)
Q4. Wat did you like about Microsoft?

My three idlies were over by this time and we went back to the interview room.

Now comes the Behavioural Question:
Q1. Describe a situation about how did you handle conflicts in your team?
M: It was pretty long answer. I described one of the situation where we had conflicts in our team during my algorithms coursework and how did I handle the situation.

Q2. How do you handle the situation if your co-worker is not at all willing to come forward to complete a task which was assigened by your manager to both of you to complete it together.
M: This was a pretty long discussion about how do I handle him....(but I remained positive throughtout my approaches in handling the situation)

Comments:Key that I followed was to remain positive throughtout your approachs for handling the situation. Interviewers seemed to be very happy about it.

Now comes the fourth interview:

Interviewer seems to scare me with his question....I was laughing within looking at his was of asking questions (actually level of difficulty of question seems to be increasing slowly)....

Now time for behavioural questions and situational questions:

Q1. Assume that the car you are driving will represent the software industry. If you are the driver of this car where do you lead the software industry...where do you think it is going now.

Q2. What are the metrics to say that a product has been tested succesfully.

Q3. Suggest five improvements to be made for any microsoft product.
M: I made lot of complaints about several microsoft products. He seems to be laughing at my answers since he is also aware of some of these problems very much. I suggested improvements about one of my favourite Microsoft product i.e. "MS One Note".

Q4. How do you handle the situation, when nobody wants to fix a bug and you have very little time to release the product.

Q5. What are the possible reasons and situation that would make others to say "I am not going to fix this bug"

Q6. What do you like about Microsoft? Why Microsoft?
M: I emphasized the importance of innovation in the industry and how MS has been continuosly innovating to maitain its competativeness in the market

Q7. Why testing?
M: Emphasized the role of tester...testing process importance....and etc....

Now comes the coding question1: Write a function to find whether the given integer is a prime number or not. Code in any language. Explain the idea and come out with test cases.
M: I wrote the code and suggested some optimizations and improvements over my approach to use Euclids famous algorithm to find whether a number is prime or not (refer "How to solve it by Computer by Dromey"). Also identified test cases. (for answers refer to www.careercup.com)

Now comes the coding question: Write a function to find the nth node from the last node in a given linked list. Code in any language. Identify the test cases.
M: Explained two pointer method to solve the problem (refer to "Programming Interviews Exposed" for the detailed answer). Wrote the C code and discussed test cases.

Comments: I explained most of the questions confidently and was happy that I gave my best eventhough a sort of dissatisfied with algorithm and coding questions I was asked, since I was expecting definitely much tougher questions. I thought this is the end of the interview for the day but fourth interviewer told me to wait in the lobby and the next interviewer will come and will take another interview. I rested well in the lobby, because the next interviewer came after 40 mins. In between I called the recruiter to make sure do I have the next interview or not as it was not on schedule, he told me to wait for the next interview I was systematic in explaining my answers and wrote comments on the board at various stpes explaining the what different steps are doing.


Now comes the fifth interview:

The interviewer gave me a very good job description, including the goal, vision of the team and the product they are going to build, what kind of candidate they are looking for and what is expected out of this position....etc....(This actually took around 15 mins and I was just listening througout without utterring a single word in between).
M: I could not resist at the end of the discussion to discuss about my interest, background and experience in Knowledge Representation, Modelling and Service Oriented Computing, which was very much the motivation for their new product....to establish the interoperability among different products...

Comments: It seems the previous interviewers will communicate their comments to the next interviewer before the next interview.


Now comes the coding question: write a function to find the sum of integers from 1 to n given the integer n and type of summation as the input parameters. Type of summations can be two...find the sum of even numbers or odd numbers between 1 and n.

M: Explained the algorithm, time and space complexity and wrote the function in C.

Now comes the testing question: Tell me about what are all the types of testing you are familiar with....
M: I explined him about black box testing, white box testing, unit testing and may higher-order testing and what types of tests are applicable in the current situation. Discussed about what are the adv/disadv of types of testing. White box testing in more detail about conditional coverage, decision coverage, branching coverage etc... Identified various test cases for the above function. I also explained about functionality testing, boundary-value testing and also cause-effect graphing, equivalence partitioning of test cases as applicable for the current situations.....

I: Now what are the modifications do you think needs to be made for the above functions from the perspective testing to make it more reliable and robust.....
M: I explained what code will I insert in different parts of the code....and what modifications to the code needs to be done...

I: What kind of testing experience you have before:
M: I explained about different types of tests I have done in my graduate and undergraduate proejcts.

Comments: He seems to be pretty satisfied with my approach to problem solving and coding style and conceptual knowledge and aptitude about testing. It seems they wont use cause-effect graphing (refer to Art of Software Testing) frequently.... hence asked me to explain with examples.


Now comes the final and sixth interview:
Now comes the behavioural, situation, resume based questions:
Here the interviewer seems to ask me very open ended and vague questions and see how do I handle these situations.

Q1: Why software testing?
Q2: What is your view of Quality of product?
Q3: Which is the best product according to you?
M: I told him Linux is the best operating system I have ever seen.....then realized I am getting interviewd by MS....so immediately said better to Linux is MySQL, which I am currently working on to take a neutral position better than take far position towards MS:).
Q4: How do you think quality can be achieved and what are the things needs to be done according to you?
M: I explained how we need to incorporate previous testing experiences....coding standards...etc...to achieve quality...
Q5: What are your strengths and weaknesses?
Q6: What kind of work you enjoy and what you do not enjoy the most and what do you like the least?
Q7: Why Microsoft?
Q8: Gave a very vague situation where you are given a client and server which will communicate with a protocol P and have error log databases....apply Scalability testing to this situation....Identify the test cases, tools, things that need to be tested to make sure scalability test has been achieved.


Now comes the coding question: Given a complete binary tree write a function to create a linked list of all the nodes nodes at a level and repeat it for all the levels and display it.
M: Wrote the code in C and explained time, space complexity and logic behind my approach.

Now comes resume based question: Asked me to explain the design of one of my previous projects and asked me to test my design now....identify the test cases to test your previous proejct....
Asked me more questions about my several other graduate proejcts....explain what is the motivation, design and stuff....

Now comes background question: What kind of modelling experience you have and how do you think you can contribute and what can you contribute for the product we are looking forward to develop.
M: This is the most enjoyable part of my discussion and explained about what are all the different knowledge representation techniques that I have learnt and how it can be applied for the product they are building...how my background matches with the vision of the team (Dynamic System Initiative also called Autonomic Computing) as explained in the white paper by the team(refer to Dynamic System Initiative website of Microsoft for the white paper).




Comments: The final interview was very good...eventhough the interviewer asked me some tough and open ended questions....but I enjoyed it most and he recognized my passion towards my work and my interest in the work they are doing.....He finally said "I really enjoyed the intellectual discussion" with you today. He seems to be pretty satisfied with my answers and approach...




BTW I was interviewed for SDET(Software Development Engineer in Test) position.

Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?