Tip 1 : Must do Previously asked Interview as well as Online Test Questions.
Tip 2 : Go through all the previous interview experiences from Codestudio and Leetcode.
Tip 3 : Do at-least 2 good projects and you must know every bit of them.
Tip 1 : Have at-least 2 good projects explained in short with all important points covered.
Tip 2 : Every skill must be mentioned.
Tip 3 : Focus on skills, projects and experiences more.
Technical round that lasted for around 60 minutes. The interviewer asked questions on data structures and OOPS concepts.



If the string is “bca”, then its permutations in lexicographically increasing order are { “abc”, “acb”, “bac”, “bca”, “cab”, “cba” }.
Given string contains unique characters.
Trie data structure can be used to solve this question.
Firstly, construct a trie from the words
The second is, Add the letters to a has hset or a hash map if duplicate letters are allowed.
Three, navigate the trie, removing each letter from the set when it matches, then recurse with the next trie node and then add the letter back to the set, applying backtracking.



You are given ‘X’ as 20 and ‘Y’ as 15. The greatest common divisor, which divides both 15 and 20, is 5. Hence the answer is 5.
To find GCD of numbers more than two, it can be calculated by repeatedly taking the GCDs of pairs of numbers.
gcd(a, b, c) = gcd(a, gcd(b, c))
= gcd(gcd(a, b), c)
= gcd(gcd(a, c), b)
To calculate gcd of two numbers, Euclid's algorithm can be used.
Pseudo Code of the Algorithm-
Step 1: Let a, b be the two numbers
Step 2: a % b = R
Step 3: Let a = b and b = R
Step 4: Repeat Steps 2 and 3 until a% b > 0.
Step 5: GCD = b
Difference between C, C++ and Java
1. The C programming language is a procedural language type while C++ is an object-oriented programming language type. Java is a Pure Object Oriented language.
2. C programming follows a top to down programming approach that focuses on the steps rather than the data. C++ follows a bottom-to-top approach that focuses on data rather than the overall procedure. Java follows a bottom-up approach.
3. C and C++ are platform dependent while Java is a platform independent language.
Virtual keyword in C++
'Virtual' is a keyword preceding the normal declaration of a function. When the function is made virtual, C++ determines which function is to be invoked at the runtime based on the type of the object pointed by the base class pointer.
Technical round that lasted for around 60 minutes. The interviewer asked questions on data structures and question related to cloud computing(cloud computing was listed on my resume) .



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.
Structure of an LRU Cache :
1) In practice, LRU cache is a kind of Queue — if an element is re accessed, it goes to the end of the eviction order
2) This queue will have a specific capacity as the cache has a limited size. Whenever a new element is brought in, it is added at the head of the queue. When eviction happens, it happens from the tail of the queue.
3) Hitting data in the cache must be done in constant time, which isn't possible in Queue! But, it is possible with Hash Map data structure
4) Removal of the least recently used element must be done in constant time, which means for the implementation of Queue, we'll use DoublyLinkedList instead of SingleLinkedList or an array.
LRU Algorithm :
The LRU algorithm is pretty easy! If the key is present in HashMap, it's a cache hit; else, it's a cache miss.
We'll follow two steps after a cache miss occurs:
1) Add a new element in front of the list.
2) Add a new entry in HashMap and refer to the head of the list.
And, we'll do two steps after a cache hit:
1) Remove the hit element and add it in front of the list.
2) Update HashMap with a new reference to the front of the list.



• The reference to the head of the linked list is not given.
• The node to be deleted is not a tail node.
• The value of each node in the Linked List is unique.
• It is guaranteed that the node to be deleted is present in the linked list.

The simple solution is to traverse the entire linked list till you reach the node to be deleted. And delete the node. But in this question, only the pointer to the node to be deleted is given.
So, we can achieve the same effect by instead removing the next node after copying its data into the node that we were asked to delete.
Steps :
1. Find out the next node of the pointer to the node that we have.
2. Copy the data from the next node to the node to be deleted.
3. Fix the link and delete the next node
Difference between IAAS, PAAS, SAAS
1. IaaS is an acronym for Infrastructure As A Service. PaaS is an acronym for Platform As A Service. SaaS is an acronym for Software As A Service.
2. The IaaS service provides its users with access to various resources like virtual storage and virtual machines. Using the PaaS services, users can get access to a runtime environment (for the development and deployment of applications and tools). The SaaS services give access to all of their services to the end-users, where it’s application hosting, storage, or any other services.
3. The network architects primarily use the IaaS. Developers mainly make use of PaaS. An end-user generally uses SaaS.
4. The IaaS is a service model. It functions to provide various visualized computing resources all over the internet. PaaS is a cloud computing model. It mainly delivers the tools required for developing various applications. SaaS is a service model for cloud computing services. They mainly host various software and make them available for the clients.
Technical round that lasted for around 60 minutes. The interviewer asked questions on data structures and question related to networking.



Insertion Sort is a sorting algorithm that removes one element from the input data, finds the location it belongs within the sorted list and inserts it there. It repeats until no input elements remain.
Steps :
1) If Linked list is empty then make the node as head and return it.
2) If the value to be inserted is smaller than the value of the head, then insert the node at the beginning and make it head.
3) Run a while loop and find the appropriate node after which the input node is to be inserted. To find the appropriate node start from the head, keep moving until you reach a node who's value is greater than the input node. Insert the node just before that node.
4) Insert the node after the appropriate node found in step 3.



1. All the elements are in the range 0 to N - 1.
2. The elements may not be in sorted order.
3. You can return the duplicate elements in any order.
4. If there are no duplicates present then return an empty array.
One approach could be to use a Hash map. Store the count of each element of array in a hash table and later check in Hash table if any element has count more than 1 and print those elements. This approach would have a time and space complexity as O(n).
To solve the question in constant space, array can be used as a hash map. While Traversing the array, for every element a , increase the value at index [a%n] by n. So, for every arr[i], arr[i] would be greater than N only if i has appeared more than once. Thus, after processing the array, traverse the array again and print all elements where arr[i]/n > 1.
Difference between Web 2.0 and Web 1.0
1. Web 2.0 is very dynamic while Web 1.0 is static.
2. Web 1.0 is mostly for browsing content while Web 2.0 allows for more tasks.
3. The flow of information in Web 1.0 is linear while that of Web 2.0 is not.
The Interviewer asked me questions to know more about me. He also asked a puzzle.
1. Explain a project listed on my resume.
2. A thorough scan of my resume and in depth coverage of all the projects and technologies listed on it
3. Which domain would I be interested to work in?
Tip 1 : Be sure to do your homework on the organization and its culture before the interview.
Tip 2 : Employers want to understand how you use your time and energy to stay productive and efficient. Be sure to emphasize that you adhere to deadlines and take them seriously.
Tip 3 : Talk about a relevant incident that made you keen on the profession you are pursuing and follow up by discussing your education. Know your resume well.
Find the fastest 3 horses
1. Divide the 25 horses into groups of 5, and race the horses in each group. (5 races)
2. Take the winner from each group and race those 5 horses. The winner of this race is the fastest horse overall. (1 race)
Notation : Label the 5 groups from step one as a, b, c, d, e to correspond to horses finishing 1st, 2nd, 3rd, 4th, and 5th in step two. Write a subscript to identify the order that the horse finished in the group, so a2 means the horse that finished 2nd place in group a.
3. Do one more race with horses a2, a3, b1, b2, c1. That is, race the second and third fastest from group a, the fastest and second fastest from group b, and the fastest from group c. The top 2 horses in this race are the 2nd and 3rd fastest horses overall. (1 race)

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