I applied for the Performance Engineering role at Bangalore via VMware careers site. Soon I received a link for a coding test at HackerRank. It was a 90-minutes test, had 3 questions. According to me, they were in the order of Easy – Medium – Hard. I could solve the first two questions, could not solve the last one. A few days later I was informed that I am selected for the onsite interviews.
This round mainly bounced between DS-Algo and OS concepts.
Some OS questions –
1. Virtual Memory – a thorough explanation expected, with some conceptual questions thrown in between
2. Paging and its internal features, advantages, disadvantages.
3. Locking mechanisms – Mutex, Semaphores
Some DS-Algo questions –
1. Delete middle element of linked list in one pass (The hare and the tortoise strategy).
2. Find 2nd smallest element in array, told that I would maintain two variables (smallest_till_now and next_smallest_till_now) and update them accordingly in one linear pass. Finally next_smallest_till_now would contain the result. Later was asked to generalize the solution for finding the kth smallest element. Gave the quick-select algorithm as a solution and coded it. Was asked to compare it with an alternative solution that uses a heap of size k.
There was only one problem statement – it was a modification of the Producer – Consumer problem. But I was expected to write a code that uses threads with locking for simulation. I was using C++ for the interview and did not write any threaded program ever in it, so was allowed to google a little and then code it. Could complete the code but it was not at all a good one. The round concluded with some more questions regarding threads, processes, semaphores.
It was a general discussion round. The interviewer did not ask me any technical questions. He asked me about my previous company, my experiences there, my interests and where I find myself growing in my career. He also explained me about this Performance Engineering role and the nitty-gritty aspects of it.
It involved design questions only.
1. How to send video streams from remote machine to another machine – I discussed various compression strategies.
2. Design an error-handling library (using inheritance) that can be invoked anywhere at the code.
3. Design a Washing Machine that serves atleast the basic requirements – it’s block diagram, algorithm of operation.
Result – Selected
General advice for VMware enthusiasts – Make sure your OS concepts are strong. The level of DS-Algo that they willl ask you would most probably be quite less demanding in comparison to the depth of OS concepts in which you would be tested upon.