2018 pass out from Mathematics Department.
Experience: Microsoft 2018–2020.
Applied through college’s senior referral in Oct 2020.
Got my offer at the around 1st week of Dec’2020.
(The whole process took around 1 month)
Round 1 : System Coding
Round 2 : DS Algo
Round 1 and 2 were the screening rounds.
Round 3 : System Coding
Round 4 : System Design
Round 5,6 : Discussion with Engineering Director and Team Manager #Non-Technical
I am not going to share questions about asked in any of the interviews due to NDA. That won’t be much helpful as questions don’t repeat that often. Rather, I will try to tell what to expect and how to prepare for them. Tier I or II or III college won’t matter, interviews(specially system coding) would.
All the rounds were scheduled for 45 minutes but they can stretch (specially the system coding and design).
Rubrik doesn’t stress on DS-algo like FAANG out there. I only had 1 round of DS-Algo but expect 2 rounds. I was told initially that I would have 2. It might have been that they were convinced with my DS Algo skills in 1 round :D or they wanted to deep dive more into system coding with me.
Don’t expect the FB and Google scenario here (where you might have 3–4 rounds of DS algo at SDE1 or SDE2 role).
Expect something in the Leetcode Medium range (harder ones in Medium to be precise). No need to sweep all Leetcode problems. You would be expected to implement the code. Practise the Microsoft, Google questions on Leetcode to prepare for this.
System Coding (Multithreading and Concurreny)
Let me clear this upfront. You don’t need to know Operating System and/or Computer Architecture for this. Knowing it might helps but not needed. Infact, I am from Maths dept. and have no clue about any of those topics.
Back to the topic. This is the real test in the interviews. You need to have very strong fundamentals in concurrency to crack the rounds here. You need to be able to implement any concurrent handling or logic using fundamental datatypes (like mutex, locks etc).
Knowing complex structures like BlockingQueue, ConcurrentHashMap etc and how to declare/use them is not needed. How they are implemented is important to know. It is pretty standard that these concurrent structures are not allowed to be used.
In both of my rounds, I had to implement libraries which would handle concurrent tasks. Read about concurrency interview preparations and practise the set of problems on Leetcode. Just make sure that you know how to implement threads etc in your language (Leetcode does that for you). Your end to end implementation doesn’t need to run but at the same time plain pseudocode also won’t work.
I am only proficient in C++ and that didn’t help with the preparation as there are limited materials available for Cpp concurreny compared to languages like Java.
To prepare and understand, I loved this guy’s tutorial series. Look for other sources as well.
I felt uncomfortable going in a design round. I was all prepared for designing facebook, whatsapp, stockbroker etc and handling a google level scale. Instead, I was asked to design a software-defined networking component as I had worked as SDE in Networking Team in my earlier company. It was more of a low level design and initially, I was taken by surprise but the same design practises (understand the goal, establish the scope, discuss tradeoffs etc) worked in this case as well.
At this level, they would probably not expect much design skills, rather they just want to judge our thought process and basic approach.
Round with Managers
Most of it was the standard employee-leadership discussion.
In Round 6, there were some technical questions thrown to me by my manager on some problems they were working on. It was more like a system design discussion. I wouldn’t count this a technical round but more of an interaction as at this point, I was already confirmed of the offer from the earlier interactions.
This was just a compensation negotiation and nothing else. Only one rule, avoid obvious red flags.
Best of Luck!