Rippling Senior SWE Phone Screen (Reject)
Summary
I had a phone screen for a Senior SWE role at Rippling. I was given two coding problems related to a delivery cost service, which I believe I solved correctly and with valid optimizations, but ultimately received a rejection.
Full Experience
YOE: 6 years
Location: Bay Area
Part 1 – Basic Implementation
Problem Statement:
We are given a list of drivers and the deliveries they are making. Implement a service to compute the total cost of all deliveries. The service should expose three methods:
addDriver(driverId)
addDelivery(startTime, endTime)
getTotalCost()
Key Points:
getTotalCost() needed to run in optimized time.
I optimized by computing and maintaining the total cost at the time of adding the delivery (instead of recalculating each time getTotalCost() is called).
Result:
The interviewer tested against custom test cases → all passed.
He confirmed my optimization approach was valid.
Part 2 – Payment Functionality
New Requirements:
Add two new functionalities:
payUpToTime(upToTime) → settle the delivery cost up to this time.
getCostToBePaid() → get the remaining delivery costs left after settling the payment.
My Approach:
Did I mess up here? I suggested we store the intervals for each driver and when payUpTo is called, loop over the intervals, sum up the costs and mark intervals as paid up. I explicitly asked my interviewer that this loops over all entries and if i should think of a more optimal solution, to which they said this is fine and asked me to implement
Then: costToBePaid = totalCost - paidCost
Result:
Tested with interviewer’s test cases → all worked as expected.
Final Result: Got a reject. What should I have done differently here?
Interview Questions (2)
Implement Delivery Cost Service
We are given a list of drivers and the deliveries they are making. Implement a service to compute the total cost of all deliveries. The service should expose three methods:
addDriver(driverId)
addDelivery(startTime, endTime)
getTotalCost()
Key Points:
getTotalCost() needed to run in optimized time.
Extend Delivery Service with Payment Functionality
Add two new functionalities:
payUpToTime(upToTime) → settle the delivery cost up to this time.
getCostToBePaid() → get the remaining delivery costs left after settling the payment.