Goldman sachs || Associate || Rejected

goldman sachs logo
goldman sachs
associate3 yearsRejected
November 30, 202438 reads

Summary

I recently interviewed for an Associate role at Goldman Sachs, undergoing four rounds focused on coding, data structures, and software engineering. Despite my efforts in solving most problems, including some LeetCode questions and a System Design LLD, I was unfortunately rejected after the third round.

Full Experience

I have over three years of experience at a product-based finance MNC. Recently, a recruiter reached out to me for an Associate role at Goldman Sachs, and I went through a total of four rounds.

OA Round

The Online Assessment was conducted on Hackerrank and featured two easy to medium-level questions. I managed to solve both well within the two-hour time limit.

First Round (Coderpad)

This was a one-hour round, starting with introductions. I was then asked two coding questions, typically one medium-hard and one medium DSA question.

  1. The first question was Target Sum. I initially presented a brute-force exponential solution and then optimized it using top-down DP to achieve O(n*sum) complexity. However, the interviewer was expecting a more optimized solution which I couldn't find in time, so I coded the O(n*sum) version.
  2. The second question was a variation of Remove One Element to Make the Array Strictly Increasing, where instead of removing one element, we could delete one subarray. We only had time to discuss the approach, not to code it.

Superday Interviews

I attended the Superday rounds while running a fever because I only had one month left in my notice period, and I had heard that GS typically takes about a month to release an offer letter. I felt my concentration was a bit lacking due to the fever. I'm unsure if it was a bad decision or part of a larger plan, but it's a good reminder to be mindful when scheduling your Superday.

Second Round (Data Structures)

This was another one-hour round with a panel of two interviewers. After introductions, they asked two coding questions:

  1. Given a map<child, parent> representing graph edges, I had to find the root of the tree with the maximum number of nodes. I proposed a solution with O(E) time and O(min(V,E)) space, but the interviewer hinted at further optimization. Due to time constraints, I coded my O(E) solution, but I mistakenly returned the maximum number of nodes instead of the root itself, which she pointed out at the end of the interview.
  2. The second question was Sliding Window Maximum, which was a known problem to me. I started with a brute-force O(n*k) solution and then optimized it to an O(n) approach using a sliding window. I struggled a bit with running and debugging, but the second interviewer was friendly and gave me a couple of extra minutes, allowing me to successfully run the code.

Third Round (Software Engineering Practice)

This was also a one-hour round with two interviewers, starting with introductions from both sides. They asked the following questions:

  1. Given an array, I needed to return true if there exists a triple of indices (i, j, k) such that i < j < k and nums[i] < nums[k] < nums[j], otherwise return false. I began with a brute-force O(n^3) solution, then optimized it to O(n^2). The interviewer expected further optimization, which I couldn't provide. I coded the O(n^2) solution, and although it failed initially due to a negligible check, which I pointed out, he seemed satisfied.
  2. The second interviewer, who was very experienced, asked me to perform a Low-Level Design (LLD) for SnakeLadder. I wrote a few classes and also implemented the game logic for playing. He was almost satisfied but mentioned it wouldn't work in a distributed environment and was expecting the logic to be implemented in an event-driven manner, which I couldn't grasp at the time. I regret not asking for more clarification on his exact expectations.

There were two more rounds scheduled: 'Software Design and Architecture' and 'Hiring Manager Round', but I was rejected after the 'Software Engineering Practice' round, which I didn't expect.

Later, I thought about how the SnakeLadder LLD could be done in an event-driven, distributed environment. One solution that came to mind was using a choreography design pattern where events are published to Kafka topics. A service (e.g., diceService, boardService, or gameService) would pick up an event, process it, and publish the next event to another Kafka topic that the subsequent service is listening to. This could be achieved using libraries like KStream, or even a single Kafka topic by segregating different events based on Kafka headers. I couldn't think of distributing this small piece of code during the interview.

I did not receive any feedback despite trying to get it via email and calls to HR.

I hope this experience helps others in their preparations. All the best, champs!

Interview Questions (6)

Q1
Target Sum
Data Structures & AlgorithmsMedium

You are given an integer array nums and an integer target. You want to build an expression out of nums by adding one of the symbols '+' or '-' before each integer in nums and then concatenate all the integers. Return the number of different expressions that you can build, which evaluates to target.

Q2
Remove One Subarray to Make Array Strictly Increasing
Data Structures & AlgorithmsMedium

A variation of the LeetCode problem 'Remove One Element to Make the Array Strictly Increasing'. In this variation, instead of removing a single element, the task is to determine if the array can be made strictly increasing by deleting exactly one subarray.

Q3
Find Root of Largest Tree in Forest
Data Structures & AlgorithmsMedium

Given a map<child, parent> representing graph edges (implicitly forming a forest of trees), find the root of the tree that has the maximum number of nodes.

Q4
Sliding Window Maximum
Data Structures & AlgorithmsHard

You are given an array of integers nums, and there is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the sliding window moves right by one position. Return the maximum sliding window.

Q5
Find Triple with Specific Order
Data Structures & AlgorithmsMedium

Given an array, return true if there exists a triple of indices (i, j, k) such that i < j < k and nums[i] < nums[k] < nums[j]; otherwise, return false.

Q6
SnakeLadder LLD (Distributed)
System DesignHard

Design a Low-Level Design (LLD) for the SnakeLadder game. The interviewer was specifically looking for an event-driven design that would work effectively in a distributed environment.

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!