И помните: не стоит опускать руки, если какая-то задача оказалась слишком сложной. Покажите ваш реальный уровень знаний, а мы оценим его в совокупности с вашим резюме и анкетой.
Перед тем, как начать, рекомендуем пройти тренировочный контест — в нём собраны тестовые задания прошлых лет.
Если вы хотите пройти стажировку по направлению iOS — вас ждут вопросы об особенностях языка Swift. Для Android-направления — Kotlin и Java. Будьте готовы к задачам с написанием кода, в том числе алгоритмическим.
Чтобы получше подготовиться, рекомендуем изучить материалы в нашем блоге на Habr, набить руку на задачах с Codeforces, LeetCode, а также ознакомиться с материалами тренировок по алгоритмам 1.0 и 2.0.
Познакомиться с приложениями, которые развивает Яндекс, можно здесь.
Будьте готовы рассказать о вашем опыте, навыках и решить пару задач, связанных с деятельностью команды.
Оплачиваемая стажировка
Доступ к корпоративным фичам
Компенсация обедов
Оплата проезда и проживания в Москве
Официальное оформление на стажировку или практику от вуза
Гибкий и гибридный график 20, 30 или 40 часов в неделю
Кроме того, всегда приятно видеть, как кандидат, даже не зная ответа на вопрос, старается логически прийти к правильному решению.
Особенно это касается практических задач. Глядя на то, как вы решаете практическую задачу, собеседующий может понять ваши реальные навыки и опыт. Как вы подходите к решению задач? Поэтому любую задачу стоит решать так, как будто вы получили её в реальной работе, даже если она сводится к объяснению теории.
Круто, если можно оценить ваши труды в виде кода на GitHub или аналогичной платформе.
На стажировке не стесняйтесь просить задачи, с которыми не знаете, как справиться. Только так вы сможете достичь наибольшего прогресса.
На стажировке знакомьтесь с ребятами из своей и других команд. В комфортной обстановке гораздо проще работать.
Советую не бояться пробовать что-то новое, а использовать все возможности. Это поможет набраться опыта.
Inline/noinline/crossinline:
Reified type parameters:
Коллекции под капотом:
Практическая задача: параллельная загрузка по нескольким ссылкам
Изучите Clean Architecture (наши задачи часто на ней построены):
View-пайплайн:
Compose: что происходит при изменении state
Добавьте: inline/noinline/crossinline, reified type parameters и ограничения JVM type erasure.
Практика: написать inline‑функцию с reified T (например, generic навигация/парсинг JSON), показать отличие с Class<T>
Разберите внутренние структуры: HashMap/TreeMap/LinkedHashMap; сложности операций; equals/hashCode контракты. erasure.
Практика: профилировать цепочки map/filter для List vs Sequence; посмотреть влияние больших коллекций и промежуточных копий.
Реализуйте: параллельную загрузку по списку URL через async/awaitAll + отображение на UI.
Добавьте: supervisorScope, retry/backoff, withTimeout, отмена по событию UI, защита от двойного клика через Mutex/Semaphore.
Помимо базовых компонентов, добавьте: схема слоев CA (Presentation/Domain/Data), интерфейсы репозиториев, один use case.
Практика: маленький модуль — ViewModel → UseCase → Repository → fake datasource; внедрите через Hilt/Koin.
View: показать, когда дергаются measure/layout/draw, чем requestLayout отличается от invalidate.
Compose: продемонстрировать цепочку state → recomposition → (re)measure/layout/draw, применить derivedStateOf, стабильные ключи в LazyColumn.
Включите в чек‑лист: нарушения equals/hashCode в ключах коллекций, лишние рекомпозиции из‑за мутабельных моделей, GlobalScope, блокирующие вызовы в suspend.
Объясняйте решения через принципы CA и последствия для тестирования и поддержки.
Соберите демо: экран списка (Compose), загрузка данных параллельно (корутины), хранение состояния, слой UseCase/Repository, ошибки/ретраи.
Подготовьте устные ответы: почему CA, где переключаете диспатчеры, как избегаете лишних рекомпозиций, почему Sequence/почему нет.
Kotlin inline и reified: docs.kotl.in → Inline functions; Reified type parameters.
Коллекции под капотом: официальные Kotlin docs + Java Collections Framework (Oracle), статьи о HashMap internals.
Coroutines: Structured concurrency, Cancellation, Exception handling, Channels/Flow (kotlinlang.org + Android Developers).
View rendering pipeline: Android Rendering and View Lifecycle (developer.android.com).
Compose state и recomposition: State and Jetpack Compose, Thinking in Compose, Performance best practices.
Что важно знать:
Типичные проблемы:
Как практиковаться:
Полезные ресурсы:
Что важно знать:
Типичные проблемы:
Как практиковаться:
Полезные ресурсы:
Официальная документация про ARC / перейти
Swift Memory Management (Ray Wenderlich) / перейти
вебинары и видеокурсы на платформах вроде Pluralsight
Что важно знать:
Типичные проблемы:
Как практиковаться:
Полезные ресурсы:
Что важно знать:
Типичные проблемы:
Как практиковаться:
Полезные ресурсы:
Что важно знать:
Типичные проблемы:
Как практиковаться:
Полезные ресурсы:
Что важно знать:
Типичные проблемы:
Как практиковаться:
Что важно знать:
Практические задания:
решать задачи на LeetCode, уделяя внимание оценке сложности и использованию памяти;
практиковаться в решении задач на HackerRank и CodeSignal
изучать алгоритмы и структуры данных по книгам и онлайн-курсам, например, «Introduction to Algorithms» (Томас К. Кормен и др.).
пройти базовые курсы на SwiftBook или HackingWithSwift
смотреть разборы собеседований на YouTube;
практиковать мини-проекты: работа с таблицами, layout, сетевыми запросами;
регулярно решать задачи на LeetCode;
просматривать выпуски WWDC, например, «What’s new in Swift» и «Modern concurrency in Swift»;
изучать официальную документацию Apple.
Coderun / перейти
LeetCode / перейти
Яндекс.Стажировка: тренировка алгоритмов / перейти
Полезные материалы от Яндекс.Стажировки / перейти
Открытые лекции от Яндекс.Стажировки / перейти
Yatalks / перейти
Статьи на Habr от Яндекса / перейти
Образование от Яндекса / перейти
YouTube-канал Young and Yandex / перейти
Telegram-канал Young and Yandex / перейти
Язык Swift: основы синтаксиса, Optionals, Value/Reference semantics.
Теория:
Практика:
Ресурсы:
Hacking with Swift, официальные туториалы по Swift.
Управление памятью: ARC, retain cycles, ссылки.
Теория:
Практика:
UI и Многопоточность
Теория:
Практика:
Работа с UI: UIKit и основы layout.
Многопоточность: GCD, OperationQueue, modern Swift Concurrency.
Повторить то, что изучали до этого, и отдохнуть перед собеседованием!
Язык Swift: основы синтаксиса, Optionals, Value/Reference semantics.
Ресурсы:
Hacking with Swift, официальные туториалы по Swift.
Управление памятью: ARC, retain cycles, ссылки.
Работа с UI: UIKit и основы layout.
Многопоточность: GCD, OperationQueue, modern Swift Concurrency.
Дополнительные темы: работа с коллекциями, ООП, SOLID, архитектура.
Если в вашем городе нет офиса Яндекса, вы можете приехать на стажировку в Москву. Дорога и проживание на время стажировки — за счёт компании.
При наличии вакансии вы можете остаться в той же команде, в которой проходили стажировку. Если открытых позиций не будет, вам предложат другую команду.
Если вас готовы перевести в штат, но вы не можете работать полный день — вы получите отложенный офер. Это сертификат, который позволяет вернуться в Яндекс по сокращённому отбору.
Напишите, если остались вопросы: intern@yandex-team.ru