I passed all stages of application process:
1. Initial interview with recruiter.
Rather standard, we talked about company, my background, experience, etc.
2. Test on Codility, consisting of 2 tasks. I completed only one task. The other one was messing with heavy maths, which I'm not good at, so I failed it.
3. Tech 1 on 1 interview with engineer.
Some common questions about Javascript, CSS and other Frontend stuff, ES6, ES7 features.
After this part recruiter sent me a document with approximate list of questions for the next stage. This list was really helpful and had a relevant info.
4. Three interview-long marathon conducted in a single day (4 hours overall).
4.1. 1.5 hours live-coding session where I built some mini frontend application.
4.2. Behavioural interview with manager with general questions about my interests, motivation, how I would handle certain situations, etc. Suddenly, a few technical questions in the end.
4.3. Another technical interview where you should draw some diagrams and architect a simple app. The main goal is to see your approach on solving architectural problems.
After all stages, recruiter scheduled another call for 15 mins on a date three days later with no specific subject. On my question about does that mean they have decided something on my application, he responded positively but without telling the final decision.
On the call he told that everybody really liked my candidacy and absolutely ready to hire me right away and I'm a perfect fit for the company culture-wise, but just do not have something for this seniority level, position is really urgent, so we're not going any further. On my question about what do I miss, he told about some computer science knowledge gaps, that nonetheless could be fulfilled in a few months.
Really confused about the strange reason of not hiring the person they liked.
Overall interview process was professional, but too long and confusing with the ending decline.