My interview experience with Goldman Sachs (Summer analyst 2021)

I recently received a summer internship offer from Goldman Sachs as a summer analyst. It was a roller-coaster ride, to be honest but, definitely a wonderful learning experience! Interviewing with such a renowned company and being able to grab the offer isn’t less than a dream come true. So today, in this blog, I will take you through my interview experience and a few tips that can be useful for you!

How I applied?

The First Assessment (Aptitude round)

There were 4–5 sections related to quantitative aptitude, logical reasoning, diagrammatic reasoning, verbal reasoning, etc. You can call it a full-fledged aptitude test that measures how well a candidate can think logically!

The Second Assessment (Technical round)

On 10th March I received a mail that I have cleared the aptitude round and now I will be having the technical round on 20th of March. There was not much time for the preparation so, I trusted my coding skills and tried brushing up CS fundamentals at least.

Later, the assessment was postponed to 21st March. It had 5 sections as follows:

Section 1: This section consisted of 2 coding questions to be completed in 30 minutes. One carried 20 marks (array-based question) and the other carried 50 marks (tree-based question).

Section 2: It consisted of some really good level of quantitative ability questions.

Section 3: This section had MCQs on CS fundamentals related to queue, hashing, banker’s algorithm, heap, etc.

Section 4: This section got the advanced question carrying 100 marks. It’s generally a graph or DP question.

Section 5: It consisted of two situational questions and we had to type in short answers to it.

Call for the Interview

I remember, on 31st March, while I was having an AIESEC meeting (because I am currently the Team Leader at AIESEC in Jaipur) with some Indonesian students, I accidentally checked my inbox and saw a mail from GS. And it read, I have cleared the assessment! The interviews will be scheduled in the upcoming week (any day between 5–9 April) and they will be sending me the exact date soon. This was insane and again, I got just 5–6 days to prepare.

I got a mail after a couple of days that my interview is scheduled on 6th of April.

The Interview Day

According to the mail, we would be having 1–3 rounds of interview on the same day and were supposed to join the zoom call at 10 am. I prepared myself and joined the call at 10 am sharp. There were around 50 candidates in the pre-interview breakout room. And for the interview, the candidate will automatically be taken to another breakout room where the interviewer will be waiting.

First Round

Then she asked me a puzzle. It was related to 3 jars with beads. One contained red beads, one blue beads and the other, a mixture of red and blue beads. However, all the jars were labelled wrong! I had to tell her the minimum number of beads I should pick to label the jars correctly. Here’s the puzzle: https://www.geeksforgeeks.org/puzzle-mislabeled-jars/. I answered it correctly.

Finally, she shared with me the HackerRank codepair link and asked me to solve the question she gave. I first tried to understand the question clearly. It was a string based question with alpha-numeric characters. Once I was sure that I am good to go, I started writing my code while explaining her my approach. I used a map (in C++) and kept the frequencies of the characters. And finally solved it smoothly (it was an easy question, btw). She asked me about how map works and I explained her the whole thing. Then, I ran my solution on the provided test cases and it passed all of them! She was happy and concluded the interview by asking if there’s anything I wanted to know from her.

Second Round

Now, there’s no fix time for your interviews. You can be taken to the breakout room anytime. So, you need to be in front of your laptop almost always (that’s exhausting, tbh). However, once I was done with my first round, I knew, it will take a minimum of an hour for my next interview. So, I relaxed a bit and had something to eat (perks of virtual interviews xD). I had no idea when will I be taken to the breakout room for my next round. Waiting was the hardest part!

Just when I was checking something on my phone, I was taken for my next round. It was around 3 pm. He was a cool interviewer and had been working with GS for around 2 years now. We introduced each other. Then he asked me to present my resume. He saw one of my projects on React.js and asked me: “What are the challenges you faced with React.js and what did you like about it?” I told him the challenges I personally faced while starting off with it and then, about React.js’s component-based approach and virtual DOM. He asked me to elaborate the concept of virtual DOM, to which I answered in details. He was impressed and then moved on to a coding question.

This was again a string-based question, rather a binary string. The question was Count number of binary strings without consecutive 1’s. I started thinking on it and kept telling him my approach. It’s a DP problem because the final result depends on the sub-problems. Also, it forms a fibonacci series. But, you can’t directly say it’s forming a series and we can add the results from the previous two iterations to get the result of this iteration as you have to prove it that how it’s fibonacci! So, better, go by logic and not just observation.

I generated a formula which could calculate the number of valid strings with n characters depending upon results of the sub-problems. And then, I implemented it. He was okay with it.

Then he tried pulling me into a discussion on Cyclomatic complexity and how, on the basis of it, we can improve my code. We had this discussion for some time and he told me the importance of taking Cyclomatic complexity into consideration as it makes it easy for others to read and understand your code. Finally, he asked me to prove, how my proposed solution is same as the fibonacci series and then, concluded the interview.

He was a very light and smiling interviewer. I didn’t have to be quite formal with him and it felt like discussing with a friend :P

Also, here are some more coding questions, from 1st and 2nd rounds, being asked to other candidates that I remember from my conversation with them:

  1. https://www.geeksforgeeks.org/the-stock-span-problem/
  2. https://www.geeksforgeeks.org/find-two-rectangles-overlap/
  3. https://leetcode.com/problems/longest-substring-without-repeating-characters/
  4. https://www.geeksforgeeks.org/check-if-two-nodes-in-a-binary-tree-are-siblings/
  5. https://leetcode.com/problems/move-zeroes/
  6. String based questions
  7. Binary search based questions

Final Round

We all people were having discussions in the breakout room about the questions being asked to them and who all are left with how many rounds. Till around 5 pm, very few (maybe just 2–3) had given their 3rd round and some were not even done with their 2nd round! I had absolutely no idea if I would be taken for the HR round or not.

It was already 6 pm and still I had not been called for the HR round. And guess what: I lied on the bed, opened Netflix and started watching a movie. That’s crazy, isn’t it? Suddenly, the Wi-Fi went off because of the power cut and I had to rely upon my dad’s mobile data because mine was on low battery :)

Again, suddenly, my movie started buffering because the mobile internet couldn’t connect to my laptop. And so, zoom call was left. I got scared because who knows, the same time I had been called for the last interview. So, I tried connecting my laptop with mobile data, but alas! it wasn’t working. It was a crisis and I had to take a decision and I thought of joining from my phone (with 8% battery!) for the time being.

But the ride doesn’t end here! The moment I joined back the zoom call, I was forwarded to my final interviewer. So, basically, I had to attend my final interview with a senior VP, through my phone, with literally 8% battery. And it was around 6.30 pm growing dark everywhere, including my room because of power cut.

I sat on my study table and opened up the window which threw the last remaining sun rays of the day. He then greeted me but before he could start, there was a network issue! He rejoined and asked me: “Why do you want to join as an engineering summer intern at GS”? I told him the reason of looking for an internship and then specified why GS. He then asked, what do I know about GS and also, how’s GS, as an investment banking company, different from other banks?

Then he asked me a math question. It was: how many factors does 19¹⁹ have? I told him my approach while thinking for it and gave him the answer.

Finally he asked me about hashing and what qualities a good hash function has? After this, he concluded the interview.

Thankfully, my phone could bear up the whole interview!

The Results’ Day

The next week, no updates came till Thursday. On Friday, 16th April, in the evening at around 7 pm, I was sitting on the terrace with my sister and scrolling by the Instagram stories when I came across a story of my friend congratulating another of my batchmate for cracking GS. I was shocked because I hadn’t received any update! And I knew, generally GS rolls out the selection mails first. I was scared and a lot of emotions were rushing in. I contacted others who were interviewed on 6th April and none of them had received anything. It was very confusing!

I kept checking my phone continuously and somewhere I felt, if they are rolling out the selection mails today then they will roll out the mails to all the selected candidates today itself. So, if no mail today, no selection mail later. And it was already 9.30 pm!

I called my friend at around 9.45 pm and informed her that most probably I haven’t been selected. However, she insisted to be positive and wait for the mail. Also, reminded me of our next day’s 8 am quiz :(

I put the call back, scrolled LinkedIn for a couple of minutes, clicked my inbox and refreshed. And, there it was, the much awaited mail from GS! It read, based on my performance at various levels, they would like to extend me an offer!

The fun fact is: When I was on call talking to my friend and informing her of my expected rejection, I already had received the mail :P!

Some resources that I followed!

  1. For CS fundamentals you can refer: https://www.geeksforgeeks.org/quizzes-on-computer-science-gq/
  2. For practicing coding questions keep doing Leetcode and GfG. And for interviews you can follow some specific lists like: Leetcode’s top interview questions, Striver’s SDE sheet (YT: take U forward) and GS specific questions
  3. For puzzles: https://www.geeksforgeeks.org/puzzles/
  4. Don’t forget to brush up your knowledge on data structures and algorithms
  5. For DBMS: either GfG articles or Knowledge Gate’s videos
  6. For OS: either GfG articles or Gate Smashers’ videos
  7. For OOPs: Beginners Book
  8. For answering the questions related to technologies I used in my projects, I went through top interview questions’ list on InterviewBit for the specific technology.
  9. Also, go through as many interview experiences as you can!

Wanna know anything else related to this? I’m happy to help. If you have any questions or just want to connect, reach out on LinkedIn.

Hope you enjoyed reading my experience and learned about the whole process! So, keep learning, stay happy and stay fit!

A learning enthusiast.