Tip 1 : Read interview experience before interview
Tip 2 : Think loud about each coding question.
Tip 1 : No spelling mistake in resume.
Tip 2 : Resume should be in proper format
The 1st round was online coding + MCQ round. It had 3 sections in total to be solved in 95 mins.
Next comes the technical interview.
The technical interview lasted for about 45 minutes. It started with a basic introduction. Then, she framed some questions from my resume and projects which I have mentioned. Questions were mainly from Data structure, OS, DBMS, SQL. She told me to rate my data structure skill on a scale of 1 to 5.
My interview was at 10:30 am and the interviewer was really nice. She was helping me wherever I was getting stuck.
Try solving this problem in O(N) time complexity.
Sort the array and return second last element.
The technical interview lasted for about 45 minutes. It started with a basic introduction. Then, she framed some questions from my resume and projects which I have mentioned. Questions were mainly from Data structure, OS, DBMS, SQL. She told me to rate my data structure skill on a scale of 1 to 5.
Try to solve the problem in 'Single Scan'. ' Single Scan' refers to iterating over the array/list just once or to put it in other words, you will be visiting each element in the array/list just once.
I started with a basic brute force approach by counting the number of 0’s,1’s,2’s. Let the count be x,y,z then we can traverse again and fill x nodes as 0 , y nodes as 1 and z nodes as 2.
Then the interviewer asked me to optimize the solution
Next comes the efficient solution
Iterate through the linked list. Maintain 3 pointers named zero, one, and two to point to current ending nodes of linked lists containing 0, 1, and 2 respectively. For every traversed node, we attach it to the end of its corresponding list. Finally, we link all three lists. To avoid many null checks, we use three dummy pointers zero, one and two that work as dummy headers of three lists.
First solution using extra space:
1) We can make a set of integer.
2) Traverse the linked list and store the values in set.
3) After traversal the set will contain all those elements which are unique.
4) We can then copy those elements back to the linked list.
The interviewer asked me to optimize and asked me the complexity.
So second optimised solution:
1) Traverse the linked list.
2) If the current data is the same as the next node then delete the next node.
3) Before deleting a node, we need to store the next pointer of the node
What is a semaphore?
What is race condition?
Tip 1 : Be accurate and give real-life examples
Tip 2 : Try to include interviewer in discussion
Describe all the joins in SQL with a Venn diagram.
Tip 1 : Draw the diagram and explain logic.
1. Start from the root.
2. Compare the searching element with root, if less than root, then recurse for left, else recurse for right.
3. If the element to search is found anywhere, return true, else return false.
In the below map of Ninjaland let say you want to go from S=1 to T=8, the shortest path is (1, 3, 8). You can also go from S=1 to T=8 via (1, 2, 5, 8) or (1, 4, 6, 7, 8) but these paths are not shortest.
Initially all vertex are unvisited so visited[i] will be false for all i and as no path is yet constructed so distance[i] will be infinity or you can take any value like -1 and set predecessor[i] as -1 for all i.
Now the first vertex to be visited is sourse and distace of Source to source is 0 hence visited[source] = true
distance[source]=0.
queue.push(source).
while there are vertices in the queue:
1.Read a vertex u from the queue
2.For all adjacent vertices of u :
if visited[adj[u][i] ] is false (where adj is a vector containing adjascency list)
- make it true
put distance [adj[u][i]]=distance[i]+1
predecessor[adj[u][i]]=u
queue.push(adj[[u][i]])
if(adj[u][i]==destination then return true so we get distance of vertex i from source vertex from distance array and immediate predecessor of vertex i from predecessor array we get length of path from source to any vertex in O(1) time from distance array and printing path from source to any vertex we use predecessor array which takes O(V) time in worst case
thus complexity of the algorithm is O(V+E) with Auxiliary space O(V).
Here's your problem of the day
Solving this problem will increase your chance to get selected in this company
What is inheritance in C++?