Tip 1 : You must have a grip over Data Structures and algorithms. Your concepts must be crystal clear. Pick one coding platform and try to practice at least 7-10 coding questions everyday.
Tip 2 : After attempting any coding problem, analyze its time and space complexity. See, if you can further optimize your solution. You can always check the editorials and compare your solution with it.
Tip 3 : Apart from coding questions keep studying concepts of Operating Systems, databases and object oriented programming. You can always refer to Coding Ninjas articles for it. Also, Coding Ninja's Data Structures and algorithms course in C++ helped me a lot in improving my OOPS concepts specifically.
Tip 1 : You do not need to have a long list of projects on your resume. One good project with proper knowledge of it will do good. Similarly, do not list down several number of skills. Few skills but roper knowledge of them are enough.
Tip 2 : Do not fake anything on your resume. The interviewer gets to know about it by asking questions. If you aren't able to answer, it leaves a negative impact.
The online test consisted of 2 coding questions, 30 aptitude MCQs, 30 behavioral MCQs and 10 code snippets to debug. The coding questions were of medium level, aptitude MCQs were easy and the code snippets to debug was also of easy level. Each section had a time constraint.



The given linked lists may or may not be null.
If the first list is: 1 -> 4 -> 5 -> NULL and the second list is: 2 -> 3 -> 5 -> NULL
The final list would be: 1 -> 2 -> 3 -> 4 -> 5 -> 5 -> NULL
I provided a solution with O(n+m) Time complexity and O(1) Space complexity.
1. Before starting the loop, pick a list l1, a "least" list, with the least first element, another one l2 will be a "bigger" list.
2. You run through the "least" list l1 and once its element is bigger than l2, exchange them and continue running through l1.
3. After the loop, whatever is left in l2 is bigger than anything in l1, append it to l1.



You can only move down or right at any point in time.
I applied Dynamic Programming to this question,
As we can move either right or down , we must update the grid[i][0] as well as grid[0][j] values first and finally update the grid values by adding the current grid[i][j] with the minimum value : min(grid[i-1][j],grid[i][j-1]). The bottom right element will be the answer then.
My interview was at 9:00 am. The interview was conducted on Amazon Chime and my webcam was on. The interviewer also asked me to write the code on a document which can be edited by both me and the interviewer. The difficulty of the questions was of medium level. I was asked 3 coding questions along with 2 questions related to OOPS at the end. The interview ended with the discussion of one of my projects. The interviewer was good and also gave me hints wherever required.



For a given string “BaaB”
3 possible palindrome partitioning of the given string are:
{“B”, “a”, “a”, “B”}
{“B”, “aa”, “B”}
{“BaaB”}
Every substring of all the above partitions of “BaaB” is a palindrome.
I used the Backtracking algorithm along with Dynamic Programming.
2 conditions to be kept in mind are:
1. The characters at start and end indexes are equal.
2. The substring starting at index start+1 and ending at index end−1 is a palindrome.
Let N be the length of the string. To determine if a substring starting at index start and ending at index end is a palindrome or not, I used a 2 Dimensional array dp of size N⋅N where,
dp[start][end]=true , if the substring beginning at index start and ending at index end is a palindrome.
Otherwise, dp[start][end] ==false.
Also, update the dp array, if you find that the current string is a palindrome.



[1, 2, 3, 4] is a strictly increasing array, while [2, 1, 4, 3] is not.
I used Dynamic Programming for this question.
1. Create a dp array of size N initialized with 0.
2. dp[i] represents the length of the longest increasing subsequence( including the i th element).
3. To find out dp[i], append the current element(nums[i]) in every possible increasing subsequences upto the (i−1) th index(including the (i−1) th index).
4. Finally determine dp[i] using:
dp[i] = max(dp[j])+1,∀0≤j num[j]
At the end, the maximum out of all the dp[i]'s to determine the final result.
LIS length=max(dp[i]),∀0≤i<n



1. The string consists of only digits 0 to 9.
2. The numbers will have no more than six digits.
1. Try all lengths from 1 to 6.
2. For every length we try, check if the current length satisfies the property of all consecutive numbers and one missing. 3. The number of digits may change as we increment numbers. For example when we move to 100 from 99. To handle this situation, find the number of digits using log base 10.
Tell the ACID properties in DBMS.
Tip 1 : Be clear with your concepts of operating systems and databases. Don't use those technical terms which you aren't clear with.
Tip 2 : Try to communicate clearly with the interviewer. Explain your solution clearly.

Here's your problem of the day
Solving this problem will increase your chance to get selected in this company
How do you remove whitespace from the start of a string?