Tip 1: Practice at least 250 coding questions on coding platforms.
Tip 2: Build at least two real-world projects to showcase your practical skills.
Tip 3: Master core concepts like data structures, algorithms, and system design through consistent revision and application.
Tip 1: Highlight projects that demonstrate real-world problem-solving, and include links to GitHub or live demos.
Tip 2: Tailor your resume for each role by matching keywords from the job description.
The first round was an online Hackerrank test which had a duration of 60 minutes. It consisted of 1 Coding question and 15 MCQs that consisted of questions from topics like OS, DBMS, Algorithms, etc.



Given three sorted arrays in non-decreasing order, print all common elements in non-decreasing order across these arrays. If there are no such elements return an empty array. In this case, the output will be -1.
Input: arr1[] = [1, 5, 10, 20, 30], arr2[] = [5, 13, 15, 20], arr3[] = [5, 20]
Output: 5 20
Explanation: 5 and 20 are common in all the arrays.
Input: arr1[] = [2, 5, 10, 30], arr2[] = [5, 20, 34], arr3[] = [5, 13, 19]
Output: 5
Explanation: 5 is common in all the arrays.
Since the arrays are sorted in non-decreasing order, the smallest element among the three pointers at any moment will always be the smallest in the merged arrays. Leveraging this property, we can optimize our approach as follows:
Initialize three pointers, one for each array.
Compare the current elements at each pointer.
If they are equal, it’s a common element, store it and move all three pointers forward.
Otherwise, move only the pointer pointing to the smallest element.
Repeat the process until at least one array is fully traversed.
Using three pointers – O(n1 + n2 + n3) Time and O(1) Space
I was able to solve the first problem without any help from the interviewer. For the problem interviewer asked me to give an efficient solution in terms of time as well as space complexity. Then he asked CS Fundamental questions.


Given a Binary Tree, the task is to print the Right view of it. The right view of a Binary Tree is a set of rightmost nodes for every level.
Step 1: Use a level order traversal (BFS)
To find the right view, we can perform a level-order traversal of the tree using a queue. This ensures that we visit the nodes level by level from top to bottom.
Why Level-order? This is important because the rightmost node of each level will always be the last node visited at that level.
Step 2: Track the rightmost node at each level
During the level-order traversal, I would keep track of the rightmost node for every level.
As we visit nodes at a level, I will always update the rightmost node with the last node at that level.
How to achieve this? After visiting all nodes of a level, the last node processed will be the rightmost node at that level.
Step 3: Use a queue for level order traversal
Start by enqueueing the root node into a queue.
For each level, dequeue the nodes and:
For each node, enqueue its left and right children (if any).
Keep track of the last node processed at each level as the rightmost node.
Step 4: Edge case handling
Empty Tree: If the root is null, return [] since there is no right view.
Single Node: If the tree has only one node, the right view is that node.
Step 5: Output the right view
After completing the traversal, the last node of each level is stored, and that’s our right view of the tree.

Here's your problem of the day
Solving this problem will increase your chance to get selected in this company
What is recursion?