Tip 1: Focus on the basics.
Tip 2: Practice a lot of questions.
Tip 3: Build projects that create an impact.
Tip 1: Keep it concise.
Tip 2: Don’t exaggerate — mention only the tech stack you have thorough knowledge of.
2 DSA questions, 2 SQL questions, and other MCQs.



1. put(U__ID, value): Insert the value in the cache if the key(‘U__ID’) is not already present or update the value of the given key if the key is already present. When the cache reaches its capacity, it should invalidate the least frequently used item before inserting the new item.
2. get(U__ID): Return the value of the key(‘U__ID’), present in the cache, if it’s present otherwise return -1.
1) The frequency of use of an element is calculated by a number of operations with its ‘U_ID’ performed after it is inserted in the cache.
2) If multiple elements have the least frequency then we remove the element which was least recently used.
Type 1: for put(key, value) operation.
Type 2: for get(key) operation.
We perform the following operations on an empty cache which has capacity 2:
When operation 1 2 3 is performed, the element with 'U_ID' 2 and value 3 is inserted in the cache.
When operation 1 2 1 is performed, the element with 'U_ID' 2’s value is updated to 1.
When operation 2 2 is performed then the value of 'U_ID' 2 is returned i.e. 1.
When operation 2 1 is performed then the value of 'U_ID' 1 is to be returned but it is not present in cache therefore -1 is returned.
When operation 1 1 5 is performed, the element with 'U_ID' 1 and value 5 is inserted in the cache.
When operation 1 6 4 is performed, the cache is full so we need to delete an element. First, we check the number of times each element is used. Element with 'U_ID' 2 is used 3 times (2 times operation of type 1 and 1-time operation of type 1). Element with 'U_ID' 1 is used 1 time (1-time operation of type 1). So element with 'U_ID' 1 is deleted. The element with 'U_ID' 6 and value 4 is inserted in the cache.
It is a standard LFU Cache problem from Striver’s sheet.



Consider the maze below :
0 0 0
0 -1 0
0 0 0
There are two ways to reach the bottom left corner -
(1, 1) -> (1, 2) -> (1, 3) -> (2, 3) -> (3, 3)
(1, 1) -> (2, 1) -> (3, 1) -> (3, 2) -> (3, 3)
Hence the answer for the above test case is 2.
Given a table of employees(id, name, salary), write an SQL query to find the second-highest salary.
Given two tables — customers(id, name) and orders(id, customer_id, order_date) — write an SQL query to find all customers who have never placed an order.
DSA round with a High-Level Design (HLD) knowledge check.

First, a doubly linked list consists of nodes with three parts: prev, data, and next.
To convert it into a singly (linear) linked list, we simply need to remove the prev pointers and keep only data and next.
Build a notification service with retry mechanisms and an asynchronous architecture.
This round evaluated your ability to think of test cases that might break the code.
Write a mock code to calculate the factorial of a number, similar to the functionality in a phone calculator.
Suppose we add a functionality to calculate the factorial of a number in our calculator. I had to write code for this feature while considering various input and output test cases from the user, as well as the approximations required, since the factorial of large numbers grows exponentially, making it difficult to display the result accurately.
This round tested my understanding of core Java functionality and overall architectural knowledge.
I was mainly asked about Java, including OOPs paradigms, runtime and compile-time polymorphism (Learn), the string pool, and comparisons between Java 8 and previous versions — primarily focusing on the Collection Framework.
Apart from that, I had a discussion on designing an Amazon cart system — covering what APIs would be needed, how to optimize the database, and how to scale the system.
That’s all!
A basic HR one on one.

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