Goldman Sachs | Engineering | Summer Analyst | India | August 2020 [Offer]

goldman sachs logo
goldman sachs
Summer AnalystIndiaOffer
August 23, 202020 reads

Summary

I interviewed for a Summer Analyst position at Goldman Sachs in August 2020. After an online assessment, I had two technical interviews focusing on data structures, algorithms, and project discussions. I successfully received an offer.

Full Experience

I interviewed for a Summer Analyst position at Goldman Sachs in August 2020. I am currently a student at an IIT in India, and this was an on-campus opportunity.

Round 1: Online Assessment Test

The online assessment had 5 mandatory sections and lasted 2 hours 15 minutes. It included:

  • Coding section: 2 programming questions (30 mins)
  • Computer Science MCQs: 7 questions (20 mins)
  • Quantitative Aptitude MCQs: 8 questions (25 mins)
  • Advanced Programming: 1 programming question (45 mins)
  • Subjective section: 2 questions (15 mins)

Each MCQ earned 5 marks for a correct answer and -2 for an incorrect one. To be shortlisted, I needed to clear the cutoff in at least three sections, including a CGPA consideration. I performed well in both multiple-choice sections and solved one question in the coding section. The subjective section included questions about what inspires me to complete a project and how I would handle a teammate having problems on a project. I'm fairly certain I cleared the cutoff in both MCQs and likely the subjective section.

Round 2: Technical Interview 1

This round started with a brief introduction, after which the interviewer asked me to describe one of my projects. The discussion, lasting about 10-15 minutes, focused more on my inspiration and the practical application of the project rather than deep technical details. He seemed really impressed.

Next, he asked me about data structures and algorithms I found useful or elegant. I mentioned segment trees for range queries, giving the example of finding the Lowest Common Ancestor (LCA) in a binary tree. This led to a specific problem related to LCA.

I presented the Euler traversal approach combined with a segment tree, which allows O(N) preprocessing and O(logN) query time for each LCA. He asked me to implement the solution and explain the process with a dry run using an example binary tree. I wrote the DFS code and explained how the euler, depth, and first_time arrays would be populated, which satisfied him.


void dfs(int k,int d)
{	
	first_time[k]=timer;
	euler[timer++]=k;
	depth[k]=d;
	vis[k]=1;
for(int i=0;i<adj[k].size();i++)
{
	if(!vis[adj[k][i]])
	{
		dfs(adj[k][i],d+1);
		euler[timer++]=k;
	}
}

}

I then explained how I would build the segment tree to find the node with the minimum depth in any given segment, making each LCA query (of a and b) a simple query on the segment {first_time[a], first_time[b]}. The interviewer was really impressed but surprisingly asked for further optimization. I suggested using a sparse table instead of a segment tree, trading off preprocessing time for O(1) query time (O(N logN) preprocessing). He still pushed for more optimization, which I found challenging after reaching O(1) query time.

Round 3: Technical Interview 2

This round also began with a 10-15 minute discussion on the same project, covering its functionality and similar points as the previous interview.

Following the project discussion, he posed two more questions related to number manipulation and scheduling.

For the 'next smallest number' problem, I proposed a solution involving a queue. For the 'minimum platforms' problem, I initially suggested an O(N logN) solution using two pointers after sorting. When prompted for a data structure, I adapted it to use a double queue.

Finally, I received the offer!

Interview Questions (3)

Q1
LCA of K Nodes in a Binary Tree
Data Structures & Algorithms

Given k nodes in a binary tree, find their lowest common ancestor (LCA).

Q2
Next Permutation (Next Smallest Number with Same Digits)
Data Structures & Algorithms

Given a number, find out the next smallest number formed by the same digits, greater than the original number.

Q3
Minimum Platforms for Train Station
Data Structures & Algorithms

Given the schedule of a train station (the arrival and departure time of several trains), find the minimum number of platforms required at the station.

Preparation Tips

My preparation involved a strong focus on data structures and algorithms. I practiced problem-solving, which helped me not only develop solutions but also articulate my thought process clearly during the interviews. Additionally, I spent time thoroughly understanding and being able to discuss my personal projects, especially their inspiration, practical applications, and high-level design.

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!