Вернуться в видеотеку

Лайвкодинг на собеседовании Middle Java-разработчика

Кандидат реализует синхронизацию трёх методов, чтобы они выполнялись в заданном порядке. Во время решения интервьюер обсуждает ожидание условия, видимость переменных и достаточность volatile.

Источник: Павел Сорокин

Открыть на YouTube

Таймлайн

Коротко о видео

Запись посвящена live coding-секции мок-собеседования для Middle Java-разработчика. Кандидат получает класс с тремя методами и должен обеспечить вывод First, Second и Third в строгом порядке, хотя методы вызываются разными потоками. Сначала интервьюер предлагает проговорить возможные подходы, затем кандидат рассуждает о синхронизации, ожидании в цикле и состоянии, которое разрешает перейти к следующему методу. По ходу решения обсуждаются проблемы гонки данных, видимость изменений между потоками и различие между volatile и атомарными операциями. В финале кандидат объясняет, почему в конкретной последовательности инкрементов достаточно volatile: потоки изменяют переменную в разные моменты согласно установленному порядку.

Затронутые темы

Что взять на заметку

  • Перед написанием кода стоит сформулировать инвариант порядка выполнения потоков.
  • Ожидание состояния реализуют так, чтобы следующий поток не продолжил работу раньше нужного сигнала.
  • volatile обеспечивает видимость изменений между потоками, но не делает инкремент атомарным.
  • Отсутствие гонки зависит от порядка и взаимного исключения конкретных операций.

Рекомендуем посмотреть

1:31:53
BackendMiddle

Java: собеседование Middle Backend-разработчика

Открытое мок-собеседование Java Backend-разработчика уровня Middle с вопросами по Java Core, дженерикам, immutable-объектам, equals/hashCode, многопоточности и Spring @Async. В лайвкодинге кандидат с подсказками проектирует собственный пул потоков с очередью задач, worker-потоками и shutdown.

2:09:10
BackendJunior

Техническое интервью Java-разработчика: Java Core, Spring и инфраструктура

Длинное техническое интервью с Java-разработчиком охватывает язык, коллекции и многопоточность, Spring, базы данных и инструменты доставки. Интервьюер уточняет ответы кандидата и возвращает разговор к точным определениям.