Taro Logo

C++ Developer Interview Experience - Moscow, Russia

July 1, 2018
Positive ExperienceNo Offer

Process

The interview process is perfectly described on the Yandex official site. My interview experience wasn’t unique, so I don’t think it’s worth describing. Instead, I want to tell you what Yandex expects from a candidate for a position like “C++ developer”.

Your first technical interview will be a Skype interview. What will help you pass it:

  1. Before the interview, check that your Skype client is working correctly. Verify that the microphone is functioning properly and that you have a good internet connection.
  2. Be calm, polite, and friendly during the interview.
  3. The interviewer will 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 its features, including difficult ones. For example, for C++, you should know about different types of constructors, copy operators, pointers (all types), references, how to safely create/recreate/delete resources, and so on. 3.4. You have PERFECT knowledge of standard data structures like Linked Lists, Vectors, and Binary Trees. You must remember how to implement them, the complexities of basic operations (insert, delete, search, access), and their pros and cons. 3.5. You should know what data structures (containers) are provided in your language's standard library, including the complexities of their basic operations. Prepare several examples that demonstrate the strengths of different data structures. 3.6. You have PERFECT knowledge of basic searching and sorting algorithms like Binary Search, Bubble Sort, Merge Sort, and Quick Sort. You must know the complexities of these algorithms. Be prepared to implement one of them without any errors. 3.7. You have spent time studying advanced sorting algorithms like Counting Sort, Radix Sort, and Bucket Sort. You must know how they work, their complexities, and their pros and cons. 3.8. You have experience with developing multithreaded code. You should understand threads, mutexes, semaphores, atomics, data races, deadlocks, and how to avoid them. Also, don't forget to read about 'lock-free' programming. 3.9. You have worked with databases. You need to know how a database works, the basics of SQL language (SELECT, WHERE, JOIN, etc.), what normalization is (be prepared to provide examples), what an index is, and ACID principles. 3.10. You use software design patterns in your code. You must know at least the most popular ones like Singleton, Abstract Factory, MVC, MVP, etc. Prepare examples that show how to use them and how they help organize your code.

After a successful Skype interview, you will be invited for an onsite interview. There will be several 1-hour interview sessions with 1 or 2 Yandex developers (or team leads). You will be asked to implement algorithms for several problems (from 1 to 3).

What will help you pass the onsite interview:

  1. Be calm, polite, and friendly.
  2. Prepare answers for common questions like "Why are you searching for a new job?", "What was the most interesting/uninteresting task during your career?"
  3. Usually, you will implement algorithms that involve working with arrays, strings, binary tries, and linked lists. Don’t expect tough tasks or algorithms that require strong math knowledge. Your solution will typically fit on 20-30 lines. The best advice here is to practice a lot with these types of tasks for weeks or even months before the interview.
  4. Interviewers expect you to provide PERFECTLY WORKING code without ANY bugs. Your first step should be to WRITE as many different TEST CASES as you can. Be sure you have accounted for 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 are unsure of the expected result, try to visualize the task and ask clarifying questions.
  6. Most interviewers prefer if you write code on a whiteboard. If you don’t have a whiteboard at home, practice on paper.
  7. Don't be silent; explain the algorithm you are going to implement. Expect questions about the complexity of your algorithm.
  8. When you finish your algorithm, test it VERY carefully.
  9. If the interviewer tells you your code has errors, you MUST find them all. Each unidentified error reduces the probability of successfully passing the interview.

Questions

Given an integer, convert it to a Roman numeral. Input is guaranteed to be within the range from 1 to 3999.

Given a Roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.

Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

Given a sorted array consisting of only integers where every element appears twice except for one element which appears once. Find this single element that appears only once.

Implement a queue using stacks.

Given a string, compress it using RLE: aabccc -> a2bc3.

Given a string, find the start and end positions of all smiles in this string. Each smile starts with ":-" and then an unlimited number of ")" or "(" characters can follow.

You have an unordered list of pairs of days: numbers of days when a hotel visitor arrives and leaves ({1, 4}, {6, 8}, {2, 4}, ...). Find the maximum number of visitors that lived in this hotel at the same time. If on the same day one visitor leaves the hotel and another one arrives, we must assume that on this day only one visitor lived in the hotel room.

You have a list of projects. Each project has an ID, runtime, and a list of sub-projects. A project could be started only after all its sub-projects are completed. Different projects could have similar sub-projects (1 or more). Different projects can be performed simultaneously. Calculate the minimum time for which all projects will be completed.

Given a list of 2D points, find out if they have a vertical axis of symmetry.

You have an unordered list of numbers. For example, 5, 0, 1, 2, 4, 9. Compress these numbers and represent them as a string: "0-2, 4-5, 9".

Was this helpful?

Interview Statistics

The following metrics were computed from 2 interview experiences for the Yandex C++ Developer role in Moscow, Russia.

Success Rate

0%
Pass Rate

Yandex's interview process for their C++ Developer roles in Moscow, Russia is extremely selective, failing the vast majority of engineers.

Experience Rating

Positive50%
Neutral50%
Negative0%

Candidates reported having very good feelings for Yandex's C++ Developer interview process in Moscow, Russia.

Yandex Work Experiences