![]() |
VOOZH | about |
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.
Low-Level Design: Card Payment Processing Service
Task: Design a real-time fault-tolerant payment processing system with multiple banking partners.
System Flow: UI → App1 (Request Handler) → App2 (Bank Integrations/DB) → Cache/Database.
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);
}
}
Making APIs real-time and fault-tolerant when App2 experiences downtime.
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:
x knows y and y knows z, then x also knows z.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
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
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.