Anushka Verma

Jun 23, 2021

9 min read

Goldman Sachs Interview Experience (off-campus)

Company: Goldman Sachs
Position: Analyst
Location: Bengaluru, India
Mode: Engineering Campus Hiring Program (Off-campus)
Year: 2021

Recently, I went through the Engineering Campus Hiring Program (ECHP) conducted by Goldman Sachs. Through this article, I would like to (extensively) share my experience with this program, the selection process, as well as some preparation tips. Due to the Covid-19 pandemic, the entire process was carried out virtually.

About the Company:

Not that the company requires any introduction, The Goldman Sachs Group, Inc. is an American multinational investment bank and financial services company headquartered in New York City. It is a leading global financial institution that delivers a broad range of financial services across investment banking, securities, investment management, and consumer banking to a large and diversified client base.

Application Process:

Every year, Goldman Sachs conducts the Engineering Campus Hiring Program, an off-campus drive (PAN India) to hire Engineering graduates and postgraduates for the position of Analyst/Summer Intern for their Bengaluru office. The hiring process begins with interested candidates submitting an application on the company's portal sharing their particulars — education details, work experiences, skills, resume, etc. — and primarily consists of 1–2 online screening rounds(aptitude & technical) followed by the interviews.

Assessment 1: Aptitude Test

The first assessment was conducted over Hackerrank, for a duration of 1 hour 30 minutes with 66 questions spread across 6 sections (all mandatory) divided as follows:

  • Numerical Computations — 8 questions
    Difficulty: Medium-Hard
    Topics: Mathematical questions based on Algebra, Percentage, Probability, Ratio, and Proportion, Permutation and Combination, Profit and Loss, etc.
  • Numerical Reasoning — 12 questions
    Difficulty: Medium
    Topics: Time and Work, Speed and Distance, Alphanumeric Series, Odd One Out, Puzzles, Insert the Missing Number, etc.
  • Comprehension — 10 questions
    Difficulty: Easy
    Topics: 2 passages with 5 questions each
  • Abstract Reasoning — 12 questions
    Difficulty: Medium
    Topics: Non-verbal Analogy, Cubes, Counting number of Triangles, Pattern Solving, etc.
  • Diagrammatic Reasoning — 12 questions
    Difficulty: Easy-Medium
    Topics: Paper folding/cutting, Images with partial values, Missing Values, Flowchart, Circuit Diagram, Moving Cubes, etc.
  • Logical Reasoning — 12 questions
    Difficulty: Easy-Medium
    Topics: Situations, Puzzles, Data Interpretation, Direction Sense, Seating, Data Arrangement, Coding-Decoding, etc.

*For every MCQ -> +5 marks for the correct answer; -2 for incorrect answer

Tip: Timing is crucial! Speed and accuracy play a huge role in this round. Practice logical reasoning questions and revise numerical concepts. Also, with the questions being tricky and lengthy, you will not be able to attempt and solve all the questions in the given time limit, so be smart and vigilant in selecting the sections you want to prioritize to give yourself the best shot at clearing this round.

Assessment 2: Technical Test

Some 3 weeks later, I was informed that I had qualified for the next assessment (technical test) — arranged after another 10 odd days. Along with the schedule, a structured syllabus (detailed list of several important topics), the pattern of the test, and two-sample tests were also shared.

This assessment, also conducted over the Hackerrank platform, was for a duration of 2 hours 15 minutes with 20 questions spread across 5 sections (all mandatory) divided as follows:

  • Coding — 2 programming questions (30 mins)
    Difficulty: Medium
    Topics: Arrays, Graph
  • Computer Science — 7 MCQs (20 mins)
    Difficulty: Easy-Medium
    Topics: OS, OOPs, DSA (primarily output questions)
  • Quantitative Aptitude— 8 MCQs (25 mins)
    Difficulty: Medium-Hard
    Topics: Math-related (similar to CAT Aptitude questions)
  • Advanced Programming — 1 programming question (45 mins)
    Difficulty: Hard
    Topics: Binary Tree & Array-based
  • Subjective — 2 question (15 mins)
    Difficulty: Easy
    Topics: HR/situational(essay-type) questions with a 200-word limit each.

*For every MCQ -> +5 marks for the correct answer; -2 for incorrect answer
*Unlike the aptitude test, the technical test had a sectional time limit with an option to revisit an earlier section after having moved past it.

Although not revealed at the time, the criteria for clearing this assessment was to pass at least 3 of the 6 sections (considering CGPA as a 6th section). I was able to attempt most of the MCQs (in 2 sections) and the coding questions in section 1 fairly well, along with both the subjective questions. However, I could not completely solve the advanced programming question (partially correct).

Tip: Make sure you are thorough with fundamental Computer Science concepts — OOPS, OS, DBMS, and DSA. Attempt only those questions you’re confident about to avoid any negative marking. Guessing will not be worth the risk! Do practice the sample papers available on HackerRank. Try to write effective answers for passage-based questions, preferably with real-life examples.

Assessment 3: Interviews

A few days later, I received an email stating that I had cleared the technical assessment and my virtual on-site round (panel interviews) would be scheduled in the upcoming week (later postponed by 15 days). All my interviews were conducted on the same day with Zoom as the video-conferencing platform.

Round I:
Duration: 30-45 minutes
Platform: Zoom | Hackerrank Codepair
As the first round commenced, the interviewer gave a quick introduction and went straight to asking questions (probably because there were some network issues for the first couple of minutes). To begin with, the interviewer asked me a few Java conceptual questions(based on classes-objects, and strings). I answered all the questions to the best of my knowledge but lacked confidence (as my primary coding language was C++). I shared the same with the interviewer and he gladly moved onto the next phase of the interview — DSA.

I was presented with a scenario revolving around students' data and asked to design an algorithm to efficiently store, manipulate and perform various operations on it. I shared some approaches before reaching the most optimal one. Due to the lack of time, the interviewer had to end the call before I could write the code for the same. As I was redirected to the post-interview breakout room, my imposter syndrome crawled up on me and my confidence level dropped. I felt as though my journey was over. But not quite yet!

Round II:
Duration: 60–75 minutes
Platform: Zoom | Hackerrank Codepair
After anxiously waiting for almost 3 hours, my second round began in the afternoon. This interviewer was friendly and made me feel relaxed from the get-go! He introduced himself and asked me to do the same. Having mentioned my area of expertise as web development, he asked me about my preferred stack and we had a lively discussion about it(client-side and server-side languages, reasons for choosing my particular stack, etc).

Then, he moved onto Data Structures questions. The first question was an easy one — calculate the number of ones in a binary row sorted matrix. I started with the brute force solution first, then quickly went on to share the optimal approach. To my benefit, I was confident in explaining the solutions and was able to answer the question in less than 5 minutes along with the code (although I was only asked to write a pseudo-code).

Next, he asked me to solve another DSA question, a tougher one this time. I don’t remember the exact question but it included the concept of BFS and 2-D arrays. Initially, I struggled with this one, but luckily, the interviewer was very understanding and gave me hints pointing me in the right direction which helped me in solving the question!

Moving on with the interview, he then asked me a couple of basic OOPs questions(encapsulation, inheritance, etc.). Circling back to web development, he grilled me on some key react concepts — the difference between hooks and class-based components, why are hooks better, the advantage of using React over other client-side libraries, why is React faster, react virtual-dom, and a few more. Having in-depth knowledge about React benefitted me here and I was able to explain all the questions comfortably!

Although I feel that I could have framed my answers in a better way, I still believe my second round went way better than the first. The interview then allowed me to ask him questions if I had any, and we had a small discussion that concluded the interview.

Round III:
Duration: 45–60 minutes
Platform: Zoom | Hackerrank Codepair
Not knowing what else to expect in the day, I kept waiting and after an hour or so, I was called for the third and final round of the day. Again, the interviewer was considerate and made me feel at ease. He gave a quick introduction and inquired about my earlier two rounds, a good light talk to make me comfortable, followed by my introduction. He quickly moved onto my resume and asked me a couple of questions before asking me to describe my best project in detail (a web application that I am currently working on as a freelancing project). Luckily, I had prepared well for it and elaborately explained every aspect of it. The project discussion went on for a few minutes with the interviewer keenly asking me questions regarding the project as well as web development.

Following the discussion, he presented me with a DSA question — the easiest one I could have imagined! Implement a stack using queues! I quickly shared my approach, the complexity as well as the code. He seemed to agree with the approach I had proposed. Next, my core subject knowledge was put to the test as I was quizzed on DBMS. The questions revolved around Indexing, B & B+ Trees (explanation, differences, complexity, usage), SQL, NoSQL, etc. This was a very in-depth discussion. Not only did he ask me about the complexity of a B+ Tree, but only wanted me to explain the logic behind the base of the logarithmic function!

Then came some generic questions on Hashtable and Hashmap (differences, complexity, etc.), hashing, hashcode(what, why, how, complexity), collisions(explanation, types), and other similar questions. I answered almost all the questions correctly and took a calculated guess in a couple (the collision resolution technique used in the internal implementation of hashmaps in Java!). It seemed to me that the interviewer was satisfied! He then gave me a few minutes to answer my questions for him before wishing me good luck with the results.

And this concluded the interviews. I waited for another half an hour or so before the HR team informed us to expect the results in the upcoming week. The entire hiring experience was very well arranged and smoothly conducted.

Tip: Practice explaining problem-solving coding questions from brute force to an optimized approach. Participate in mock interviews. Go over core computer science concepts. While interviewing, follow good coding practices such as keeping meaningful variable/function names, proper indentation, etc. Present yourself in a confident demeanor.

Result: SELECTED :D

Almost a week later, I received a congratulatory mail from the HR team informing me that I had been selected for the role! A gamut of emotions went through me as I re-read the email multiple times in disbelief! I was on cloud nine! It was a roller-coaster ride, to be honest, but, undoubtedly, a sublime learning experience!

Helpful Suggestions:

  • Be thorough with your Resume: Devote sufficient time in building your resume and make sure you can backup whatever you put on it— don't try to overachieve! It creates an unfavorable impact when you don’t have a comprehensive grasp of something mentioned on your resume. Prepare well for questions related to your projects.
  • Think Aloud: Communication is key! Keep interacting with the interviewer about the approach you are thinking of. Walk them through your thoughts. If you can’t come up with any solutions, don’t freeze, simply request the interviewer to nudge you in the correct direction.
  • Do your research: Do a comprehensive study about the company and prepare basic points that you can use for frequently asked behavioral questions beforehand. [“Why do you want to work with us?”, “Why should we hire you?”, etc.] Use the question “Do you have any questions for me?” as an opportunity to show your interest in the job and develop a bond with the interviewer.
  • Quote from real-life situations: Whenever presented with the opportunity, give references to real-life scenarios that you have come across to establish your credibility and showcase your passion.

Useful resources:

My final two cents worth of advice — Interviews are not just about LeetCode and Data Structures. You will also be tested on your knowledge of core Software Engineering skills. Instead of leetcoding haphazardly, make sure to brush up on fundamental coding concepts and work on your soft skills. Always be assertive honest and have complete confidence in your abilities.

Thank you for reading about my experience! Hope it helped you out. For any further queries, feedback or guidance, feel free to comment or connect with me over LinkedIn and I will be glad to help you out the best way I can.
Good luck! :)