1) Interview with a recruiter: some common questions are asked plus a few simple technical ones.
The recruiter sends all necessary information including the PDF covering steps of hiring process.
2) 1h coding session: here the focus is on discussing the task, implementing it and covering with tests. It is important to discover all possible scenarios.
The task was pretty simple and the interviewer was a well-wishing guy.
3) 1h of tech interview, which actually included 15 minutes for coding task and all other time spent on its discussion and improvement.
The coding task requires a profound understanding and experience with multithreading and concurrency and relational DB optimizations.
I am still not aware of what was wrong with my implementation, as neither deadlocks nor livelocks nor race conditions could happen there.
I suspect, that I simply implemented smth different from what interviewers were expected, but they did not articulated it clearly.
In general, the interviewing process experience is positive.
The only thing I am still wondering is why do the interviewers at the 3rd stage were so focused on concurrency?
Both interviewers at 2nd and 3rd stages said they are using concurrency explicitly only in very rare cases.
Then why a deep knowledge of concurrency is mandatory?