GS Associate Interview Experience | YOE - 2.3 years
Summary
I recently interviewed for an Associate role at Goldman Sachs, which involved several technical rounds covering data structures, algorithms, system design, and software engineering practices, based on my 2.3 years of experience.
Full Experience
My interview journey for the Associate role at Goldman Sachs consisted of several distinct rounds, meticulously testing my skills in various domains. I'm excited to share the details from my 2.3 years of experience.
Coderpad Round 1
This was my first coding assessment, where I was presented with two DSA questions:
- The first problem was an easier version of a Trie-based question, specifically focusing on implementing
insert(word)andcountWordsStartingWith(prefix)operations. The interviewer referenced this problem for context. - For the second question, I had to find the size of the largest connected component within a forest.
Coderpad Round 2
Following the initial coding round, I faced another set of two DSA challenges:
- I was tasked with implementing a custom class that would support two primary operations:
insert(num)to add a number to the data structure andisTopK(num)to determine if a given number is among the top K most frequent numbers present. - The second question involved finding the first non-repeated character in a string. We then delved into an important discussion about how to adapt this algorithm for very large strings that might not fit entirely into a single machine's RAM.
Software Engineering Practices 1
This round shifted focus towards practical software engineering knowledge:
- I was given a Java code snippet and my task was to identify any issues or bugs present within it.
- The interviewer then probed my understanding of how HashMaps work internally and questioned me on different types of exceptions in Java.
- A significant portion of this round was dedicated to a detailed discussion about my previous projects and contributions.
Software Engineering Practices 2
Building on the previous round, this one also focused on engineering practices, with a specific design challenge:
- I was asked to design a rate limiter. We engaged in a meaningful discussion about various approaches, and I specifically talked about the Leaky Bucket algorithm. Subsequently, I was asked to write a code snippet for its implementation. The discussion also included considerations on how to select appropriate leak rates and bucket sizes for the leaky bucket algorithm.
System Design Round
The final round was entirely dedicated to System Design:
- The discussion began with the Low-Level Design (LLD) of an oversimplified stock market system. This was a purely verbal discussion, with no coding involved.
- We then extended this LLD into a High-Level Design (HLD) for the same stock market, which led to discussions about transactions and locking mechanisms within databases.
- The round concluded with a thorough grilling of my resume, focusing on my experience and technical background.
Interview Questions (11)
Implement a Trie-like data structure that supports two operations: insert(word) to add a word to the trie, and countWordsStartingWith(prefix) to return the number of words in the trie that start with the given prefix. This is described as an easier version of a problem found at algo.monster/liteproblems/1804.
Find the size of the largest connected component in a given forest (a collection of disjoint trees or graphs).
Implement a class with two operations: insert(num) to add a number to the data structure, and isTopK(num) to check if a given number is among the top K most frequent numbers currently in the data structure.
Find the first non-repeated character in a string. Discuss how to extend the algorithm for very large strings that cannot fit into the RAM of a single machine.
Given a code snippet written in Java, identify and explain the issues present within it.
Explain the internal working mechanisms of a HashMap. Also, describe different types of exceptions in Java and when they occur.
A detailed discussion regarding my past projects and technical contributions highlighted in my resume.
Design a rate limiter. Discussed the Leaky Bucket algorithm in detail, including how to select appropriate leak rate and bucket size. I was then asked to write a code snippet implementing the Leaky Bucket algorithm.
Verbal discussion focusing on the Low-Level Design (LLD) of an oversimplified stock market system, without any coding required.
Extend the Low-Level Design of the simplified stock market to a High-Level Design (HLD). This involved discussions about transactions and locking mechanisms within the database.
An in-depth review and questioning based on my resume and professional experience.