Tip 1 : Prepare System Design
Tip 2 : Practice DSA Questions properly
Tip 3 : Practice OOPS and DBMS Concepts
Tip 1 : Your Resume should consist mainly of skills, projects, and achievements. Projects would play a crucial part in your interview and you should have at least one most relevant and good project that shows how strong your concepts are in development.
Tip 2 : The most important tip is that never lie on your resume If you have worked upon some technology for the project part only and don't know the proper depth you could write basics only in your resume.
There was an hackerrank test whose link I got 1 day prior to test.



Let’s say you have an array/list [1,4,4,5]. We can increase the third element by 1 and the fourth element by 1. Finally, our array will look like [1,4,5,6] where all elements are distinct. Therefore the minimum number of operations is 2.
Create an array of size N and fill it with first N numbers. So total sum of the array will be smallest possible sum.
Find the largest element of the array, but as the array is sorted so array[N] will be largest.
If the largest element is less than K, we replace it with K and check the new sum of the array.
If it is less than given SUM, we move to N-1 position in the array because array[N] can’t be further incremented and to maintain uniqueness we decrease K by 1.
If it is greater than given SUM, we replace an element such that sum will be given SUM, and will come out of loop.
If the largest element is equal to K, we move to N-1 position in the array because array[N] can’t be further incremented and to maintain uniqueness we will decrease K by 1.l



Traverse the array from start to end.
For every index increment the element by array[array[index] ] % n. To get the ith element find the modulo with n, i.e array[index]%n.
Again Traverse the array from start to end
Print the ith element after dividing the ith element by n, i.e. array[i]/n.



1. Journey means the order in which the cities will be visited.
2. The given tickets have at least one itinerary.
3. If multiple valid itineraries are possible, then return the itinerary that is a lexicographically smallest itinerary.
The idea is DFS backtracking and we greedily pick the smallest lexical order possible first when we iterate over all our paths. In this case local optimum leads to global optimum. If we try airports with smallest lexical order first then we always find the desired solution first.
This round was conducted on Google meet and was a coding round. He asked 2 problems.



A palindrome is a word, number, phrase, or other sequences of characters which read the same backwards and forwards.
If the input string happens to be, "malayalam" then as we see that this word can be read the same as forward and backwards, it is said to be a valid palindrome.
The expected output for this example will print, 'true'.
We will take two pointers i pointing to the start of the string and j pointing to the end of the string.
Keep incrementing i and decrementing j while i < j and at every step
Check whether the characters at these pointers are the same or not. We are doing this through recursion – (i+1, j-1
If all the characters are the same on the ith and jth index till i>=j condition satisfies, print true else false



Input: 'str' = "abca"
Output: 1
Explanation:
If we insert the character ‘b’ after ‘c’, we get the string "abcba", which is a palindromic string. Please note that there are also other ways possible.
Every time we will be moving diagonally up, from left corner we will get number of removals to get the same substring backwards. Thing to notice here is that it is like having on string two pointers, one moving from beginning and other from end. Very important spot is that strings do not necessary has to have even number of characters, so this is the reason we also has to check upper and lower values in dp[][].
This round was also taken on Google meet and was taken by a senior engineer who asked about my projects in depth followed by 1 DSA problem



Create a deque to store K elements.
Run a loop and insert the first K elements in the deque. Before inserting the element, check if the element at the back of the queue is smaller than the current element, if it is so remove the element from the back of the deque until all elements left in the deque are greater than the current element. Then insert the current element, at the back of the deque.
Now, run a loop from K to the end of the array.
Print the front element of the deque.
Remove the element from the front of the queue if they are out of the current window.
Insert the next element in the deque. Before inserting the element, check if the element at the back of the queue is smaller than the current element, if it is so remove the element from the back of the deque until all elements left in the deque are greater than the current element. Then insert the current element, at the back of the deque.
Print the maximum element of the last window.

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