Hey everyone.
I applied to a sde 2 opening in Rippling banglore location in ~May.
All rounds were on Hackerank code pair & Zoom.
Got an email from recruiter. Here is the procedure:
On hackerrank code pair.
The problem was like: given a list of transaction <from, to, amount>, I have to settle them and return who will pay whom, how much. (note: it did not ask me to find the most optimal way to settle like in Splitwise simplify balance feature).
I gave a solution, and coded it. I did it in Java to use Oops etc(as i use Java in my day to day job) but I practice DSA with c++. And it lead to multiple compilation errors, as I haven't used a lot of datastructures in Java. My suggestion will be to stick to one language for coding.
I told the intervviewer regading the same and they were ok and said they are fine with the solution.
In last 5min they asked me a follow up, what is the most optimal way to settle the balance. I gave them a greedy solution and we ended the interview.
Feedback for this round was positive.
This was mostly around my projects, why I want to switch and some behavioural questions like how do you handle conflict, prioritize tasks, task estimation in sprint etc.
This position got closed after my round and I got a call from recruiter after 2 weeks(yes, I was lazy and didn't follow up with recruiter), that there's a different opening in a separate team if I am interested to continue.
Scheduled 3 more rounds(2 DSA, 1 System design).
verdit: YES
It was like design a Music Player analytics sort of service(in memory), that prints most played song.
void playSong(songId, userId);
void addSong(songId, title);
void printAnalytics();I was able to code. Then they asked a follow up to add a feature to star/unstar song(s) for a user and get last N favourite songs played(something like that). I wasn't able to fully write the working code for it as time was up.
verdit: weak YES
First problem was to implement a Cache to add/get/delete key/values(both strings).
This was straight forward, I implemented a class in c++ with the relevant methods.
The follow up was, that I need to support transactions as well. for e.g. user can call BEGIN transaction, COMMIT transaction or ROLLBACK transaction.
During the transaction, user should be able to get/delete/put. In case the transaction is rolled back, all operations that happened during the transaction should be reverted.
I implemented this solution using a temporary map to store data during transaction and add the dataa to global(to cache) map. In case of rollback, just clear temporary data map.
I missed 2 corner cases in delete method functionality which the interviewer pointed out(as in they just said think hard if it covers all cases, I did and improve. 1 more case was missed and they were mocking me like "I can't keep telling you again & again to think hard ...)), they were kinda rude. Most egoistic and rude interviewer I have ever had. They were like trying to pull me down rather than being helpful or empathetic.
verdit: No
In this round I was asked to design a Google news sort of service where we scrape from multiple news sites. Assume they provide endpoint to get latest 25 news from each publisher. There can be thousands of publishers.
It was required to write down table schema for all like publisher, user, category_subscription, publisher_subscription, articles etc and handle deduplication in article scraping service etc.
Along with this, user's should be able to subscribe to certain categories like Education or publishers say ndtv.
On home page.
This round went fine in my opinion. The interviewer was also very nice.
verdit: YES
Verdict: After a day, received a Thank you email from recuriter.
edit: They later shared the detailed feedback for coding round 1, 2 and system design.