Отзыв по интервью на Java Developer в Яндекс.

Часть 1. Секция на кодинг (до алгоритмической)

Хочу поделиться своим первым опытом прохождения собеседования в Яндекс. Про все этапы можно прочитать здесь: https://yandex.ru/jobs/interview/backend Я же расскажу про первую техническую секцию на знание языка и live-кодинг.

Читал много статей на Хабре о том, что на всех секциях нужно решать алгоритмические задачки, но сейчас, видимо, они немного поменяли подход, и на первой секции дают задачу на реализацию функционала, которую вполне можно встретить на реальном проекте.

Перед интервью нужно создать пустой Java-проект на Maven/Gradle, подключить JUnit и Mockito для тестов. Spring не нужен. Также я подключил Lombok для удобства — это разрешается, а вот всякие AI-помощники, конечно же, нет.

Саму задачу раскрывать не буду — они всё равно меняются, но смысл примерно такой: дают интерфейсы и описание доменной модели, нужно реализовать методы и покрыть их тестами.

И тут лучше не спешить сразу кодить, а уточнить требования: правильно ли ты понял, что от тебя хотят. Я начал с написания теста, в котором показал, что собираюсь проверять, какие данные будут на входе и что ожидаю на выходе. Такой подход помогает лучше вникнуть в задачу, а если тест не проходит, можно быстро сделать дебаг, понять, в чём проблема, и уточнить детали.

Что проверяет данная секция: - ООП - организация структуры классов - clean code - паттерны (в моём случае — Chain of Responsibility) - коллекции - Stream API

А также умение увидеть, как можно реализовать решение более оптимально с точки зрения производительности. Например, избежать повторных операций, заранее подготовить (preload) нужные данные и работать уже с ними.

Уже после интервью, посмотрев на свой код, я понял, что решение было рабочим, но не самым оптимальным. Всё-таки стресс даёт о себе знать — непривычно кодить под наблюдением и в достаточно сжатый срок (около часа с небольшим). Однако, к моему удивлению, HR написала, что получила положительную обратную связь, и меня приглашают на следующую секцию — уже с алгоритмическими задачами.

Продолжение следует 🙂