The interviewer asked me to perform overly strict and impractical TDD, such as testing whether an empty method throws an exception. While I understand the intent to assess my TDD capabilities, addressing both TDD, concurrency and JDK knowledge in such a short time frame requires more time. I followed the strict TDD approach as instructed, but 20 minutes into the 45-minute session, I was asked to move on due to time, leaving me with only 25 minutes to tackle the actual requirements, of which I completed 2 out of 3.
In their feedback, they mentioned I hadn’t written tests for all requirements and validations. Expecting full test coverage and concurrency implementation in 25 minutes is simply impractical. Additionally, they pointed out that I didn't know more differences between URI and URL beyond the basic difference that one is a resource identifier and the other a resource locator. Are they assessing memorization or programming abilities? Those are details that can be easily looked up. So, after reviewing the documentation and learning all the differences, am I now a better programmer? Such criteria feel misguided. I demonstrated a solid understanding of concurrency and TDD, yet I didn’t progress to the next stage due to minor issues that I intentionally skipped to save time. Do they want to evaluate if I can test all the null checks, or do they want to assess advanced programming skills? It felt more like they weren't genuinely hiring.