Background Info: B.S. in Software Engineering 2 YOE (1 year co-op, 1 year post grad) Date: April-June
Application: I really wanted to work at either Google or Microsoft and so I had alerts on from both of their job boards for positions I thought I would have a chance at getting an interview for. Sometime in April I got an alert for a position in Redmond for Microsoft and so I sent in a cold application to the position shortly after it was posted on their job board. I've found success getting interviews at both Microsoft and Google even if you don't have any references or a recuiter by just turning on alerts and being early to submit an application as soon as it hits the companies job board.
A few days later I recieved an automated email from Microsoft asking me to take an online assessment via a Codility link. At this stage I did not have any recuiter to contact to ask questions or anything so I just took it.
Online Assessment: The online assessment consisted of 2 questions with a one hour time limit to complete them both. The first question was so easy it's not even worth talking about, it was easier than a easy.
The second problem was a slightly modified version of this problem: Cinema Seat Allocation and I managed to solve it as well as describe in a comment the trade-offs between a second approach that would allow for constant space but would require sorting and thus O(nlogn) time instead of O(N).
It took a while for them to respond and I actually figured that I just got ghosted but about 3 weeks later I got a response from a recuiter (which btw was the first time throught this process that I spoke with an actual person) who said I did well and wanted to move me to the (virtual) onsite interview phase. I'm not sure why, but I didn't have a phone interview phase.
(Virtual) Onsite interview: The onsite phase consisted of 4 one hour interviews in total. Each interviewer was honestly a pleasure to interview with. They were very engaged in the interviews, they actually read my resume and asked me questions about it instead of just going in blind, they were super professional, etc. Each interview started with some behavioral questions followed by either an DSA question or a System Design question and ended off with me asking them questions.
Onsite interview 1: The first interview was a DSA interview and the question was a optimal task scheduler type question. I couldn't find any too similar on but it probably is on here somewhere. I solved it with bfs and then he asked a few follow ups which weren't too difficult either. Overall this round was probably my best of the four.
Onsite interview 2: The second interview was the dreaded system design. Fortunately, the system they wanted me to make was a 2fa service, which actually ended up being not that bad overall. My tip for system design questions is to pretty much just ask every possible question that enters your brain for the full time period that you have. Even if you have no idea how to actually design the system you might be able to ask a question that causes them to answer in a way that leads to you figuring something out. Regardless system design is definitely my weak point right now so this probably was my weakest round, but still it didn't go that bad.
Onsite interview 3: This interview question was pretty much this question verbatim: Candy I had actually done this question like a year ago as it is part of the Microsoft Onsite Interview Question Sets, but I forgot what the solution that I came up with was lol. I actually ended up not doing as well as I could have because I spent the first couple of minutes trying to recall the solution that I had done in the past instead of just trusting in myself that I could work through the problem again. After I abandoned trying to remember what I did in the past I started doing much better and was able to come up with a solution the interviewer was happy with.
Onsite interview 4: The last interview I had was finding the median of a sequence of unsorted numbers that is so long that you cannot fit the entire sequence in memory all at the same time. The problem was actually pretty interesting and required using segmented buckets and multiple passes through the input stream to determine the median. This was probably my favorite one overall but I definitely needed a few hints to get through it.
About a week after the onsite interview ended I recieved an email from a member of their global talent aquistion who wanted me to talk to a few members of their Azure search team. We set up the meeting, they described the role, and I talked about my experience. After that meeting was over, I was contacted by them again and they told me they would like to move forward with an offer.
Conclusion: I've been grinding on and off since . At the time I was still in college and the first time I got an interview for Google I didn't even really know what DSA was. But after a lot of applications, rejections, and hard work, I finally landed my dream job and am so happy that I stuck with it and saw it to the end.
I have some advice, which is that it's not all about grinding/problem solving. Yes I am forever thankful to for providing an excellent service which accelerated my technical abilities. But you have to have the people skills to match. Make sure you are practicing your ability to represent yourself through behavioral questions to the best of your ability. Make sure you're building rapport with the interviewer. Make sure you are able to explain your solution to the problem as your doing it. Grab a rubber duck and explain to it why your time complexity is optimal for the problem or the trade-offs that another solution can bring to the table. Don't just walk in there and try to recall memorized algorithms and do it all by yourself even if you can. Engage with the interviewer and make them feel like they're a part of the process too.
And finally, don't give up. I interviewed with Google 3 times, and this was my second time interviewing with Microsoft. If you know that this is what you want to do, then keep going. It definitely can be hard and grueling and kind of frustrating sometimes. But that just makes actually achieving it that much better in the end.
Thanks of reading and best of luck to everyone.