Rippling SSE Round 1
Summary
I interviewed for an SSE role at Rippling. I was presented with a multi-part coding question about building a voting system for articles and managed to solve two out of three parts, which was sufficient to clear the interview.
Full Experience
First Round (filter) for SSE at #Rippling.
Rippling provides use of AI(optional). So I told interviewer that I will not use AI tools. I was expected to solve three parts of the below question but was only able to solve 2 parts. Still was able to clear the interview.
Interview Questions (1)
Article Voting System with Vote Flip Tracking and Analytics
You are building a voting system for articles.
Part 1
The system supports adding articles, and users can vote on them using upvote or downvote.
A user may change their vote on the same article later. A vote flip is defined as:
- user previously upvoted an article, and later downvotes it OR
- user previously downvoted an article, and later upvotes it
You need to support the following requirements:
-
For each user, store their latest vote for every article they have voted on.
-
For each user, return the last 3 unique articles where the user performed a vote flip.
“Unique” means the same article should not appear multiple times in the last 3 results.
The order should reflect recency (most recent flips last or first — interviewer usually expects most recent first).
Additional constraints: Articles are created with increasing integer IDs (starting from 1).
Assume all articleIds passed into vote methods are valid.
Required APIs:
- addArticle(String articleName)
- upvote(userId, articleId)
- downvote(userId, articleId)
- last3Flips(userId)
Part 2 Extend the system to provide analytics:
-
For all articles, return them sorted in descending order of score, where: score = (#upvotes - #downvotes)
-
For every user, return: the last article they voted on