The recruitment experience started on a strong note — Sam was an excellent recruiter: attentive, informative, and genuinely helpful in setting expectations. The early technical round covered AI/ML concepts and was well-structured.
The coding round was a breath of fresh air compared to other processes. The task was to implement a thread-safe transaction recording system, which is a realistic and well-scoped problem. There was a minor miscommunication — the interviewer initially expected Java — but the recruiter had confirmed Python was acceptable. The interviewer himself was impressive: knowledgeable, easygoing, and genuinely curious about the depth of my understanding rather than fixating on syntax. We worked through the implementation collaboratively, which felt like a real engineering discussion. I progressed to the system design round on the back of this.
The system design round involved two VPs and focused on designing a fraud detection system, including model selection. This is where the experience took a frustrating turn — not during the interview itself, but in the feedback provided afterwards.
The feedback cited several concerns that were demonstrably addressed during the session. I explicitly discussed using pre-provisioned Lambdas to keep latency in the double-digit millisecond range, and covered the cold start tradeoff and how to mitigate it. The feedback flagged Lambda latency as a concern — ignoring that I had already addressed it. Similarly, I covered language tradeoffs across Python, Go, and Java in depth, including Java SnapStart and JIT compilation which can match or exceed C performance. The feedback claimed the language rationale was unclear. I also discussed feature stores returning vector features for the model — the feedback pushed back claiming not all feature stores return vectors, which is a surface-level objection that misses the context entirely.
Each piece of feedback corresponded directly to a tradeoff I had already articulated. It is difficult to interpret this as anything other than a decision made independently of the technical content of the interview. The interview process itself was largely positive, but the feedback was not credible and did not reflect what actually took place in the room. Candidates at this level deserve honest and accurate feedback, not a post-hoc rationalisation of a predetermined outcome.
My advice for the system design round: treat the VPs as though they know everything and affirm their perspective where possible. In my experience, they may be more receptive to hearing what they expect than engaging with a genuine technical challenge — even when your points are entirely valid. Sometimes the safest path is to mirror their framing rather than push back, however sound your reasoning may be.