Подготовка к скайп интервью в Яндекс на Java разработчика 2020
Предыдущий опыт общения с Яндексом был год назад и окончился моим отказом от оффера. Один из крупных банков предложил лучше условия и более интересные проекты. Спустя год, с новым опытом и знаниями решил снова пройти этот челлендж. В 2019 я общался с отделами Яндекс.Музыка и Кинопоиск, в этом году подавал в Яндекс.Маркет. В рамках данной статьи рассмотрим темы, которые нужно повторить, и материалы, по которым можно готовиться.
Теоретическая часть
Удивило, что вопросы и их последовательность остались неизменными. На собеседовании появилось легкое ощущение дежавю. Ради справедливости, данные вопросы являются стандартными, встречаются и в большинстве других компаний.
Темы, по которым задавали вопросы: коллекции, исключения, алгоритмы, многопоточность, виды join. Из нового добавились вопросы про Stream Api и работу с терминалом.
- Коллекции
Иерархия коллекций, интерфейсы и их имплементация. Более подробно спрашивали про ArrayList, LinkedList, HashMap. Как устроены, какие методы имеют, когда применять и какая у них временная сложность при различных операциях. Тут же спрашивают про контракт equals и hashCode.
Материалы для подготовки:
Справочник по Java Collections Framework
Структуры данных в картинках. ArrayList
Структуры данных в картинках. LinkedList
Структуры данных в картинках. HashMap
Разбираемся с hashCode() и equals()
Методы класса Object в Java - Исключения
Иерархия коллекций, чем отличаются проверяемые и непроверяемые исключения.
Материалы для подготовки:
Исключения в Java - Многопоточность
Что содержит пакет java.util.concurrent, способы создания потока, с какими проблемами можно столкнуться: raceCondition, deadLock. Оба раза спрашивали про volatile и atomic*.
Материалы для подготовки:
Обзор java.util.concurrent.*
Thread’ом Java не испортишь: Часть I — потоки, внизу статьи ссылка на продолжение в виде 5 частей, все они полезны. В третьей части как раз описываются проблемы Deadlock, Livelock, Starvation, - Алгоритмы
Наиболее популярные алгоритмы поиска и сортировки, их реализация и временная сложность. Оптимальный способ сортировки отсортированного массива и случайного.
Материалы для подготовки:
Пузырьковая сортировка и все-все-все
Алгоритмы сортировки в теории и на практике
Сортировки вставками
Сортировки слиянием
Знай сложности алгоритмов
Описание алгоритмов сортировки и сравнение их производительности - Stream Api
Чем конвейерные операции отличаются от терминальных и какие из них чаще всего встречались.
Материалы для подготовки:
Шпаргалка Java программиста 4. Java Stream API - SQL
Виды Join и индексы в базах данных, как правильно использовать и их устройство.
Материалы для подготовки:
Индексация в Базах Данных
Понимание джойнов сломано. Это точно не пересечение кругов, честно
Многотабличные запросы, оператор JOIN - Работа с терминалом
Вывести список процессов, найти и прихлопнуть повисший процесс, прочитать данные из файла размером более 100МБ, вывести последние 5 строк файла с логами.
Материалы для подготовки:
Команды Linux которые вы должны знать
Команда Tail Linux
Команда Kill Linux
Команда Ps Linux
Задача
Примерно в середине интервью мы перешли в Яндекс.Код — браузерный текстовый редактор. Мне была дана задача написать метод, приводящий строку aaaffccccd в 3a2f4cd. Решение заняло около 20 минут, было очень непривычно писать без автокомплита. Не везде получилось вспомнить точные названия методов и местами был псевдокод, максимально приближенный к реальному коду. Решение было засчитано.
На протяжении всего решения интервьюер молчал, никак не комментируя принимаемые решения и не давая подсказки. Скорее всего, в случае попадания в тупик, просто закончится время и собеседование объявят не состоявшимся.
Резюмируя
Конкретные формулировки вопросов по темам старался не приводить, они могут отличаться и лучше сразу готовить всю тему целиком. В данном случае формулировка будет неважна и получится ответить, если спросят как устроено изнутри. Приведенные материалы для подготовки отражают необходимый минимум, но желательно помимо них посмотреть доклады/курсы на данные темы.
В этом году, как и в предыдущем, многопоточности было уделено повышенное внимание, вопросов по ней было много. С остальными же темами в зависимости от интервьюера, могут спрашивать как поверхностно, так и углубляться в детали.