Interviewed for a Senior backend role in July.
Round 1 — Coding (60 min), AI use explicitly allowed
The interviewer (Data Cloud team) opened by saying directly: "The environment has an AI assistant set up, use it the way you normally would at work, just don't let it make every decision for you."
Problem: task scheduler.
You're given a batch of tasks (description / due date / priority / completed / parent id). Requirements: dedupe by (description, due date) → drop the completed ones → sort by the given priority rule → subtasks go immediately after their parent. The problem itself isn't hard — once sorted, you just expand once by parent.
Heads up: what this round is really testing is how you collaborate with AI.
I basically didn't use the assistant, and in hindsight I think that cost me points. My advice is to practice the rhythm of "coding with AI turned on and narrating as you go" beforehand. I ended up getting cut after this round.
Round 2 — Hiring Manager (60 min)
The interviewer has been at Rippling for 4 years, and moved from the HRIS platform team to Device Management. The whole round was him asking, me answering:
- Self-introduction
- Your proudest project, with a deep follow-up
- How did you implement idempotency?
- How do you set SLAs and how do you monitor them?
- A technical decision you changed course on midway
- A design that a coworker pushed back on
- What you'd want to take with you from your current company, and what you'd want to leave behind
- Why Rippling (you really need a company-specific answer for this one — mine was too generic, and it was a clear point-loss)
Recommended question to ask back: "How do you evaluate a senior engineer's performance?" They walked me through their entire rubric.
Round 3 — System Design (60 min): News Aggregator
The interviewer was from the AI Platform team.
Problem: design a news aggregator. Pull articles from various publishers' APIs (CNN, WSJ, etc.) and generate a relevant feed for each user. They explicitly stated you don't produce content, you only store metadata (title/summary/category/URL). Basically Google News.
My approach: per-publisher cursor-based pulling (scheduler + poll worker) → articles / article_category tables → CDC into a log stream (Kafka/Kinesis) → feed updater → Redis sorted sets (one set per publisher, one set per category) → feed service merges the sets a user is subscribed to and dedupes by article id; the article id is a time-ordered id that doubles as both the sort key and the pagination cursor.
Follow-up questions: how often the scheduler runs, what the stopping condition for pulling is, how to handle the same article showing up in multiple categories, how to handle the feed growing without bound, and what happens when a third-party API goes down or rate-limits you (this last one didn't come up until minute 48 — my advice is to bring up fault tolerance and monitoring on your own before they ask).
One thing I think earned me points: after working out the capacity (roughly 100 million rows/day, 50 QPS writes), I explicitly said "I'm not worried about this volume, so I'm not going to optimize for it yet" — what the interviewer wants to see is what decision you made with that number, not the number itself.
Discussion
Loading comments…