Goldman Sachs | Analyst | 1.5 YOE | Hyd/Blr | Feb 2025
Summary
I interviewed for an Analyst position at Goldman Sachs, navigating through several technical and behavioral rounds, including online assessments, coding challenges, system design, and a hiring manager discussion, ultimately receiving an offer.
Full Experience
I have 1.5 years of experience as a backend Java developer at an Indian fintech company and applied for this role through a referral.
Round 1 - Online Assessment
I don't recall the exact questions, but there was one easy and one medium-level problem which I successfully solved. Shortly after, the recruiter contacted me to gather information about my current CTC and notice period, indicating my profile was being forwarded. A few days later, I received an email to schedule a Coderpad round.Round 2 - Coderpad
I was presented with two coding problems: String Compression and Trapping Rain Water. For the first problem, I explained my approach and immediately started implementing it. For the second, I discussed both the extra space and constant space approaches before implementing the latter. I executed my code against several test cases, including additional ones provided by the interviewer, which required me to handle some corner cases for the first problem. The very next day, the recruiter called to schedule a Superday.Superday
My Superday consisted of three 1-hour interviews, each with a 30-minute break.Round 3 - Data Structures
Two interviewers were present. Each asked one question: Group Anagrams and Count Good Nodes in Binary Tree. For the first problem, the expectation was to provide an optimized working solution that passed test cases. For the second, we performed a dry run with some test cases. The first interviewer also interspersed questions about APIs and databases, such as how to fetch 1GB of data using REST APIs.Round 4 - Software Engineering Practices
This round involved questions on Java Interfaces and the Spring framework. I also spent about 45 minutes on a Low-Level Design (LLD) for a Payment Gateway Service.Round 5 - Software Design and Architecture
I was asked to design an LRU Cache and convert a number like 1234 into words (e.g., 'one thousand two hundred and thirty-four').Round 6 - Technical Round
This round covered Java concepts like the difference betweenString == and equals(), String immutability, and how to make a class immutable. There was also a SQL query problem which I solved using GROUP BY and HAVING clauses. Finally, I had to design the backend of an employee details form, explaining Spring Boot features (controller, service, repository classes) and the APIs.Round 7 - Hiring Manager
This was a quick 20-25 minute call where the HM asked about my reasons for leaving my current company after 1.5 years and my interest in Goldman Sachs. He described the team and tech stack. The call concluded positively, with him expressing his desire to have me join the team as soon as possible. The HR verbally confirmed my selection, and I am currently awaiting the official offer letter.Interview Questions (14)
String Compression
Given an array of characters chars, compress it using the following algorithm: Begin with an empty string s. For each group of repeating characters in chars, append the character followed by the count of its repetitions to s. If the count is 1, don't append it. After compressing, chars should be modified in-place to contain the first k characters of s, where k is the new length. Return k.
Trapping Rain Water
Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it can trap after raining.
Group Anagrams
Given an array of strings strs, group the anagrams together. You can return the answer in any order. An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.
Count Good Nodes in Binary Tree
Given a binary tree root, a node X in the tree is 'good' if in the path from the root to X (inclusive), there are no nodes with a value greater than X. Return the number of 'good' nodes in the binary tree.
Fetch Large Data via REST APIs
Explain how to efficiently fetch a large dataset (e.g., 1GB) using REST APIs, considering potential issues like memory, network latency, and response times.
Design a Payment Gateway Service (LLD)
Provide a Low-Level Design (LLD) for a Payment Gateway Service, detailing components, APIs, database schema, and interactions.
Design LRU Cache
Design and implement a Least Recently Used (LRU) cache. The cache should support get and put operations with O(1) time complexity.
Convert Number to Words
Implement a function that converts a given integer (e.g., 1234) into its English word representation (e.g., 'one thousand two hundred and thirty-four').
String == vs. equals() in Java
Explain the difference between == operator and the equals() method when comparing String objects in Java, including their use cases and underlying mechanisms.
Explain String Immutability in Java
Explain what String immutability means in Java, why Strings are designed to be immutable, and its implications.
How to Make a Class Immutable in Java
Detail the steps and best practices required to create an immutable class in Java, including final fields, no setter methods, deep copies, etc.
Design Employee Details Form Backend (Spring Boot)
Design the backend for an employee details form using Spring Boot. This involves implementing controller, service, and repository classes, and explaining the REST APIs for CRUD operations.
Why Leaving Current Company?
Explain your reasons for seeking a new opportunity and leaving your current company after 1.5 years.
Why Goldman Sachs?
Discuss your motivations and interest in joining Goldman Sachs specifically.