New Relic Backend Interview Experience
Summary
I interviewed for a Senior Software Engineer (Backend) role at New Relic, completed a coding round with two DSA problems and a distributed systems design round, but ultimately did not receive an offer.
Full Experience
New Relic Backend Interview Experience (SSE | 4 YOE)
Hi everyone! I recently interviewed with New Relic for a Senior Software Engineer (Backend) role. I wanted to share my interview experience and the types of discussions that took place. Hopefully, this helps others preparing for similar backend engineering interviews.
Round 1 - Coding(DSA) The first round consisted of two coding questions. Before getting into the questions, I would like to mention that the interviewer made the experience really enjoyable. He was very approachable and encouraged discussion throughout the interview. Rather than expecting the perfect solution immediately, he provided subtle hints whenever I got stuck and guided me in the right direction without giving away the answer. It genuinely felt like he had a deep understanding of algorithms and problem-solving, and the discussion was more collaborative than stressful. It was one of the best coding interview experiences I've had.
Question 1: Implement a method to perform basic string compression by counting consecutive repeated characters. If the compressed string is not smaller than the original string, return the original string. The discussion focused on:
- Time and Space Complexity
- Edge cases
- Code optimization
Question 2: Find the length of the Longest Increasing Path in a Matrix. Constraints:
- Move only in four directions (Up, Down, Left, Right).
- No diagonal movement.
- No wrap-around. The interviewer expected a DFS-based approach initially and later asked me to optimize and execute it.
Round 2 - Distributed Systems Design The second round was communicated as an HLD/LLD interview. However, the discussion turned out to be centered around designing a distributed event-processing system rather than a conventional HLD or LLD exercise. The interviewer first explained how distributed tracing works in observability platforms and then introduced the problem. Problem Statement Design a system that consumes trace events from Kafka and processes all events belonging to the same trace together. Assumptions provided during the discussion:
- Events are received through Kafka.
- Every event contains a traceId.
- Events belonging to the same trace share the same traceId.
- A trace can last from a few seconds to several hours.
- The actual processing logic is not important; assume there is a method that processes all events of a trace together.
The discussion then evolved around:
- Grouping events by traceId
- Whether an in-memory approach would scale
- Using an external datastore for trace state
- Memory constraints with long-running traces
- Determining when a trace is complete
- Retrieving grouped events for processing
- Handling traces that may run for hours
- Trade-offs between different design approaches
Throughout the discussion, the interviewer consistently steered the conversation back to the core problem of event grouping and trace lifecycle management, rather than focusing on Kafka APIs or the downstream processing itself. While the outcome wasn't what I had hoped for, I genuinely enjoyed the discussion and came away with a much better understanding of how to approach distributed systems and stateful stream-processing problems. My biggest takeaway from this interview was that not every design round follows a traditional HLD or LLD format. Sometimes, interviewers are more interested in how you reason about ambiguity, scalability, and state management than in the final architecture itself.
Thank you for reading!
Interview Questions (3)
String Compression
Implement a method to perform basic string compression by counting consecutive repeated characters. If the compressed string is not smaller than the original string, return the original string.
Longest Increasing Path in a Matrix
Find the length of the Longest Increasing Path in a Matrix. You can move only in four directions (Up, Down, Left, Right). Diagonal movement and wrap‑around are not allowed.
Distributed Trace Event Processing System
Design a system that consumes trace events from Kafka and processes all events belonging to the same trace together. Each event contains a traceId. A trace may last from a few seconds to several hours. The processing logic itself is abstracted; focus on grouping events by traceId, handling state, scalability, memory constraints, and determining when a trace is complete.