Как подготовиться к собеседованию
Юрий Мещеряков
Head of Recruitment Екома и Райдтеха
Итак, нас заинтересовало ваше резюме — и теперь начнётся самое интересное. Вам предстоит пройти технические интервью — онлайн и очные. Что именно на них будет происходить, зависит от направления, которое вы выбрали. Но есть несколько общих вещей, которые помогут вам не потеряться по пути. Самое главное — ко всему подготовиться. Как именно, смотрите ниже — всё расскажу.
Из чего состоит отбор
- Предварительная секция (знакомство с HR).
- Очные технические встречи (решение задач).
- Финальное интервью с командой (знакомство с командой).
- Предложение о работе (победа).
Что именно мы будем спрашивать на очных технических встречах, зависит от должности, на которую вы хотите попасть. Об этом читайте ниже.
После предварительной встречи с HR вам предстоит пройти ещё несколько очных встреч. Где-то всего одну, где-то — три или четыре. Точное число зависит от направления, которое вы выбрали, и должности.
Очные интервью — это беседы с экспертами Яндекса. Каждая длится час. Эксперты предложат вам решить разные задачи. Кому-то предложат написать код, кому-то — поработать с алгоритмами. Здесь всё тоже зависит от направления, которое вы выбрали. Подробное описание процесса смотрите на вкладке для вашего направления.
После интервью мы свяжемся с вами в течение 2−3 дней.
Важно: для онлайн-встречи понадобится ноутбук и хороший интернет — проверьте, чтобы ничего не зависало. На очной встрече тоже нужен ноутбук — можете взять свой или попросить у нас.
Как успешно пройти интервью
Нашим экспертам важно увидеть, как вы рассуждаете, как умеете обосновывать свою точку зрения и задавать вопросы — это целая шахматная партия! Поэтому на очном интервью советую использовать следующую стратегию:
1. Убедитесь, что вы правильно поняли задачу
Повторите интервьюеру условия задачи — но своими словами, как вы это видите.
2. Проговаривайте решение вслух
Нам важно знать, как вы рассуждаете и как пришли к ответу.
3. Задавайте вопросы по задаче
Так вы лучше сможете понять, какое решение от вас ждут.
4. Не старайтесь сразу написать идеальное решение
Начните с базового, набросайте «скелет». Посмотрите, как оно будет работать на разных данных. Можете спросить совет у интервьюера.
5. Максимально доступно объясните решение
Продумайте заранее, как вы будете это делать — чтобы донести свою мысль до интервьюера.
Как подготовиться к очным интервью
1. Технический скайп (1 час)
- Расскажите про свой опыт.
- Ответьте на вопросы по знанию языка.
- Решите 2-4 задачи на код.
2. Два технических интервью (1 час каждое)
- Решите 2−4 задачи на код.
3. Архитектура (опционально, 1 час)
- Опыт проектирования сервисов.
- Технические подходы и технологии.
4. Финальная встреча с командами
- Мы расскажем про сервис и ответим на ваши вопросы.
5. Предложение о работе
Как подготовиться к интервью
- Тренируйтесь решать задачи самостоятельно, без подсказок, любым известным вам способом. Посмотрите разбор задач в VK Видео: простые и посложнее.
- Всегда анализируйте своё решение: почему именно так, можно ли сделать эффективнее? Если нет, то почему?
- Подумайте о граничных условиях, в которых решения должны проходить тесты.
- Тренируйтесь писать код без IDE, на интервью вы не сможете её использовать.
- Посмотрите обсуждение задачи. Убедитесь, что решили её оптимально. Где смотреть решение: Geekforgeeks, Leetcode.
Дополнительные ресурсы для подготовки
- Как проходят алгоритмические секции на собеседованиях в Яндекс.
- Как проходят архитектурные секции в Яндексе.
- Контест для подготовки.
Что нужно учесть при проектировании сервисов и систем
- Проектируйте сервисы как систему, состоящую из гибких, независимых частей, которые мало влияют друг на друга. Например, выбор БД в качестве API должен быть серьёзно обоснован, поскольку пронизывает всю систему.
- Обоснуйте выбор технологий. Не берите незнакомые или малознакомые технологии просто потому, что их кто-то уже использовал. Возможно, они не будут отвечать нашим требованиям.
- Помните: то, что может сломаться, обязательно сломается. Нужно минимизировать ситуации, в которых систему придётся поднимать «руками».
- Если сервис нужно масштабировать. Проектируйте с учетом того, что когда-нибудь мощностей одной машины нам перестанет хватать.
- Система не должна иметь одну точку отказа. Например, одна БД, использующая Postgres Foreign Data Wrappers в качестве гейтвея для доступа к данным на других серверах.
Про что ещё могут спросить эксперты
- Принципы работы систем очередей вроде RabbitMQ (нюансы их работы, основные отличия от реляционных СУБД, гарантии персистентности и средства обеспечения отказоустойчивости).
- Механизмы синхронизации в условиях многопоточного доступа к одним и тем же данным в БД (например, в общем случае нельзя использовать уровни изоляции транзакций для установки блокировок в БД).
- Гарантии персистентности для основных хранилищ (реляционные СУБД, например) и условия, при которых они предоставляются.
- Насколько надёжно решаются типовые задачи, используемые в большом количестве систем (например, очереди в Redis или БД).
- Как собирать метрики, чтобы определить проблему и место её возникновения.