How did I get an offer from Microsoft

What is this article about

This is a continuation of my adventures in FAANG. The previous article was about my Amazon interview experience: https://habr.com/en/post/646319/.

Here I will also share the whole process: how I got to the interview, all the stages, interview questions, how I prepared, some details of the offer, and the general impression of the interview. There will also be all sorts of comparisons of the interview experience at Microsoft and at Amazon.

By the way, all interviews are also now taking place online, and there are no on-site interviews.

Offer on Linkedin

November 4 – I received such a message in Linkedin. At that point, I was actively preparing for the last round of interviews on Amazon, and of course I agreed, while still “warm” and prepared.

This message was followed by a call with a recruiter, where they told me general information, clarified that it would be an interview for the company itself (not for a project) at many locations (with a choice), and briefly described the interview process. Remember for now “company interview” and “multiple locations”.

The first stage – again tasks

Then, after some time – I received an invitation to Codility, it’s something like Litkoda, with 3 tasks that had to be solved in time. Unlike Microsoft, they didn’t have to explain their decisions.

All of them were of easy and medium level.

First:

Second:

Third:

To be honest, I don’t remember how I solved them, but I managed to solve everything.

Some time later, I was immediately invited to the final round, which consisted of 4 interviews.

Second stage – interview loop

As I said, at this stage – there were 4 interviews. All interview sessions were consecutive, 45 minutes each + 15 minutes of rest. The whole process took 4 hours.

First Interview (OOP)

It was necessary to design a system that would be able to switch between elements in some client. I have never had such tasks, and I did not prepare for them, so this happened. My solution was the following:

  1. I made an IItem abstraction that could have next, inner, side elements that it held a link to.

  2. There was an enam of actions that came from an abstract input.

The solution is this – we got the command from the enamka through the factor, executed it (transition to some element) and networked it in our Navigator class. In the end, we still needed to add the return of this element from the main Navigator method so that the external application knows what the navigator returned and what to draw as the new selected element.

During the interview, I was led to more correct thoughts, for example, to use a command pattern instead of a strategy, etc. The interviewer was in a good mood and I liked it.

By the way, in this interview there were no behavioral questions at all.

Second interview

Even now I don’t really understand what the second interview was about, to be honest. At one point, I wrote what they said and explained what was wrong with that code. Then I explained how I would test it.

Then, there were questions on SOLID, by type: there is an interface and there are 10 methods:
IInt {

M1,

M2,

M10

}

It is implemented by two classes

Class A : IInt {

M1{<behavior>} ,

M2{<behavior>} ,

M10() {<behavior>}

}

Class A : IInt {M1{<behavior>} ,

M2{<behavior>} ,

M9() {}

M10 () {}

}

The second class does not need the ninth and tenth methods, what is wrong here and how to fix it?

For behavioral questions, they asked in some detail about the experience, and the standard question is “why do I want to join Microsoft”.

I also liked the interview, there was no pressure, and we finished 15 minutes ahead of schedule, and had the opportunity to chat for another half an hour.

Third interview (algorithms)

In fact, I was lucky here, they gave me the same problem from Litkod, which I had already solved for a long time, even the input was not changed.

For interactive, I will leave you the opportunity to find this problem and leave a link in the comments. If laziness – ask in any social. net, I’ll send it to you.

This is an anagram task, it was necessary to group the anagrams. Anagrams are words that will be equal when sorted.

And yes – I did it dishonestly, after a negative experience on algorithms in Amazon, I did not say that I had already seen it. But to be honest, I did not remember the decision. I started to write, and realized that it would not work. I had to redo it for myself.

I solved it in two ways, through O(n * m logm) and O(n * m).

ATTENTION THE FOLLOWING TWO SCREEN SPOILER SOLUTIONS, SKIPNITE IF YOU WANT TO DECIDE YOURSELF AFTER!!!

And a couple of behavioral questions:

  1. The hardest task I’ve ever done

  2. How did you solve the situation when opinions in the team differ on something?

  3. And I didn’t tell this, because I didn’t understand what exactly I had to say, literally: “situation when someone was mistreated at the workplace”

I liked the interview, but there were some strange behavioral questions. The interviewer, as if he was afraid of me, was nervous, and everything was somehow not very natural in that regard, but he was in a good mood at the same time.

Fourth interview (systems design)

This time, we have some kind of system that sends events about files (created, updated, deleted) in these events (I already clarified this at the end) there is immediately the content of the update, or crite (obviously, you don’t need to delete) .

Here are the requirements that I wrote out for myself when I asked questions

In fact, strong consistency – as it became clear later – is not necessary, I misunderstood the interviewer.

Solution:

Standard master replication + partition with consistent hashing (there could be spikes) + cache (to keep the last event ID for a particular file). We assumed that there would be an ID event and it would work like a logical clock, that is, by comparing the two, it is clear which one was before. And we just discard all previous event ids.

On behavioral issues, it was necessary to tell about the task and the scope of work that I am proud of.

results

A week and a half later, they sent me an offer

How did I prepare

All training can be divided into two streams – architecture / systems design and tasks. I spent almost no time on behavioral questions.

puzzles

This is the most difficult thing for me. And the point here is that I define mind as the relative time of solving problems that are unique to me. That is, if there are 4 people, they all see the problem for the first time and have not solved similar ones – then the smarter one is the one who solves it faster (with a bunch of amendments of course). This is what separates smart people from not-so-smart people (IMHO, but based a bit on the books).

And I just fell into the category of not very smart, far from always solutions come to mind in principle, I’m not talking about coming first, so the only way out for me is to memorize the patterns of tasks and solutions to them.

And for this, even from the beginning of preparation for Amazon, I sat down for puzzles on Litkoda.

In the process of solving, for 3-4 tasks, at least one came across, the solution of which simply did not occur to me, even if I hit the wall.

And at this moment, two desires are fighting in my head:

  1. Keep thinking, and in case of a solution – get a lot of dopamine / endorphin + self-esteem and, as a result, great pleasure (they say, it’s me and I decided it, I’m done).

  2. Look at the solution, get almost no pleasure, very often even disappointment and anger from the fact that the solution is not native and it would be impossible to think of it. But still try to catch the pattern and learn something from this task.

A year and a half ago, I also tried to solve problems on Litcode, and with the first approach, I solved 80 problems somewhere in six months. To compare with the second approach, I solved almost 150 problems in 3-4 months. And it feels like the second approach gave much more understanding and confidence. But you need to analyze the solution of the problem well, then solve it in as many different ways as possible, feel this problem, live it.

Will this guarantee that you can solve the next similar problem? No, just don’t hope it won’t. But after 2-4 blunts on a similar task and looking at similar solutions, we can already talk about some kind of confidence.

Also a very important point is to find a normal explanation of the solution. I really like how a person on YouTube with the nickname NeetCode does it.

If the analysis is bad, then it may end in a bombing with a notebook thrown against the wall.

What tasks did I solve with Litkoda?

I took the top 100 likes, and solved all the medium and easy, and at times I took something random for myself. Then, I just continued to take from the tops those that have more likes than dislikes.

In preparation, I made mini milestones and notes on my insta: https://www.instagram.com/stories/highlights/17939340292663489/

As you can see, I solved 147 problems before the interview.

I also read Korman a bit on algorithms from time to time, mostly on graphs.

Architecture / systems design

I read the book “System Design Interview”

In fact, I didn’t like it, I would use it to understand what needs to be taught, but I would learn it from other resources.

For example, I had a hard time explaining Consistent Hashing. Googling, I came to a satisfactory understanding in 5 minutes, from the book I tried to understand it for 20 minutes and did not understand. Maybe it’s just me, no question.

But as a guide, it gives answers to questions: how to ask in an interview, how to speak in an interview, what architectural techniques to use, etc.

I also completely re-read Martin Kleppmann. In principle, I re-read it before all my interviews, because this book is top.

In parallel with this, I also watched Kleppmann’s lectures, and several articles about architectural things like: logical time, CAP, consistency guarantees, high availability techniques, etc.

conclusions

I much more liked the interview experience on Microsoft than on Amazon.

There weren’t 50 behavioral questions, the interviewers were a lot friendlier, there were moments when they were very good at pointing you in the right direction. While on Amazon, it felt like the dude was doing a task while answering my questions.

The only point, although the feedback was positive, was not detailed like on Amazon. There he was also not detailed, but they told me that it was okay, that it was bad. Also, I was a little tense that they did not give me the opportunity to choose a project and a country for the relock, having promised such an opportunity before that.

Who is too lazy to read the article – I’m all the same already recorded in my video.

If you have any questions – please ask in the comments, or somewhere in my social networks. networks (insta, telega, facebook, youtube). Thank you for your attention!

Similar Posts

Leave a Reply