The interview process consisted of five stages.
The first stage was an initial conversation with HR, where they explained the role and asked about my motivation, background, and general fit.
The second stage was with the hiring manager. This was also fairly conversational and focused on my technical background, the technologies I had used, and how my experience matched the role.
The third stage was a take-home coding test, which was expected to be completed within one hour. In my opinion, the time limit was quite unrealistic, and it would be very difficult to complete properly without using AI assistance.
The fourth stage was a technical test review with a senior engineer and a junior engineer. This focused on discussing my solution, implementation choices, and the reasoning behind the code.
The final stage was a system design interview, based on how the take-home test solution could be developed into a more production-ready system.
I was rejected after the final stage, but the feedback I received was disappointing and unclear. I was told that my technical skills were excellent and that the technical parts of the process had gone very well, but the reason given for rejection was that I had not asked enough questions during the system design discussion.
I did not feel this accurately reflected the interview. I asked relevant questions, and I had already been properly briefed on the task beforehand, so I understood the context and requirements. During the interview, I explained the design in detail, covered synchronous versus asynchronous processing, discussed database design, scalability, reliability, observability, error handling, and drew diagrams to support the explanation.
I followed up with both HR and the hiring manager to better understand the decision, but I did not receive a clear answer. For me, the final feedback felt vague and disconnected from the actual interview performance.
Overall, the process was technically detailed, but the final decision and feedback did not feel transparent.