In October 2024, I had the opportunity to interview for a Software Engineer role (3+ years of experience) with the Controllers team at Goldman Sachs. The application was submitted in 2023, and the process involved multiple CoderPad rounds, where I wrote and executed code in Java.
Round 1: HackerRank Test (1.5 Hours)
- Number Checker - Solution Link
Round 2: Problem-Solving CoderPad Round
- First Unique Character in a String - Problem Link
Round 3: DSA 1 and Low-Level Design (LLD)
- Stock Buy and Sell - Max One Transaction - Problem Link
- Stock Buy and Sell - Max Two Transactions - Problem Link
Low-Level Design: Card Payment Processing Service
Task: Design a real-time fault-tolerant payment processing system with multiple banking partners.
Proposed Solution:
System Flow: UI → App1 (Request Handler) → App2 (Bank Integrations/DB) → Cache/Database.
Payment Interface:interface PaymentProcessor {
boolean processPayment(String cardID, double amount, String receiverUserID);
}
class PaymentProcessorImpl implements PaymentProcessor {
BankServicing bankService;
@Override
public boolean processPayment(String cardID, double amount, String receiverUserID) {
validatePayment();
bankService = getBankService(bankName);
return bankService.processTransaction(cardID, amount, receiverUserID);
}
}
boolean processPayment(String cardID, double amount, String receiverUserID);
}
class PaymentProcessorImpl implements PaymentProcessor {
BankServicing bankService;
@Override
public boolean processPayment(String cardID, double amount, String receiverUserID) {
validatePayment();
bankService = getBankService(bankName);
return bankService.processTransaction(cardID, amount, receiverUserID);
}
}
Key Challenges Discussed:
Making APIs real-time and fault-tolerant when App2 experiences downtime.
Round 4: DSA 2
Minimum Number of Platforms Required - Problem Link
People Knowing Each Other
Task: Given n people and a list of pairs (a, b) where a knows b, find:
- The number of pairs who do not know each other.
- If
xknowsyandyknowsz, thenxalso knowsz.
Round 5: DSA 3 and Low-Level Design
Lake Counting on a Grid
Task: Write a service to determine the number of lakes present on an island based on any grid coordinate.
Challenge: Unable to come up with a complete approach for this LeetCode Hard problem.
Low-Level Design of Stock Trade Exchange
Final Verdict
I successfully cleared all rounds except Question 1 in Round 5, where I struggled to provide a complete solution. Despite expecting leniency for the complexity of the problem, I was rejected after this round.
Verdict: Disqualified
Takeaways
While I couldn't secure the role, the interview process was a valuable learning experience, especially in tackling real-time system design and complex DSA problems. It highlighted the importance of being well-prepared for edge cases and advanced scenarios.