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