Tip 1: Have at least one Data science or ML internship.
Tip 2: Practice advanced data structures like Tries, graphs, etc.
Tip 3: Be reasonable in your communication
Tip 1 : Keep your resume up to date and mention three or four good-level projects that will give a good impression to the interviewer
Tip 2 : You should be well aware and knowledgeable about everything mentioned in your resume.
The test consists of 3 coding questions ranging from medium to high.



If N = 4, K = 2 and subjects = {50,100,300,400}
Assignment of problems can be done in the following ways among the two friends.
{} and {50,100,300,400}. Time required = max(0, 50+100+300+400) = max(0, 850) = 850
{50} and {100,300,400}. Time required = max(50, 100+300+400) = max(50, 800) = 800
{50, 100} and {300,400}. Time required = max(50+100, 300+400) = max(150, 700) = 700
{50,100,300} and {400}. Time required = max(50+100+300, 400) = max(450, 400) = 400
{50,100,300, 400} and {}. Time required = max(50+100+300+400, 0) = max(850, 0) = 850
So, out of all the above following ways, 400 is the lowest possible time.
I solved it using Binary Search Algorithm.
This was a technical interview first round which was based on Machine Learning, Deep Learning, Data Structures, and other computer science fundamentals.
In Machine Learning, they asked me regarding error functions, loss functions, overfitting, techniques to overcome overfitting, underfitting and techniques to handle missing values in the dataset. The next question was coding one and the question was to find the maximum element in the array in the window of size k.( gave solution starting from bruit force to Optimized one)



If A = [3, 2, 3], and K = 2.
Then max of [3, 2] = 3 and max of [2, 3] = 3
So, the answer will be [3, 3]
If A = [3, 2, 3, 5, 1, 7] and K = 3.
Then max of [3, 2, 3] = 3
Then max of [2, 3, 5] = 5
Then max of [3, 5, 1] = 5
Then max of [5, 1, 7] = 7
So the answer will be [3, 5, 5, 7]
Can you solve the problem in O(N) time complexity and O(K) space complexity?
1.Create a queue to store k elements.
2.Run a loop and insert till index less than k(window size) in the queue.
3.Then for an index greater than equal to k, check the greater element of the current queue and output it. And then
to slide the window, dequeue the first element of the queue, and enqueue new element of the current index in the
queue.
4.And when the loop completes, check the greater element of the queue outside the loop for the last window
This was my technical round 2.



1. Coordinates of the cells are given in 0-based indexing.
2. You can move in 4 directions (Up, Down, Left, Right) from a cell.
3. The length of the path is the number of 1s lying in the path.
4. The source cell is always filled with 1.
1 0 1
1 1 1
1 1 1
For the given binary matrix and source cell(0,0) and destination cell(0,2). Few valid paths consisting of only 1s are
X 0 X X 0 X
X X X X 1 X
1 1 1 X X X
The length of the shortest path is 5.
1. Initialize distances of all vertices as infinite.
2. Create an empty priority_queue pq. Every item of pq is a pair (weight, vertex). Weight (or distance) is used as the first item of pair as the first item is by default used to compare two pairs
3. Insert source vertex into pq and make its distance as 0. While either pq doesn't become empty
a) Extract minimum distance vertex from pq. Let the extracted vertex be u.
b) Loop through all adjacent of u and do following for every vertex v.
If there is a shorter path to v through u.
If dist[v] > dist[u] + weight(u, v)
(i) Update distance of v, i.e., do dist[v] = dist[u] + weight(u, v)
(ii) Insert v into the pq (Even if v is already there)
This was my technical round 3.The interviewer started with very basic maths questions like what is an eigenvalue, eigenvector, the inverse of a matrix, Does inverse exist for the rectangular matrix?
After that, he switched to the coding question



1. get(key) - Return the value of the key if the key exists in the cache, otherwise return -1.
2. put(key, value), Insert the value in the cache if the key 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 recently used item before inserting the new item.
Type 0: for get(key) operation.
Type 1: for put(key, value) operation.
1. The cache is initialized with a capacity (the maximum number of unique keys it can hold at a time).
2. Access to an item or key is defined as a get or a put operation on the key. The least recently used key is the one with the oldest access time.
Common question
This is a cultural fitment testing round .
1.Tell me something about yourself.
2.Why Sprinklr?
3.Why Data Scientist?
4.Situational question.
5.Creativity question
Tip 1 : Be genuine in your answers
Tip 2 : Try to think creatively
Tip 3 : Be good in your communication skills

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