Position: Senior software engineer – Office 365 team
I initially applied for senior software engineer position in Office 365 Team in Dublin, Ireland in Aug 2018. After a month I received a phone call from the recruiter for a quick chat about my current situation. He asked me the following questions:
1) Why have you applied for this position?
2) What you do in your current role?
3) Where do you see yourself in the next 5-8 years time?
The recruiter was satisfied and he scheduled a technical interview with a software engineer over Skype.
Skype Interview: Technical
It was divided in 2 parts, first he asked me some competency based questions and some projects from my CV. He also asked why I want to work for Microsoft? What is the most challenging project I have worked on and why? – this was only 15 mints then he gave me a coding interview question give below:
Given an array: [5, 10, 4, 0, 2, 4, 6, 31, 6, 6, 8, 5, 1, 2, 3] find the number that is sum of its left and right subarrays. In this example its 31 because numbers on its left adds up to 31 so are those on its right.
Write a function that will return that number if exists. Return -1 if doesn’t.
Tips: He was looking for time and space complexity and the approach towards the solution. You have to ask questions like is the input array can be null or empty? Should we throw exception in this case? How big is the input array? Does it contain negative numbers? Or decimal numbers? Things like that. This shows that before cracking on writing the code, you think and plan how you gonna approach it. Then think about how you gonna solve it and what time and space complexity will be. Once this discussion is completed ask if its okay now to start writing the code.
So I stated writing code and I also kept explaining what I was doing just to let him know about my thoughts. Once completed writing the function, I walked through the example input array which seemed to be working. Then he changed an input array with zeros and ones and negative numbers to which my code wasn’t able to find the right number.
I thought I failed at this stage. Next, he asked if I have any questions so I asked him about their software development process, build and release process and some other technical / project life cycle type questions. Its very imported to ask question when you are given an opportunity.
After a few weeks I received call from the recruiter that they would like me to come for face to face interview at Microsoft Dublin campus.
On site interview with Office 365 team: Technical
The interview was booked for whole day. It was divided into 4 stages. Each stage lasts for aprox 1 hour and there was a lunch break with the hiring manager as well (which is the part of interview so be careful and don’t get too comfortable).
Given array values = [1, 3, 4, 8] and indices [0, 2]. Write a function that will return an array containing the product of all the values except those in indices. So in this example, the result of that function would contain the products of 3, 4, 8 and 1, 3, 8.
Of course, ask questions to clarify any confusions and talk through the solution. Explain how you gonna approach it and time and space complexity.
Find the first non-recurring character in a string. Input “Teeter” output “r”. Again, ask questions and talk through your idea of how you gonna implement it before writing the code.
Reverse the words in a string while keeping the special characters in their place. Input = “Hay! Stop writing code in Java, use C#.” output = “C#! use Java in code writing, Stop Hay”. Notice that ! and, are unchanged.
Stage 4 – This one was with the hiring manager:
Find the missing number from a sorted array. Input = [0, 1, 2, 3, 4, 6, 7, 8, 9] output = 5. I used binary search.
They all seemed to be satisfied and I thought I could receive offer from this team. After 4 weeks the recruiter called and broke the news that unfortunately, the offer has gone to another candidate who was a better fit for the role. However, my feedback was positive and I was recommended to apply for another position in Microsoft.
Position: Senior software engineer – SharePoint team
After couple of months, I applied for the senior software engineer role for SharePoint team in Microsoft Dublin campus. Received a phone call from another recruiter, she had my feedback form previous interview which she said was positive. She scheduled a technical interview over skype with a software development manager in Redmond Seattle.
He asked me a few technical questions regarding C# and CLR. Some ASP.net and .net core questions. He then moved towards a few competency based questions. After that he gave me coding question. He asked me to design a Queue class by using array data structure only. Class should have the following behaviour:
Enqueue(int), Dequeue(), Peek() and Count().
I asked him a few questions to clarify few assumptions and asked his permission if its okay to start writing code. I kept talking while writing the code, we discussed a few things. He liked my solution and asked me if I have any questions to ask. As I said earlier its very important for us to ask questions which I did. At the end, I requested for any negative feedback as it will help me to prepare myself better for next interview.
After couple of days retrieved a phone call from the recruiter, she said since they already have my positive feedback from the office 365 interview so they have decided to skip another technical interview over Skye and invited for face to face full day interview at Microsoft
On site interview with SharePoint service team:
First Interview with 3 software engineers:
1. What you do in your current role? / Tell me about yourself.
2. What things do you look for when doing a code review?
3. How do you measure performance of an application?
4. How do you go about implementing new technology in projects?
5. How do you mentor your teammates?
6. What are new features in C# 8.0?
7. What if your teammate finds a new tech that perfectly suits the need, what do you do?
8. Apart from technical mentoring, do you mentor on soft skills?
9. How have you influenced your teammate?
10. White board question:
a. A lift that goes to each floor once (0-7 floors only), given input [0, 7, 5, 3, 4, 1] [[5, 7], [6, 3], [4, 1], [7, 2]]
b. Discuss test cases
c. Note: I don’t understand the point of this whiteboard question. I was an easy one and the interviewer looks unsure what he wanted to find out about my problem solving skills. The 2 dimensional array was flawed so I fixed that and then discussed how I would solve it (algorithm). Eventually I was asked to write code for that algorithm which I did.
d. How would you design an app that calls 3 micro services to complete an online order?
Second Interview with the hiring manager (team manager)
1. Define SOLID
2. What is diff between monitoring and telemetry?
a. Drilled more in telemetry – how can it help etc..
3. There was a 3rd tech question that I have forgotten.
4. Tell me about the most challenging project you have worked on or led?
a. What ambiguities were there and how did you solve them etc.
5. What do you think a team leader should be?
6. How have you taken a negative feedback from your colleague or a teammate?
Third Interview with the hiring manager’s boss (in Redmond)
1. Have you been told about our team structure?
2. Most challenging project
3. How do you keep on top of new tech and how do you go about learning them?
4. How do you measure success of a project?
After couple of days revived phone call from the recruiter talking me through the offer process. This was the happiest day of my life!