Tip 1: Strengthen core concepts in Python, SQL, and DBMS, and practice aptitude regularly to clear the initial assessment easily.
Tip 2: Focus on optimizing code for data structures and dynamic programming problems, as efficiency and logic clarity are key in technical rounds.
Tip 3:Revise important computer science fundamentals such as OOPs, time complexity, and database normalization.
Tip 1: Highlight strong programming skills in Python, SQL, and DBMS, as they are key areas tested by Provakil.
Tip 2: Include projects or internships that demonstrate problem-solving, backend development, or database management experience.
The online assessment consisted of 100 MCQs covering Aptitude, Python Programming, DBMS, and DSA, along with 1 coding problem.


VEC[][]= {{5, 10}, {25, 15}}

All the rectangles denote the possible falling paths. The rectangle with red filler is the minimum falling path with the minimum falling path sum of 20 (5+15).
A greedy approach fails because locally choosing the smallest value doesn’t guarantee the overall minimum path, as later choices may lead to larger sums. Instead, use a recursive solution with memorization:
Start from the top row and explore all possible downward paths (same, left diagonal, right diagonal).
Use memorization to store computed results.
The base case is the last row element itself.
Return the smallest path sum among all possible paths.
The second round was conducted during the daytime. The environment was calm and well-organized, creating a comfortable setting for the interview. There were no delays or disturbances during the process. The interviewer was polite, professional, and approachable, asking clear and logical questions while giving enough time to think and explain my answers confidently.



1. Each array element should belong to exactly one of the subsets.
2. Subsets need not always be contiguous.
For example, for the array : [1, 2, 3], some of the possible divisions are
a) {1,2} and {3}
b) {1,3} and {2}.
3. Subset-sum is the sum of all the elements in that subset.
Input: 'n' = 5, 'arr' = [3, 1, 5, 2, 8].
Ouput: 1
Explanation: We can partition the given array into {3, 1, 5} and {2, 8}.
This will give us the minimum possible absolute difference i.e. (10 - 9 = 1).
I first approached the problem using a basic recursive solution with memoization.
The interviewer then asked me to optimize the solution for better efficiency.
I improved it using a bottom-up dynamic programming approach, which reduced redundant computations, and the interviewer was satisfied with the optimized logic.
The third round lasted for about 45 minutes and focused entirely on DSA problem-solving. It was conducted during the daytime in a calm and professional environment. The process was smooth, with no delays or disturbances. The interviewer was polite, patient, and encouraged me to explain my thought process clearly. This round tested my ability to write optimized code and handle complex algorithmic challenges efficiently.



1. The sizes will range from 1 to ‘N’ and will be integers.
2. The sum of the pieces cut should be equal to ‘N’.
3. Consider 1-based indexing.
I first approached the rod cutting problem using a simple recursive solution. It worked but took too much time due to repeated calculations.
The interviewer asked me to optimize the solution to improve its efficiency.
I tried using memorization to reduce redundant computations, but I couldn’t fully optimize it into a complete dynamic programming (tabulation) solution within the given time.

A substring is a string formed after deleting zero or more characters from both ends of a string.
Input:
S = “hello"
Output:
5
Explanation: The following substring ‘hell’, ‘ell’, ‘llo’, ‘ello’, and ‘hello’ has the beauty of 1. Hence we return 5.
1. Loop through all substrings of the string.
2. Maintain a frequency map of characters for each substring.
3. For each substring:
4. Find the most frequent character's count.
Find the least frequent non-zero character's count.
Calculate the difference between the two counts.
Add the difference to the running sum.



If the given input string is "Welcome to Coding Ninjas", then you should return "Ninjas Coding to Welcome" as the reversed string has only a single space between two words and there is no leading or trailing space.
1. Start by scanning the string to identify words, treating each word as a group of characters separated by spaces.
2. Store these words in a list, making sure to skip any extra or multiple spaces.
3. After collecting all the words, reverse the order of the list.
4. Join the reversed words using a single space between them.
Ensure the final result has no leading or trailing spaces.

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