0. Recruiter contacted me via LinkedIn.
1. Then I had a brief phone interview with questions like "What technologies do you want to learn?" and "Why do you want to leave your current job?".
2. Some time later recruiter has called and asked me to apply through yandex's online form for job applications. To do that I had to complete an assignment.
3. After that we arranged a skype interview where I was asked more thoroughly about favorite languages, technologies and overall experience in software development. Then I spent an hour and a half solving tricky autogenerated assignment in an online editor and answering questions verbally. The assigment contained questions about js, css and html.
4. Next week I took another round of skype interview conducted by a member of one of the teams.
5. Two days later I had a 3-hour interview in Yandex HQ. It was long because several teams showed interest in my candidacy. Questions that were asked could be splitted on 3 categories - basic algorithms/datastructures, brainteasers and web specific questions.
6. Finally I had 3 final interviews (no pun intended). Each took approximately one hour. During one of the interviews I was suddenly asked to write bubble sort on paper then what are assymptotic complexity bounds for this algorithm and how to prove it. I know those are easy but one might be caught off guard.
I really enjoyed the interview process, all interviewers were smart and polite. In the end I got approval from each team that interviewed me and I had to choose with whom I want to work the most.
Everything was good but the salary was at the minimum of my 'salary fork'. I asked HR if the salary could be raised at least to the middle of the fork, but it couldn't. So I accepted offer from other company.