Citrix Interview Experience by Prakhar Kulshreshta | Full Time | Virtual On Campus 2020






Citrix visited our campus for the role of Software Engineer.

Online Test(2 Hrs):

The test was conducted on HackerRank. It comprised 2 coding questions and 40 MCQs on some theory subjects.

MCQ

So after some discussion with my friends, I have brought down the MCQs to be around the following topics:

C language : static , struct , pointers, overflow , function pointer , compiler tokens

C++ : Constructor , compilation process , class visibility and static , virtual function ,operator overloading

OS : segmentation , paging , disk scheduling

Networking : optimal window size in sliding window protocol , subnets (numericals mostly)

DS & Algo: applications

And some good Aptitude/Maths questions.


CODING

Q1) We are given k servers responding to requests for processing . The servers are allotted requests in round robin fashion . Busy servers are not allowed to take in a second request. Unavailability of any server causes a drop of request. Requests have arrival time and load as parameters. We had to tell the server that served the maximum total load.

I solved this question fully.
Solution at the end

Q2) I could not understand the problem statement to this question and I don't remember anyone doing this question fully .

I hardcoded 40% of the test cases to this question.(Not recommended at all, read later below).
120 mins was a balanced amount of time for all of this . I had around 20 mins left to solve Q2 after debugging Q1 for some time .


14 Students were shortlisted for the interviews.


From what I heard, these were people who either solved Q1 or did extremely well in MCQs.
All rounds further were held on Hackerrank codeshare feature(Whatever the name is). 

 

Technical Interview 1:

Right off the bat, he copied my hard coded solution on the shared screen and asked me to explain my solution. I had to explain that I did not understand the question in the first place and then I gave my justification for hardcoding the solution. He seemed to not make a fuss about it and moved on to the actual interview.

Q1) Set a particular bit in a number

Q2) Identify why a particular piece of code is showing compiler error. (Ans was memory allocation). The follow up discussion was about the adv/disadv of public allocation , dynamic allocation and recursively allocating.

Q3) Semaphores and code for wait and signal functions. Processing optimizations on it. Hardware semaphores etc.

Q4) Storage classes in C

Q5) He asked me what I prepared for this interview. I implied that I had not done networking , rest I was confident about.

Q6) May or may not exist as i don’t remember but a coding question that was pretty easy.

Q7) General questions about my interests , my location , Covid .

Round lasted for about 50 mins. Others had a similar length too.


10 people were shortlisted for the next round.


Technical Interview 2:


I was asked about my Internship. After that I was asked to explain Virtual Memory . Another question on what happens if we use free() twice using the same pointer.

After this i was asked 2 questions:

Q1 ) https://leetcode.com/discuss/interview-question/364618/Microsoft-or-OA-2019-or-Min-Steps-to-Make-Piles-Equal-Height


Q2) Range increment on a circular array. 10^5 queries, one time output after all queries are processed.


I was only asked to explain the solution for both of them.


Round lasted for 20 minutes(Yeah).
Other interviews went on for the normal 50-70 mins.


7 people were shortlisted for the next round.

 

Managerial Interview :

This round was to check if I have a basic knowledge of working in a tech environment. The round involves going over your resume thoroughly. A theme of this round was the interviewer not bothering with my coding abilities and looking apart from that. My pointer is slightly less than 8 , to give you perspective.

Q1) Interest in Data Science?

Q2) How have the classes been going on and do I enjoy them virtually?

Q3) What theory subjects have you gone through in the previous 2 semesters.

Q4) What is cloud computing ?

Q5) Did I work on cloud at my internship?(Yes, I did)

Q6) Windows/Linux (I said I use Windows mostly but have done work on Linux too) ? Commands to list processes, to kill a particular process? How to do the same in Windows? (Task Manager UI in Windows)

Q7) Situation based question on FTP (I didn’t know networking but i knew ssh and that it is tcp connection, so I said that, he then said which protocol will ssh use, I said ftp).

Q8) Situation based question on API . Definition . Rest API. Definition.

Q9) My internship experience. My work on microservices there and the code quality and testing I did there. He was very impressed by the quality assurance at my internship and replied with a very reaffirming awesome.

Q10) My strengths

Q11) My knowledge of languages

Q12) Multithreading

Q13) Everything I knew in DBMS(Name stuff)


He wanted to bring up a conversation on other subjects too like Compilers/More Networking but I was lucky to be able to dodge those as I had no preparation for any of that. I would say on another day it could have gone really differently.


Verdict : 3 people selected including me

 - Prakhar Kulshreshta 

- CSE 2k21


****************************************************************************************

Down here : hint and clarification for q1 of online round
  • The question quite clearly was more on the implementation side.
  • You can also use sets but I used a priority queue.
  • Use of 2 priority queues(as a single array of 2 priority queues) to maintain available servers - “left in the current round of RR” and “available for the next round only” .
  • An index to alternate the roles of the above 2 priority queues .
  • Another priority queue to maintain servers that are busy,along side their time when it becomes free as a pair.
  • All these are min heaps so know it’s declaration.
  • And other arrays to maintain index pairs and to sort indexes by arrival time required careful handling and observation.
  • You can’t use every second of time as iterator of processing loop , so loop will be on the request arrival time.
  • I started with a different approach but fortunately the correct approach was not a lot different in code.

******************************************************************************************

 

 

Comments