rubrik logo

Rubrik Interviews

8 experiences387 reads21 questions0% success rate
Rubrik interview | Online
rubrik logo
Rubrik
Ongoing
October 31, 2025101 reads

Summary

Designed two queues using an array of fixed size N to efficiently utilize empty spaces after elements are popped.

Full Experience

Got this question in Rubrik interview.

Design two queues using an array of fixed size N.

The interviewer said you can use an external data structure but the elements must be in the queue.

The problem here is that once the elements in the queue gets popped, it creates empty space which must be then utilized.

How can we solve this problem?

Few approaches I have in my mind:

Create K blocks. Each blocks store N/K values.

Each block store indices from i x N/K to (i+1) x (N/K)

Doubly Linkedlist points to the blocks

DLL tail -> always empty blocks for fast query of empty blocks

class LinkedListNode:

self.start_index

self.end_index

self.next_node = NULL

Linkedlist -> Keep track of blocks

head1 -> start for queue1

head2 -> start for queue2

tail -> to get empty block

While popping if the block gets empty it is moved to tail and the head is moved to next node using pointer

Is this alright?

Interview Questions (1)

Q1
Design Two Queues Using Fixed Size Array
Data Structures & Algorithms

Design two queues using an array of fixed size N.

The interviewer said you can use an external data structure but the elements must be in the queue.

The problem here is that once the elements in the queue gets popped, it creates empty space which must be then utilized.

Rubrik New Grad 2025
rubrik logo
Rubrik
New GradRejected
September 27, 202588 reads

Summary

I interviewed with Rubrik for a New Grad 2025 role. After clearing an Online Assessment, I proceeded to two interview rounds focusing on system design and multithreading debugging, which ultimately resulted in a rejection.

Full Experience

Hello Everyone!! I wanted to share my interview experience with Rubrik for the 2025 Grad role. A recruiter reached out to me directly for this position. The overall process took place during the 2nd and 3rd week of September. First, I completed an Online Assessment which lasted 1 hour. It consisted of 1 DSA question (based on DP on strings, though I can’t share the exact problem) and 10 MCQs on Multithreading and Concurrency. I cleared the OA and got a call for interviews. The recruiter scheduled 2 interviews on consecutive days.

Round 1 had two interviewers present. The main question was to Design and implement a Linux file system. It was quite an open-ended problem, so I spent a good amount of time asking clarifying questions. I managed to fully implement three parts and partially complete a fourth part. The last 10 minutes were dedicated to an open Q&A with the interviewers.

Round 2 was a debugging round, held the next day. The interviewer presented me with a multithreading/concurrency-based code and tasked me with finding and fixing all bugs, then providing a proper running code within 50 minutes. I successfully identified the main bug, which was a deadlock, and attempted to fix it. Unfortunately, after my fix, the code failed to compile. I spent a significant amount of time trying to resolve this compilation issue and, consequently, couldn't address the other bugs. At the end, the interviewer explicitly mentioned that they expected a fully working code solution.

Result: I was rejected after these two rounds. Despite the outcome, it was a great learning experience, and I genuinely enjoyed the process. I hope sharing this helps others preparing for similar interviews. Feel free to drop any questions in the comments, and I'll be happy to answer them. All the best! ✨

Interview Questions (2)

Q1
Design and Implement a Linux File System
System DesignHard

Design and implement a Linux file system. This was an open-ended problem where I had to ask a lot of clarifying questions. I managed to fully implement 3 parts and partially complete the 4th part during the interview.

Q2
Debug Multithreaded Code for Deadlock
Other

I was given a multithreading/concurrency-based code and asked to find and fix all bugs, then provide a proper running code within 50 minutes. I identified the main bug as a deadlock and attempted to fix it. Unfortunately, after my fix, the code failed to compile, and I couldn't resolve this or address other potential bugs.

Rubrik G5 | Interview Experience
rubrik logo
Rubrik
G5
May 30, 20257 reads

Summary

I shared my interview experience at Rubrik for a G5 role, which included system coding, debugging, and a hiring manager round. I successfully completed the coding challenges focusing on graph algorithms, concurrency, and low-level system design, along with a behavioral discussion.

Full Experience

Round 1 - System Coding Round

This was graph problem which could be solved using topological sort. Interviewer was more focused on code quality, since this was not a DSA round. More focused towards low level design aspects. In the end she asked me how can I make the code thread safe. I was able to code fully working solution, ran it on few test cases. Also was able to answer the concurrency related questions.

Round 2 - Debugging Round

This was a standard producer consumer problem. He gave me a cpp code where multiple threads (producer and consumer) are trying to access the critical section. Was able to find the bug after one hint.

Round 3 - System Coding Round

This was again LLD + Concurrency round. I had to design a logical memory unit. Cpu can request for a page with given pageId. If the page exists in the logical memory we return it. Otherwise we fetch it from the physical memory. Also, you have to maintain all the page entries in the logical memory unit. And user may request for most recent or k-recent entries of a particular page. Solved the problem using hashmap and linked list. Where key of the hashmap is pageId and the linked list will store all the entries of that page. Was able to code fully working solution and ran it over few test cases.

Similar to round 1 he tested my concurrency knowledge and asked how can I make this code thread safe.

Round 4 - HM Round

This was a standard HM round. Where in depth discussion about my current project and product's arhitecture happend for 40-45 minutes. He was asking lot of cross questions and making sure I have in depth knowledge about my service and it's architecture. Then, he asked few behavioural questions like why do you want to leave current org etc.

Interview Questions (4)

Q1
Graph Problem with Topological Sort and Thread Safety
Data Structures & Algorithms

I was given a graph problem that could be solved using topological sort. The interviewer focused on code quality and low-level design aspects. In the end, I was asked how to make the code thread safe.

Q2
Debugging Producer-Consumer Problem
System Design

This was a standard producer consumer problem. I was given a C++ code where multiple threads (producer and consumer) are trying to access the critical section, and I had to find the bug.

Q3
Design a Logical Memory Unit (LLD + Concurrency)
System Design

I had to design a logical memory unit. The CPU can request for a page with a given pageId. If the page exists in the logical memory, it is returned. Otherwise, it is fetched from the physical memory. I also had to maintain all the page entries in the logical memory unit, and the user might request for most recent or k-recent entries of a particular page. Similar to round 1, I was tested on my concurrency knowledge and asked how to make this code thread safe.

Q4
Behavioral and Project Deep Dive
Behavioral

This was a standard hiring manager round. There was an in-depth discussion about my current project and the product's architecture for 40-45 minutes. The interviewer asked many cross-questions, ensuring I had in-depth knowledge about my service and its architecture. Then, a few behavioral questions were asked, such as "why do you want to leave your current organization?"

G5 Interview Experience at Rubrik (2025)
rubrik logo
Rubrik
G51 years
May 24, 20257 reads

Summary

I recently attended G5 Interviews at Rubrik, which included an online coding test, two algorithmic coding rounds (one focused on concurrency), and a hiring manager discussion. I found the questions unique and successfully navigated the rounds.

Full Experience

I recently attended G5 Interviews at Rubrik. Hope it helps.

Experience: Over 1 year of experience at a well-known product-based MNC (not part of FANGG).

There were a total of 5 rounds:

  1. Online Coding Test
  2. Algo Coding
  3. System Coding 1
  4. System Coding 2
  5. Hiring Manager (HM)

Mode of Application: recruiter reached out on linkedin

Online Coding Test

Language used - C++

Online Coding test was pretty simple with 1 DSA qs (Easy-Medium BS) and some MCQ related to multithreading and OS

Algo Coding

Language used - C++

If you can solve LC-715, then you can solve that qs easily. I don't remember exact qs, but it was something to do with range modification and range updates. I solved it using Seg tree. There is no language restriction. Interviewer was fully supportive and cooperative.

System Coding 1

Language used - JAVA

This was the best interview round I have ever experienced so far. This round test your multithreading and concurrency area. They provided one coding platform link which has compatibility to run multithreaded code.

I cannot disclose exact Qs due to NDA, but if you know how bookMyShow ticket booking system works, you can arrive to this solution easily.

I took 10min extra for this round as I messed up my code somewhere and because of that, couple of threads were getting executed at a same time. Interviewer was co-operative and told me that a single line of your code change can fix your whole logic. I took 10min more and was able to debug code by myself. The interviewer seemed highly experienced in multithreading and was very particular about my choice of concurrency constructs such as CyclicBarrier, Semaphore, etc....

I got positive feedback from both the rounds and after 4-5 days HR schedule 2 more rounds. System Coding 2 and HM round.

System Coding 2

Language used - C++

This was pretty straight forward round for me. It was a medium to hard LC type problem (not available online). I solved it using multiset, basic interval merge logic combined with line sweep.

I don't remember exact problem but it was greedy problem and require some constructive logic building. Interviewer was pretty supportive. I solved the problem without any hints and my round was finished before 5min of scheduled time.

Hiring Manager (HM)

This was a deep down grill on work experience and also how we handle responsibility. There was also few discussions on projects, but mostly discussion was on experience as well as behavioral qs. This was a decent round.

The best part of whole interview process which I liked the most is - all qs are framed by rubrik internal team itself (this is what I feel). I have solve more than 3000+ qs on various platforms but haven't seen exact same qs (may be they do exist but I have not encountered them).

They not only test your coding ability but also test multithreading and concurrency area, and how well verse you are with handling exceptions.

Please comment if I have missed anything to add.

Cheers!!!

Interview Questions (3)

Q1
Range Module (LC-715)
Data Structures & AlgorithmsHard

The problem was related to range modification and range updates, similar to LeetCode 715, Range Module.

Q2
Design BookMyShow-like Ticket Booking System with Concurrency
System Design

The round tested multithreading and concurrency. The question was a system coding problem, similar to designing a ticket booking system like BookMyShow, focusing on handling concurrent operations.

Q3
Greedy Interval Problem with Line Sweep
Data Structures & AlgorithmsHard

This was a medium to hard LeetCode type problem, a greedy problem requiring constructive logic building. I solved it using multiset, basic interval merge logic combined with line sweep.

Preparation Tips

I have solved more than 3000+ questions on various platforms, but noted that Rubrik's questions seemed internally framed and unique, not directly encountered before.

SWE (L4) Interview Experience at Rubrik (2025)
rubrik logo
Rubrik
SWE (L4)Ongoing
May 10, 2025116 reads

Summary

I recently interviewed for a Software Engineer (L4) position at Rubrik, undergoing five rounds focusing on system coding, algorithms, system design, and a hiring manager discussion. The process heavily emphasized multithreading, concurrency, and OS fundamentals, and I am currently awaiting a response from the recruiter.

Full Experience

I recently attended five interview rounds for the SWE (L4) role at Rubrik, which focused significantly on multithreading, concurrency, and synchronization techniques, along with OS fundamentals. The structure was as follows:

  1. System Coding 1: This round delved into concurrency, multithreading, process management, memory management, and synchronization concepts. I was asked to design a job scheduler that efficiently runs jobs with dependencies, assuming a function to get available jobs based on finished ones.
  2. Algo Coding: This round featured a Medium to Hard LeetCode-style question. I received a stream of data and for each new item, I needed to return the minimum absolute difference between any two elements among the last K elements in the stream.
  3. System Coding 2: The problem here involved designing a system for a playground accessible by only one team at a time, with a maximum of 10 concurrent players. The challenge was to manage multiple players from different teams trying to access it simultaneously, while also preventing player starvation.
  4. System Design: I was tasked with designing a system similar to LinkedIn Connections that could efficiently answer queries about the degree of connection between two users (e.g., 1st-degree for direct connections, 2nd-degree for friends of friends) for up to 1 billion users.
  5. Hiring Manager and Technical Deep Dive: This final round was a deep dive into one of my past projects, where I discussed challenges faced and decisions made. It also included several behavioral questions.
Throughout these rounds, the focus was on challenging my fundamental understanding. Many questions weren't directly from LeetCode but required strong conceptual knowledge. Interviewers often emphasized that there wasn't a single 'right' answer, encouraging me to share my thought process and opinions.

Interview Questions (4)

Q1
Concurrent Job Scheduler with Dependencies
System Design

Design a job scheduler that runs all available jobs in an optimized manner, considering job dependencies. You can assume the existence of a function get_next_jobs(finished_jobs) that returns all jobs whose dependencies are fully satisfied based on the currently finished jobs. A job can only be executed after all of its parent (dependent) jobs are complete.

Q2
Minimum Absolute Difference in Last K Stream Elements
Data Structures & Algorithms

You will receive a stream of data. For each item, return the minimum absolute difference between any two elements among the last K elements in the stream.

Q3
Concurrent Playground Access Management
System Design

There is a playground that can be accessed by only one team at a time, with a maximum of 10 players allowed concurrently. Multiple players from different teams may attempt to access the playground simultaneously. How would you design the system to assign players to the playground while enforcing these constraints? (They will ask about different approaches you can take to avoid starvation of any player)

Q4
LinkedIn Connection Degree System Design
System Design

Design a system similar to LinkedIn Connections that can answer the query: "How many levels (or degrees) of connection exist between two users?" For example, direct connections are 1st-degree, friends of friends are 2nd-degree, and so on. The system should efficiently handle up to 1 billion users.

Preparation Tips

To prepare for these interviews, I concentrated on mastering fundamentals, particularly in multithreading, concurrency, and OS concepts like memory management and process synchronization. For the system coding rounds, which differed from typical FAANG interviews, I gathered recent interview questions from platforms like LeetCode and Reddit. My approach involved solving one question at a time, identifying all necessary underlying concepts, and then studying those concepts in depth. I found it beneficial to treat the interviews as discussions, focusing on sharing my opinions and reasoning rather than just finding a perfect solution.

Rubrik | G6 | Bangalore | 2025 | Reject
rubrik logo
Rubrik
G6Bangalore
April 26, 20253 reads

Summary

I interviewed for a G6 role at Rubrik in Bangalore. The interview process involved two technical questions, one on a custom multi-threaded job scheduler with dependencies and error handling, and another on parallel file copying. I was unfortunately rejected due to average feedback in round 2.

Full Experience

I underwent an interview process with Rubrik for a G6 position in Bangalore. The technical rounds presented challenging problems focusing on concurrent programming and custom system implementations. I ultimately received an average feedback in round 2, leading to my rejection.

Interview Questions (2)

Q1
Thread-Safe Job Scheduler with Dependencies and Error Handling
Data Structures & AlgorithmsHard

There are some tasks which depend on each other. Example: b depends on completion of a, c depends on completion of a and b. There is a function you are provided which you can use to get this information: getDependentTasks(a) -> returns b, getDependentTasks(a,b) -> returns c. Implement a job scheduler with multiple threads such that all parent tasks are completed before child task (i.e., a should complete before b, then b should complete, then c). Initial input to the function is blank which returns 'a' so this is the starting point. Each task has a function called doWork() which you need to run. Keep in mind that if any of the task throws an exception, you have to immediately stop execution of all tasks and return. You are not allowed to use in-built Java libraries. Create blocking queues of your own, thread pools, executors - everything has to be created on your own using locks.

Q2
Parallel File Copy using pread and pwrite
Data Structures & AlgorithmsMedium

You are given 2 functions: pread(buffer, number of characters to be read, file name) and pwrite(buffer, number of characters to write, file name). You have to use these functions to write code which will read from a file and write it to another file. How would you do this parallely using multiple threads.

Rubrik Interview Experience | Software Engineer | 2.5 yrs | Reject
rubrik logo
Rubrik
Software Engineer2.5 years
April 2, 20256 reads

Summary

I had an interview experience for a Software Engineer role at Rubrik, which included multiple coding, system design, and behavioral rounds, ultimately resulting in a rejection after the fourth round.

Full Experience

Round 1: System Coding https://leetcode.com/problems/snapshot-array/description/

Round 2: System Coding There are N worker nodes, and we need to write apis: runTask() -> Runs a particular task on a node AddTask(nodeid, taskid) -> Adds a task to a particular node nodeid rebalanceTask() -> Moves tasks from one node to another if some node has lots of cpu intensive tasks. printTask() -> Prints the list of tasks in queue at each node.

To Add a task to a queue we can maintain a per node task_queue.

I did rebalancing based on the number of tasks that are currently pending in each node's queue to maintain the invariant that each node has atmax (sum of all the pending tasks in each node's queue)/total_number_of_nodes number of tasks at a moment.

Round 3: DS & Algo You are given a stream of person's strength(integers) you need to find out rank of current person in the stream(moving from left to right). We can assume stream can be stored in RAM. Eg. stream: [5, 4, 6, 1] Output: [1, 2, 1, 4] At t=0 only 5 is there so its rank is 1 as it is the highest strength At t=1, [5,4] are there and rank of 4 is 2 as it is the second highest strength At t=2 [5,4,6] are there and rank of 6 is 1 as it is the highest strength

It can be solved using Binary search trees. We need to insert strength at each point and find all the elements greater than the current element from the tree. Storing number of elements to the right of each BST node will help reduce the timecomplexity as we don't have to traverse to the right of the node. Interviewer wanted to implement Binary search trees instead of using the stl library set function.

Round 4: System Design HLD & LLD mix

Design a scalable and fault-tolerant data collection system that can collect logs and data from various sources (eg, application servers, tailing a file etc.) and route them to different destinations (e.g., Elasticsearch, Kafka, S3) for further processing and analysis.

The design round was very vague and interviewer didn't seem interested in contributing to discussion and providing any comments on the design. Didn't go well for me.

Round 5: Hiring Manager Didn't happened for me as i got rejected in Round 4

Overall it was a good experience. Recruiter donot responds to my request for getting feedback on individual rounds which is sad as i had invested a lot of time in preparing/giving the interviews.

Interview Questions (4)

Q1
Snapshot Array
Data Structures & Algorithms

Problem link provided.

Q2
Worker Node Task Management System
System Design

There are N worker nodes, and we need to write apis: runTask() -> Runs a particular task on a node AddTask(nodeid, taskid) -> Adds a task to a particular node nodeid rebalanceTask() -> Moves tasks from one node to another if some node has lots of cpu intensive tasks. printTask() -> Prints the list of tasks in queue at each node.

Q3
Find Rank of Current Person in a Stream
Data Structures & Algorithms

You are given a stream of person's strength(integers) you need to find out rank of current person in the stream(moving from left to right). We can assume stream can be stored in RAM. Eg. stream: [5, 4, 6, 1] Output: [1, 2, 1, 4] At t=0 only 5 is there so its rank is 1 as it is the highest strength At t=1, [5,4] are there and rank of 4 is 2 as it is the second highest strength At t=2 [5,4,6] are there and rank of 6 is 1 as it is the highest strength

Q4
Design a Scalable and Fault-Tolerant Data Collection System
System Design

Design a scalable and fault-tolerant data collection system that can collect logs and data from various sources (eg, application servers, tailing a file etc.) and route them to different destinations (e.g., Elasticsearch, Kafka, S3) for further processing and analysis.

Preparation Tips

I had invested a lot of time in preparing/giving the interviews.

Rubrik | Systems Coding | Senior Software Engineer
rubrik logo
Rubrik
Senior Software EngineerOngoing
January 15, 202559 reads

Summary

I interviewed for a Senior Software Engineer role at Rubrik, focusing on systems coding. The interview involved implementing a FIFO queue with specific memory and concurrency constraints.

Full Experience

I recently had an interview for a Senior Software Engineer position at Rubrik, which heavily focused on systems coding challenges. The main problem revolved around implementing a FIFO queue under strict memory management conditions, followed by complex multi-threading and memory sharing scenarios. I had to ensure no dynamic memory allocation while handling concurrent access and efficient partitioning of a large shared buffer between two independent queues.

Interview Questions (1)

Q1
Implement Fixed-Size FIFO Queue with Concurrency and Shared Buffer
Data Structures & AlgorithmsHard

Implement a FIFO Queue with the following methods:

  • put(int): Adds an item into the queue.
  • get() int: Removes and returns an item from the queue in FIFO order.

Requirements:

  • Use a fixed-sized memory buffer (e.g., []int).
  • No dynamic memory allocation (not allocating new memory or objects as part of put and get).

Follow-up 1:

  • Support for multiple thread access.

Follow-up 2:

  • Implement two queues that share the same fixed-sized memory buffer.
  • Each queue must maintain its individual FIFO ordering.
  • The size of this int[] can be very large (100MB to 1GB+).
  • The usage of this fixed-sized array should be dynamically adjusted based on each individual queue's usage.
  • Minimize memory wastage.

Have a Rubrik Interview Experience to Share?

Help other candidates by sharing your interview experience. Your insights could make the difference for someone preparing for their dream job at Rubrik.