Attentive Software Engineer Interview Experience — Leveled Up to Senior Bar, Rejected After a Messy System Design

Attentive·Software Engineer·Sep 2026
OnsiteHR ScreenRejectedmedium

I applied for SWE II.

HR call - 2026-08-26

The questions were:

  • How much do you know about Attentive?
  • Are you actively interviewing right now? Do you have any offer deadlines?
  • Do you need sponsorship?
  • What are the compensation range you are targeting?
  • Then they asked me to introduce myself.
  • Are you able to talk about a feature or product that you work on like end-to-end or a zero-to-one product?
  • What is your primary programming language?
  • Why did you leave your last company? What have you done since leaving? Why are you looking for a job now?

Then they walked me through the interview process:

(1) The first round is 2h: 1h coding + 1h system design. The coding is LeetCode style, and the system design is on Lucid, a virtual whiteboard. If the first round goes well, I move on to the second round.

(2) The second round is the VO: 1h coding + 1h system design + 45min HM. The HM round focuses on BQ, talk about how you collaborate, how you deal with ambiguity, things like that.

First round, System Design - 2026-09-02

The interviewer introduced themself first, then I introduced my background.

The problem was a product catalog system. After clarifying, the requirements were roughly these:

  • Ingest product catalog data from retailers, by snapshot file. the file will contains full snapshot, not incremental
  • we have 50000 retailer, and avg product = 20000/retailer, but median=50
  • We don't need to consider version control, when make the update one by one, user makes a query and they will see the result some is old and some is new, that is accepted.
  • Users can browse catalog for products
  • All product SKUs for a retailer with retailer_id
  • Details of a product with product_id
  • 50million user, 11000 QPS for query
  • query should have low latency 400ms
  • System-wide overrides for any product attribute (admin feature)
  • the override value couldn't be changed by retailer's update
  • retailer can delete the product, even if some attribute value of the product been override by admin
  • override can be deleted, once deleted, we want to show user the newest retailer value

Next I went through my design, the entities, and my DB choice.

Then the interviewer started asking questions:

  1. How do you compare two files?
  2. Imagine a retailer uploads snapshot1, quickly realizes it was wrong, and uploads snapshot2. We want to end up seeing the complete snapshot2. How do you do that?
  3. If 50000 new retailers join now and each of them uploads a snapshot every day, how does the system handle that?
  4. Talk about how you would build observability for this system, what measures you would take to make sure everything is running as expected.

Then the Q&A part where I got to ask questions.

Overall I felt good about it.

First round, Coding - same day as the system design above, two hours back to back

We introduced ourselves to each other first.

The problem: build a Lisp expression parser.

parse("( ADD 3 4 )") == 7
parse("( MULT 3 4 )") == 12
parse("( MULT 3 ( ADD 3 4 ) )") == 21

After writing it I ran some tests and they passed. The follow-up was to add LET, for example parse("( LET x 3 ) ( ADD 4 x ))") == 7. I did some clarifying, including (1) whether a variable may be assigned more than once, (2) what a bare let expression should return, and (3) what multiple let expressions (only lets, no other expression) should return. I got the feeling the interviewer hadn't thought it through that far either, and she hesitated on whether to include a lot of those cases. Then I changed my code, but I ran out of time, so I just explained my ideas to her. She asked what data structure I would consider for nested lets. I said I would use a dict and deep copy it at every level. She asked whether I would use a stack, and I said a stack has a problem: if I assign a variable only once but use it multiple times, then by the second use it is already gone.

Then the Q&A part.

Overall I felt good about it.

Change level - 2026-09-14

The second round VO was scheduled for 09-15, but the day before the interview I got a call from the HR. They said the position I had been interviewing for had just been filled. But because I did really well in the first round, and the feedback was that I was on the cusp of a SW2-senior, and it just so happened that one team was looking for a senior engineer, they wanted to evaluate me for that potential senior role.

The process would drop the HM round for now and keep only coding and system design, in the same format as the first round, just so we can get that additional signal to see if you meet the senior bar. If I did well in this round, they would schedule a final HM round.

I asked: if I don't hit the senior level tomorrow but do hit the SW2 level, can I still continue interviewing for SW2? The HR said no, there were no other SW2 roles left. He said that is exactly why he wanted to push me to a different role instead of just rejecting me. They had just closed the SW2 role last week. Normally he would reject all the other candidates, but I was lucky: because of my first round performance, he passed me to a different hiring manager.

Second round, Coding - 2026-09-15

We introduced ourselves first.

The problem: given a log file, we want to find the logs whose time is between [start_time, end_time].

I clarified first: what does this log file look like? Is it many lines, each with a timestamp and a message? The interviewer asked, if you were designing the log, what would you make it look like? I said there would be a logID, which service the log came from, which machine, and some other labels. He said got it, now let's consider the simple version, just a timestamp and a message, and you can assume it is already parsed into memory, so don't worry about reading the file.

Then I asked whether the logs are already sorted by time. He said yes.

Then I asked whether start_time and end_time are inclusive. He said both should be included.

Then I asked whether start_time is always less than or equal to end_time. He said yes.

Then I explained my idea: use binary search to find the start_index and end_index of the matching logs, and then take the logs. He agreed and I started coding. At first I wanted to use bisect, but I could tell he wanted me to implement it by hand, so I switched to writing two binary searches myself.

Along the way I asked whether one timestamp can have multiple logs, and he said yes. I also asked whether I should return an empty list if start_time is larger than the max time, or end_time is smaller than the min time, and he said yes.

After finishing, I started writing test cases. I wrote a few, and he added a duplicate example (multiple logs with the same timestamp). Everything passed.

Then I gave the time and space complexity: time is log(n), space is O(1).

There were also some follow-ups about distributed systems, and then the Q&A part.

Overall I felt good about it.

Second round, System Design - 2026-09-15

I introduced myself first, and he asked me about some things in my previous projects.

Then the system design started. The problem was a metrics system, but unfortunately this interviewer was a bit incoherent when he talked, which confused my understanding and caused me a lot of trouble in the interview.

He started with: basically the problem here is gonna be designing a simple message queue. Using simpler primitives. For some reason you can't use an off-the-shelf queue like Kafka (I think he wanted me to spell out the more basic concepts or technologies instead of just saying Kafka for everything). Then he said there is a group of producers sending messages to the queue, and the queue itself you can think of as a service, not a DB. The service receives these messages somehow, you can define the interface between the publishers and the service, it can be HTTP, WebSocket, or anything. The queue stores these messages in some order, and the actual content of the messages doesn't matter for this problem. Suppose 4 messages are published, and a consumer on the other side also connects to the queue service, and again this interface is up to you to define. After that, every time I described a part, he changed a requirement or added a new one. He said too much along the way and often contradicted himself, so I couldn't tell what he actually wanted. I had to keep clarifying, and I did my best to say everything I knew. My overall design was complete, and I think my troubleshooting discussion was good too. But looking back, this interviewer talked a huge amount and I didn't get many chances to cut in.

Actually when I finished I felt pretty good about it overall, I even thought I did better in the system design than in the coding. But working backward from the result, I think the most likely problem was communication.

Result call - 09-18

They told me they decided not to hire me. The feedback was that coding was very good, but system design was the weak spot, and that I definitely hit SWE2 but did not reach senior level.

I asked for more detailed feedback, since I felt I had done well and wanted to know where the interviewer thought I fell short and needed to improve. He said that for a senior-level candidate, they want the candidate to drive more of the technical discussion and think of some smaller details that they were looking for or sort of missed.

I feel pretty wronged. The role was a good fit and I really did my best. Since getting the result I keep wondering whether it would have gone differently if the interview had been scheduled earlier, or if the second-round system design had been with the first-round interviewer or some other interviewer. But I have to move on, maybe it just wasn't meant to be.

Wishing everyone a smooth job search.

Published

Curated and edited by PracHub

Practice the questions from this interview

Discussion

Sign in to join the discussion. The author is notified of every comment.

Loading comments…

Interview at a glance

Company
Attentive
Role
Software Engineer
Rounds
HR Screen → Onsite
Outcome
Rejected
Difficulty
medium
Interview date
Sep 2026
Questions from this interview
4 questions

Real Attentive interview experiences

First-hand reports from Attentive candidates — the rounds, the questions they were asked, and how it went.

All 7 Attentive interview experiences