DE Shaw held an on-campus recruitment drive for the position of SDE intern (2 months) in our campus.

The following is a summary of my experience.

There were three rounds to the selection process:

**Round 1: Technical Test (90 minutes) | Hacker Rank**

There were three code questions in this round. One question was about arrays, while the other two were on Dynamic Programming. Each question had a set time limit that could not be carried over to the next question. The three questions were:

- Given an array of n numbers, find the number of triplets such that Ai<Aj<Ak or Ai>Aj>Ak where I, j, k are indices of the array and i<j<k. The O(n^3) approach would not pass all the test cases and the solution needed to be optimized to O(n^2) or O(n log(n)).
- You are given x lions, y tigers, z leopards, and w panthers. There are m cages in a line and you have to fill all the m cages such that no two same animals are adjacent to each other. Find the total number of ways to do so. Given constraints were:(0<=x,y,z,w<=51). It was to be solved using DP.
- It was a standard DP question the LCS of three strings.

I solved the first question in 15-17 mins out of 25 mins, in the second question I took complete 30 mins and the third question I solved in 10-12 mins out of 35 mins, due to which I was selected for the next round.

12 students were shortlisted for the technical interview out of a total of 101.

**Round 2: Technical Interview (Round 1) | Code Pair (Hacker Rank) | (60 Minutes)**

This round was set to take place three days following the coding round. There was a panel of two interviewers, both of whom were quite pleasant. You could use the platform’s coding board and whiteboard features to describe your solutions. The number of questions asked in this round was not fixed for every candidate, but basically, it depends on the interviewer.

This round needed a strong understanding of my major programming language: C++, as well as DSA and algorithms. The summary of the round is as follow:

- They asked me which is my primary language and languages I’m comfortable with.
- How would you implement your own vector (Dynamic array) in C++? To which I answered either using linked list or self-expanding arrays using new and delete (the actual way how vectors are implemented). Then they asked me for detailed implementation of add, delete, search and access procedures of both implementations, their time complexities, and their comparison to the other approach.
- Similar to the above question they also asked for detailed implementation of ordered and unordered maps and sets in C++.
- Different ways to avoid and resolve collisions in hashing
- Merge two unsorted arrays of size n and m without extra space
- Coin exchange problem when we need DP and when we can use greedy.
- Some other simple DP and Greedy questions
- Draw NFA, DFA for given grammars (2-3 different questions on the same)
- Uses of NFA, DFA
- Working of microprocessor
- Calculating time to process 1 billion instructions, given time for each cycle
- Some other questions on instructions and process cycles.
- Some discussion on one of the projects from my resume.
- What is a garbage collector
- Types of smart pointers in C++ and their uses and working
- Disadvantages of using pointers, dangling pointer problem, wild pointers.
- In order traversal of a tree in O (1) Space
- Median of a stream of running integers.
- Some more questions on DSA

3 students out of 12 were promoted to the next technical interview round. The most important factors are your coding round score, attitude, confidence, and communication abilities. You must have a deep knowledge of at least one of the programming languages.

**Round 3: Technical Interview (Round 2) | Code Pair (Hacker Rank) | (60 Minutes)**

This round was scheduled for the same day in the evening. There were two interviewers in this round also. They were also quite helpful and provided helpful advice at the appropriate times. This round was mainly based on project and OOPS. The summary of the round is as follows:

- Detailed discussion on my most recent project, it’s working, its applications in industry, libraries used. Then some questions like why you followed this approach and not that and why you used this or why you didn’t use this in your project.
- Changes you would make to upscale the projects and how to handle large amounts of data.
- Questions on tree traversals
- How to delete a node in a simple linked list in O(1) time when only its address is given
- Intermediate DP questions.
- Some other questions on the basic algorithms.
- Explain all the concepts of OOPS and their implementation in programing language
- Implement python style list (which can take different types of data in a single list) in C++
- Implement singleton class in C++(Class which can have only one object)
- Static variables and functions, global variables, extern variables, and const variables.
- Some other basics of C++
- Difference between strongly typed and weakly typed languages, dynamic and static languages, and their examples.

In most cases, there is also an HR round, although it was not there in our situation, possibly due to a lack of time.

Only two students were chosen for the summer internship after this round, and I was fortunate enough to be one of them.

After each round, you may ask the interviewee whatever questions you wish. Like you might inquire about the company’s technologies or languages used.