The interview process is perfectly described on the Yandex official site. I think my interview experience wasn’t unique, so I don’t think it is worth to describe it. Instead I want to tell you what Yandex expect from candidate for a position like “C++ developer”.
Your first technical interview would be a Skype interview. What would help you to pass it:
1. Before interview check that your Skype client is working OK. Check that the microphone is working properly, you have a good Internet connection.
2. Be calm, polite and friendly during interview.
3. Interviewer would expect that:
3.1 you remember powers of 2 especially 0 - 10, 15, 16, 20, 30 - 32, 64).
3.2 you remember truth tables like AND, OR, XOR.
3.3 you have advanced knowledge of your programming language. You should know about features (including difficult) of your language. For example, for C++ you should know about different types of constructors, copy operators, pointers (all types), references, how to safely create/recreate/delete resource, and so on.
3.4 you have PERFECT knowledge of standard data structures like Linked List, Vector, Binary Tree. You have to remember how to implement them, complexities of basic operations (insert, delete, search, access), pros and cons.
3.5 you should know what data structures (containers) are provided in standard library of your language. Complexities of their basic operations. Prepare several examples that will show the strengths of different data structures.
3.6 you have PERFECT knowledge of basic searching and sortings algorithms like Binary Search, Bubble Sort, Merge Sort, Quick Sort and so on. You have to know complexities of these algorithms. Be prepared that you may be asked to implement one of them without any error.
3.7 you spent some time for reading about advanced sorting algorithms like Counting sort, Radix sort, Bucket sort. You have to know how they work, their complexities, pros and cons.
3.8 you have experience with development of multithreading code. Threads, mutexes, semaphores, atomics, data races, deadlocks and how to avoid them - you should know all that. Also don’t forget to read about 'lock-free' programming.
3.9 you worked with databases. You need to know how the database works, basics of SQL language (SELECT, WHERE, JOIN, etc.), what is normalization (be prepared to provide examples), what is index, ACID principles.
3.10 in your code you use software design patterns. You have to know at least most popular ones like Singleton, Abstract Fabric, MVC, MVP, etc. Prepare examples that would show how to use them and how they help to organize your code.
After successful Skype-interview you will be invited for onsite interview. There would be several 1-hour interview sessions with 1 or 2 Yandex developers (or team-leads). You would be asked to implement algorithms for several problems (from 1 to 3).
What would help you to pass on-site interview:
1. Be calm, polite and friendly.
2. Prepare answers for common questions like "Why you are searching for a new job?", "What was the most interesting/uninteresting task during your career?".
3. Usually you would implement algorithm that implies work with arrays, strings, binary tries and linked lists. Don’t expect tough tasks or algorithms that needs strong math knowledge. Usually your solution would fit on 20 - 30 lines. So best advice here - practice a lot on these types of the tasks before interview. Weeks or even months before.
4. Interviewers expect that you will provide PERFECTLY WORKING code without ANY bug. So your first step is to WRITE as many different TEST CASES as you can. Be sure that you have taken into account EVERY CORNER CASE. Don't try to remember these test cases - write them on paper or on the board.
5. If you don’t understand the task or not sure what the result should be, try to visualize task, ask clarifying questions.
6. Most of the interviewers prefer if you would write code on the whiteboard. If you don’t have whiteboard at home, practice on paper.
7. Don't be silent, tell what algorithm you are going to implement. Expect questions about complexity of your algorithm.
8. When you finish your algorithm, test it VERY carefully.
9. If interviewer would tell you that your code have errors, you MUST find them all. Each unidentified error reduces the probability of successfully passing an interview.