Tip 1 : Be very good with Computer Networks fundamentals
Tip 2 : Should be able to give the most optimal code for Linked Lists and Trees
Tip 3 : Better to have end to end/full stack projects in your resume
Tip 1 : Better to have end to end/ full stack projects on the resume
Tip 2 : Better to mention your coding profile links
There were 2 coding questions and MCQs related to Computer Science subjects like DBMS OS CN OOPS and a few Maths questions. One coding question was related to graphs and the other question was related to Binary Search. The test happened in the morning and it was on the Hackerrank platform which is a standard one.


This problem can be solved using DFS approach.
We maintain a visited 2D array to check if the particular cell is visited or not.We iterate through the whole grid, now we check if it's a 1 and if it's not visited, then we mark visited of this cell as 1 and then call for DFS on all the four sides of the cell because essentially we need to find the number of components in the whole grid. Now we go to next 1 and check for the same condition, so we also keep increasing the count as and when we explore a new component. So finally we return the count of islands.



1. Each student gets at least one book.
2. Each book should be allocated to only one student.
3. Book allocation should be in a contiguous manner.
Input: ‘n’ = 4 ‘m’ = 2
‘arr’ = [12, 34, 67, 90]
Output: 113
Explanation: All possible ways to allocate the ‘4’ books to '2' students are:
12 | 34, 67, 90 - the sum of all the pages of books allocated to student 1 is ‘12’, and student two is ‘34+ 67+ 90 = 191’, so the maximum is ‘max(12, 191)= 191’.
12, 34 | 67, 90 - the sum of all the pages of books allocated to student 1 is ‘12+ 34 = 46’, and student two is ‘67+ 90 = 157’, so the maximum is ‘max(46, 157)= 157’.
12, 34, 67 | 90 - the sum of all the pages of books allocated to student 1 is ‘12+ 34 +67 = 113’, and student two is ‘90’, so the maximum is ‘max(113, 90)= 113’.
We are getting the minimum in the last case.
Hence answer is ‘113’.
The optimal solution for this problem is to use Binary Search. We first fix a value for the number of pages as mid of current minimum and maximum. We initialize minimum and maximum as 0 and sum-of-all-pages respectively. If a current mid can be a solution, then we search on the lower half, else we search in higher half. So we need to check if the midvalue can be possible or not. We have to check if we can assign pages to all students in a way that the maximum number doesn’t exceed current value. To do this, we sequentially assign pages to every student, while the current number of assigned pages doesn’t exceed the value. In this process, if the number of students becomes more than m, then the solution is not feasible. If it's not more than m students, then we can allocate so it's feasible.
The 1st interview was in the morning where the interviewer asked "Tell me about yourself" and then asked some basic questions of Computer Networks and then went on asking a Linked List question. Basic questions include -
What is a subnet
Differentiate between TCP and UDP
How does DNS work




First we create the copy of node 1 and insert it between node 1 and node 2 in original Linked List, then we create the copy of 2 and insert it between 2 and 3. We continue the same process and add the copy of last after the last node. Next we copy the random links also in the same fashion. Next we restore the original and copy linked lists in this fashion in a single loop. Then finally the next pointer of the last node has to be NULL.




We compare the root's value with both the values given. If root's value is bigger then both the values, then this means that the LCA lies on the left part of root's sub-tree. If both the values are smaller than the gives values, then LCA lies on the right part of root's sub-tree. Suppose if root's value is bigger than one value and smaller than the other value, then root itself is the LCA since both the values lie on different parts of the sub-tree and the common element will be the root itself.
The 2nd interview consisted of OOPS questions and he asked me about my projects.
I have explained the importance of OOPS like code reusability and how OOPS is beneficial if there are large projects. Next, I have explained about Polymorphism, Inheritance, Abstraction, and Encapsulation in detail, with an example for each of them.
The HR round mainly consisted of some typical HR questions and he also asked me about my projects in depth. So basically it was a Managerial+HR round.
Tell me about yourself.
Tip 1 : Mention about your college and current degree
Tip 2 : Mention about your interests in Computer Science
Tip 3 : Why do you want to join Citrix
Where do you see yourself in 5 years?
Tip 1 : First tell about what do you want to do in the first 2 years as you will be a fresher
Tip 2 : Next mention about the next 3 years since you will be promoted to SDE 2
Tip 3 : How do you improve on skills other than technical skills
Explain about your favorite project
Tip 1 : Be very thorough with your project. You should know in and out about your project
Tip 2 : You should be able to explain them clearly, if possible screen share, and explain all the components
Tip 3 : Mention about the challenges you faced and how did you overcome then

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