Taro Logo

Software Engineer Interview Experience - Moscow, Russia

July 1, 2015
Positive ExperienceGot Offer

Process

The process seemed to change around 2014, and is now more reminiscent of the one big companies use.

Candidates pass through a phone screen (1 hour) and then 4 or more on-site interviews (1 hour each), depending on the number of teams the candidate is considered to work with. They are typically stacked within one day.

I list the example questions from my interview. Note that they are for educational purposes only, and formulations can be intentionally altered.

Questions

Phone screen.

  1. Simple problem on probabilities, uses knowledge of complementary and independent events.

  2. How to efficiently find the sum of elements of a matrix stored in memory by rows? (Hint: think of CPU caches)

  3. What are smart pointers? What kinds do you know?

  4. Coding exercise in an online editor. Implement the copy constructor and assignment operator for a class containing pointers, with transfer of ownership. Both in C++98 and C++11.

Interview on math/statistics.

  1. In a fully-connected graph, each edge is painted with one of two colors. Find the probability that the graph contains a fully-connected subgraph on 3 vertices that has edges of different colors.

  2. In a city, 85% of all cars are green, and 15% of cars are red. An accident happened. The witness claims that a red car is to blame. The probability the witness is correct is only 80%. Compute the posterior probability that the car was red, given the witness' words.

  3. There is a ranking algorithm that maps pairs (query, documents) to relevance values. The loss function compares the predicted relevance to the ground-truth relevance. We can add a new feature of the pair (query, document). How to detect if it improves the model significantly? What if we have several candidate features?

Interview on algorithms.

You are not required to write code; it is enough to explain your algorithm to the interviewer.

  1. There is a 2D polygon. The order of vertices is known. How to check if it contains a given 2D point? Now assume we can build an indexing data structure offline. Propose an algorithm that executes queries in logarithmic time with respect to the number of vertices.

  2. We have a large file of pairs (query, quantity) that defines a multiset on queries. You need to get an unbiased sample of about 1000 queries from that multiset. The challenge is to maintain O(1) space complexity. Can you do it in one pass?

C++ coding interview (using a laptop; should compile and run).

Implement input and evaluation of an arithmetic expression in abstract Polish notation. Should support non-negative integers and 4 standard arithmetic operations. Error handling and design matter. 1 hour.

System design.

  1. Develop an architecture for an Instagram-like service. There are millions of users that may have friends. You need to handle queries to load the 10 latest photos from one's friend feed.

  2. Using an online editor, define the interfaces for classes shared_ptr and weak_ptr. Explain how you would implement reference counting within them.

Was this helpful?

Interview Statistics

The following metrics were computed from 29 interview experiences for the Yandex Software Engineer role in Moscow, Russia.

Success Rate

31%
Pass Rate

Yandex's interview process for their Software Engineer roles in Moscow, Russia is fairly selective, failing a large portion of engineers who go through it.

Experience Rating

Positive59%
Neutral24%
Negative17%

Candidates reported having very good feelings for Yandex's Software Engineer interview process in Moscow, Russia.

Yandex Work Experiences