Получить доступ

Конкурентность

Основа с Junior

Гонки данных, мьютексы и семафоры, взаимные блокировки, атомарные операции и пулы потоков.

Что важно знать

  • Гонка данных: два потока читают и пишут одно значение без синхронизации — результат зависит от порядка выполнения.
  • Мьютекс — один поток в критической секции; семафор — не больше N.
  • Взаимная блокировка: потоки ждут ресурсы друг друга; лечится единым порядком захвата и таймаутами.
  • Атомарные операции (CAS) — без блокировок для простых случаев.
  • Видимость: без синхронизации поток может не увидеть запись другого потока.
  • Пул потоков переиспользует потоки; размер зависит от того, ждут ли задачи ввода-вывода.

Критерии освоения

Junior ≈ 8 ч

  • Объясняет состояние гонки на примере счётчика и исправляет его блокировкой
  • Объясняет взаимную блокировку и как её избежать порядком захвата

Практика. Написать программу с гонкой на общем счётчике, показать неверный результат и исправить двумя способами.

Middle ≈ 8 ч

  • Выбирает между блокировкой, атомарной операцией и неизменяемыми данными
  • Подбирает размер пула потоков для задач с вычислениями и с ожиданием ввода-вывода

Практика. Реализовать потокобезопасный кэш с ограничением размера и нагрузочный тест на 16 потоков.

Вопросы с собеседований

← Вся карта «Backend-разработчик»

Закрытая бета

Знать тему — половина дела

На живом собеседовании sotto слышит вопрос интервьюера и показывает короткий ответ и план. Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем