I had an interview in April 2024 and want to share my experience with the live coding part.
1. The way the upcoming live coding was described by the recruiter and in the emails did not reflect what actually happened, which was somewhat misleading. Initially, the emails highlighted TDD and the need to prepare a testing environment, as well as the project should be empty. I asked the recruiter via email a clarifying question: if an empty project plus a testing environment was needed, could I use JUnit, Mockito, or should it be my own lightweight testing solution? The recruiter did repeat that the project should be empty and I could use my lightweight solution, BUT as it turned out during the live coding session, the interviewer expected me to have JUnit, Mockito, or some other common framework.
2. The emails and the recruiter clearly stated that the live coding session required demonstrating an understanding and ability to write thread-safe code, use concurrent collections, etc. However, it turned out that I was supposed to write a simple registry to store server instances, essentially a service class and repository, without any concurrency or the like. The misleading instructions from the emails and recruiter prompted me to overcomplicate what shouldn’t have been complicated. Unfortunately, I didn’t realize this right away, as time was limited.
3. The interviewer required the storage to maintain uniqueness. Plus, the business logic implied the use of contains, so I decided to use a Set collection, considering it more suitable than a List for this case. However, the interviewer insisted on using a List for some reason. I believe it’s important to stand by your technical decisions if you are confident they are correct. I shared my opinion and its benefits, but the recruiter didn't come back with any counterpoints. But I feel like this negatively influenced the final decision about me.
About 20 minutes into the interview, the interviewer lost interest and it was evident he was not following the solution anymore. Meanwhile, all the requirements had been considered, implemented, and tested.
However, in the end, I received a rejection without any explanation, despite there being a promise of feedback specifically regarding the live coding session.
Overall, I'm disappointed with the organization of the process, but I can acknowledge as a positive note that the communication during the process was very pleasant and friendly.
Sometimes circumstances prevent us from showcasing our true competency.