How I cracked the internship interview for Goldman Sachs 2021
Every year, Goldman Sachs runs it’s Engineering Campus Hiring Program, an off campus drive for their Bengaluru office. This year the applications opened from mid-July for about 3 weeks.
Here, I am (extensively) sharing my own experience with this program, the entire selection process and also some tips and suggestions which worked for me. Hope this helps you as much as possible!
Aptitude Test
The application will ask you for your basic details and a resume (which you can update later when needed). Their first assessment was an Aptitude Test which took place on 9th August. It was for a duration of 105 minutes with 68 questions divided as follows:
- Numerical Computations — 8 questions
- Numerical Reasoning — 12 questions
- Comprehension — 10 questions
- Abstract Reasoning — 12 questions
- Diagrammatic Reasoning — 12 questions
- Logical Reasoning — 12 questions
- Subjective — 2 questions
All these MCQ questions had 5 marks for correct answer and -2 for incorrect. The subjective questions had 10 marks each.
Tip: I could solve around 40 questions in total as I was confident about those answers. It will help you to practice such kind of problems beforehand to build up good speed and accuracy. They can be found online with a simple Google search, you can also look for CAT questions as they are somewhat similar. You will not be able to go through and answer all the 68 questions in the given time limit, so be smart in choosing the sections you want to solve first and think will give you the maximum score. Also, please do not skip the subjective questions as they are easy, general questions with high score and no negative marking.
Technical Test
Around two weeks later they announced that I have cleared the first round. Next step was the technical assessment scheduled for 26th September. GS provided us with a general syllabus and pattern of the test. It had 5 sections with total duration of 2 hours 15 minutes.
Section 1: 2 programming questions— 30 mins.
Both questions were of easy to medium level. One of the questions had a given N number of chains, with links which could be opened or closed. The number of links in all N chains were also given. You had the find out the minimum number of links to be opened and closed to join all N chains together. So suppose you are given 2 chains of length 3 each, you can open the last link of the first chain and connect it with the first link of the second chain. So the output should be 1 for this case. I can’t recollect the other question properly as I didn’t get much time for this section :( .
Section 2: Problem Solving 8 MCQs — 20 mins.
These questions were all related to mathematics. Some of the topics were probability, number theory, set theory, algebra and logical reasoning. All questions will be unknown to you and with such a vast range of topics, it’s best to just brush up on some basic formulae and practice some questions available on the internet. I could solve around 4 of these.
Section 3: Computer Science 7 MCQs — 25 mins.
This section had questions on data structures (many about heaps), algorithms (like quicksort, binary search), operating systems (process scheduling), etc. They were all just the basics you study in college DSA lectures, but lengthy to implement in such a short time. Keep your basic DSA knowledge strong, practice the dry-run of all the basic algorithms and this part will be easy for you. Here too I could solve around 4 questions.
Section 4: 1 advanced programming question — 45 mins.
This question would require knowledge of some advanced DSA. The question said a lot of things, but in short it was asking to find out all the cut vertices of a given graph. Graphs is a data structure I struggle with a lot, but I had prepared only the basic graph algorithms and I could complete the question using the concept of DFS. The test was on the HackerRank platform and you would get marked according to the number of test cases you pass.
Section 5: 2 subjective questions — 15 mins.
This had pretty basic questions like describing the motivation behind something you achieved, and what would you do if your friend has to leave in the middle of an important project. There was a 200 word limit for each question. It helps to always give your personal examples to explain the points you’re making.
Tip: Considering CGPA as a section, you had to clear cutoff in at least three sections to be eligible for shortlisting. This means that if you have a very good CGPA, then clearing 2 sections in the test would also be enough. (This really helped me because my laptop had stopped working during the early part of my test, due to which I couldn’t attempt the first coding section as well as I could have, and I guess my CGPA saved me :P ) Having a good CGPA will always give you a better chance at off-campus recruitments. Again, don’t skip the subjective questions, and try to mark only the questions you’re sure about to avoid any negative marking. Guessing will not be worth the risk when you have worked so hard to reach here.
On 2nd October I was informed that I have cleared the technical assessment, and will be giving the interviews soon. To give you a background, I had no competitive programming experience before applying to GS (yes, “noob”). I have my interests in data science and have a few projects on it, an interesting one you can check out here. I could still crack GS by being very selective in my preparation, by approaching my seniors and people on LinkedIn to get any guidance I could possibly get, and of course, by consistently working hard for two months.
I started with reading all the past experiences of people interviewing at GS which you’ll find on GeeksforGeeks. After reading up all of it, you will get a very good idea about the kind of work you have to put in. You can also check out the company-wise questions on Leetcode and InterviewBit. I found InterviewBit to be better as it will show you a timer while you’re coding, which gives a good feel of the pressure you’ll face during interviews and tests. If you don’t have much prep time, then don’t give more than 1-2 hours to any particular question. Check the solution and try to fully understand the concept used, that’s what I did as many concepts were new to me. It is very important to cover a wider range of coding concepts instead of doing many questions of the same topic.
I was low on confidence a lot of times as I didn’t have any CP experience like all the others, but I have to thank Aditya Verma for helping me gain my confidence. Anyone can just memorize the solutions to a coding problem, but he will teach you the concepts behind it so well that you’ll never have to learn any code. I religiously followed all his videos and soon I saw myself solving coding problems which seemed complicated to me before, with a lot of ease. I will strongly recommend his channel to everyone reading this. Dynamic Programming is a very important concept asked by GS to almost everybody, and I can safely say that nobody can teach DP better than him. Also check out Striver’s SDE Sheet which you can follow as a 30 day routine to be ready for placements. It has problems to be solved daily which will cover all topics in a concise manner. Try to solve them without looking at the video solutions.
The Interviews
My interview was scheduled for 8th November on Zoom.
Round 1:
My first round took place at around 10 am, and my interviewer was very sweet and friendly. He started by introducing himself and then asked me to do the same. Then we discussed things like working on a Sunday, what web series I’d recommend to watch (as I had mentioned in my introduction that I like to binge-watch shows), a good light talk to make me comfortable. He then asked me what subjects I like in college so far. I mentioned Data structures and Algorithms from my previous semesters, then OOPS and DBMS from my ongoing semester.
He then asked me what is DBMS, and we discussed about a flight booking website like Google Flights, about how they would store the search activities of a user in order to give them email recommendations later on. He asked me how would I resolve any redundancy in storing such data for that website. The discussion went well, he seemed to agree on the idea I proposed.
Next he shared with me a HackerRank CodePair link. It’s just an online platform where we can see what code the other person is writing. There he asked me to write any algorithm to sort an array. So I wrote and explained the Quick Sort algorithm, along with it’s time complexities.
He then asked me the difference between an array and a linked list. Overall he was satisfied with all my answers and finally he asked if I had any questions for him.
Round 2:
After waiting for more than an hour, I had my second interview. He asked me for my introduction then immediately jumped to coding questions. Again, he shared the CodePair link and the first question was to find the maximum distance between two leaf nodes of a binary tree. For this I had written a recursive function and explained my logic. I had made a mistake in calculating the distance in one part, which then he gave me hints about and I was able to correct it.
The next question was that given an unsorted integer array, find the minimum number of elements you’ll move in the array to make it sorted. He gave me a few examples to explain what he meant, then I started speaking out loud about the approaches I could take. First I was thinking about sorting the array and then comparing it with the given one to find the answer, but then it struck me that this is a DP problem. I gave him the idea of finding out the longest increasing subsequence to get my answer, and he was satisfied with my logic. He then asked me to code just the DP logic which I did correctly.
The last question I was asked was a little tricky for me. Given some processes and the dependencies of those processes, how will you find out the order of execution? And which data structure would you use to store the dependencies? I understood that this would require a graph data structure, then I drew the graph in my notebook and tried DFS traversals on it to get the order. I wasn’t able to get the correct answer, but my interviewer was so helpful, he pointed out that I should reconsider the way I have drawn my graph. So then I made a few changes after which I realized it’s a topological sort problem. So I immediately explained him the logic of using a stack with DFS, and he was happy. He didn’t require the code for it so with this my second interview was over.
Round 3:
Again after a long wait I had my third round of interview. He first asked me how my previous interviews went, then for my introduction and what my projects were about. Then he asked me a problem, that given a positive integer how will you find its square root up to 5 decimal places. I was asked to work out some logic on paper, and I took quite some time in figuring out an optimal solution. He gave me hints about using binary search but I still got stuck at a later point. After giving me a minute he decided to move on. He asked if I had attended their pre-placement talks which were held on Zoom about a month ago and if I had any questions from that session. That discussion went on for a few minutes and then my interview was over.
Some more helpful tips:
- Many other students who gave the interviews were asked about their projects in detail, so make sure you only put those things on your resume which you can explain very clearly. Just keeping 2 good projects are enough instead of mentioning10 small projects. Know those 2 projects well. Just keep your resume HONEST.
- Goldman Sachs interviews are famous for asking puzzles. Just a day before your interview, read up on all the puzzles given here, and I feel that’s more than enough. Revising on basic probability and math can also be helpful if you have the time. Your questions totally depend on the interviewer and it’s best to be prepared for everything.
- Do prepare on CS theory subjects specially if you are from CSE branch. Having basic knowledge of OOPS, DBMS and OS is important along with knowing some practical applications. For DBMS I found Knowledge Gate videos to be helpful (play at 1.5x speed, trust me). For OS and OOPS, the various articles on GeeksforGeeks are all you’ll need.
- First impression matters. So take some time to prepare your introduction as that is the first thing they will hear from you. GS likes smart and trustworthy people, so present your introduction well, and be completely honest about your personality.
- Don’t panic when you get stuck. I know it’s easier said than done. The best way to make it better is to practice mock interviews with any teacher or senior (I will not suggest friends XD). Practice your introduction and basic HR questions in front of the mirror regularly so that you don’t stutter on the final day. If your interview will be virtual, do practice mock coding interviews with others by sharing your screen, specially if you don’t have the habit to actually type code on screen. (It’s just a lesson I learnt while giving the interview for another very good company a few days before GS. That failed interview really taught me how to perform better for GS interviews so please follow this point well.) Obviously, follow good coding practices like keeping good variable/function names (not just a, b, c, etc.) and indentation.
- Coding in interviews is very different from competitive coding. So whenever you solve a coding question during your preparation, always think out loud. It is best to start with the brute-force solution. Practice writing the code on paper if there’s a face-to-face interview, or type if it’s virtual, and talk to yourself through the logic. Then gradually try to improve the time and space complexities. When you keep up this practice you’ll notice that your communication will improve to a great extent. It’s extremely important to communicate well with the interviewer because along with your code accuracy they also care about your thinking process, and will always give you hints when you’re stuck.
- Reach out to as many people as you can. LinkedIn is a great platform to find employees of the company you’re aiming for, so check out their profiles and connect with them to get to know the kind of people they hire. Do good research about the company and it’s latest news. If you know your interviewer beforehand then get to know more about their work and show it during your interview that you’ve done your research and how you share their interests.
- It is important to ask good questions to the interviewers in the end. Please do not ask things like how much will you earn, what is the culture and other generic questions. Listen to their introduction and ask them anything you found interesting in it. Ask about their own experience at the company, or anything which caught your eye in the pre placement talks. Basically make sure to show that you’re a good listener and you’re excited to work with them.
I felt happy with my performance that day. I couldn’t solve the last question completely but I never lost my confidence. I was overwhelmed when I received the congratulations mail from GS on 18th November :)
Everything you’ll ever need to crack such interviews is already available online. What is required from your end is only consistency, hard work, and a positive mind.