YoE: 1
Position: Software Engineer (Entry Level) at Rubrik
Location: Palo Alto, CA
Date: August-September 2021
A Rubrik recruiter reached out to me in February and I asked for a few months to prepare as I'd just begun my interview prep. The interviewer said that wouldn't be a problem and I reached out again in July. We scheduled the first interview in August.
The phone interviewer dove right into the problem and asked Design Circular Queue. I wasn't familiar with the problem but I was able to get through the initial solution and had time to discuss one follow-up. I asked the interviewer a couple of questions and that concluded the interview.
Again, the interview began right away without any formalities. This question was Task Scheduler which I had seen before so it was relatively simple to recall my solution. We discussed the tradeoffs and the runtime complexity and I had time to ask the interviewer some questions.
Rubrik is somewhat unique in that they emphasize system coding as part of their interviews. System coding covers concepts such as locks, semaphores, threads/thread pools, processes, etc. I was familiar with these concepts from taking an OS course several years ago but I didn't really encounter these in my day-to-day work. I did my best to study up on these as well as the multiprocessing and threading modules in Python.
I had to implement thread-safe stack using a linkedlist. Push and pop should be O(1). This problem is pretty similar to Design Bounded Blocking Queue. Interviewer asked some additional questions prying into my knowledge of concurrency primitives.
I can't remember the exact wording of this question, but it was relatively similar to this question. You're given an API that returns a task's dependencies and another that runs a given task. Initially, you'll have a list of tasks with no dependencies, and you gradually can complete more and more tasks. You need to implement a way to execute these tasks concurrently. And discuss the tradeoffs, race conditions, deadlock, etc.
This was my worst interview and what ultimately bombed me. In addition to being a difficult question, the interviewer was difficult to understand and I had to ask for clarification or repeated instructions several times.
This question was Next Permutation. I definitely wouldn't have been able to solve it if I hadn't seen it before.
Standard behavioral interview. If you've prepared Amazon's 14 LPs this will be simple. Just be prepared to talk about your previous work and why you think you'd be a good fit for Rubrik.
The recruiter noted that while I was close, I was ultimately rejected due to my poor performance on the second systems coding interview. But she encouraged me to study and reach out to her so I could try again at a later date.
I would suggest really diving deep into concurrency concepts prior to the interview. This should be simple if you use these in your work or have recently taken an OS course, but unfortunately this wasn't the case for me.
This was a somewhat grueling process and longer than other companies I've interviewed with, but it prepared me well for my other onsites. Good luck to everyone applying in the future.