Перейти к содержимому

Пакет sync, гонки, блокировки

Вопросов: 129 из 42 собеседований. Источник указан в заголовке группы.

  • Что такое mutex? — встречается 2×
  • Примитивы синхронизации. — встречается 2×
  • Какие примитивы синхронизации ты знаешь? — встречается 2×
  • Какие бывают примитивы синхронизации? — встречается 2×
  • RWMutex vs Mutex; — встречается 2×
  • Как обнаружить deadlock в Go-программе?
  • В чем разница между sync.Mutex и sync.RWMutex?
  • Что такое sync.WaitGroup и когда его используют?
  • Что такое data race и как его обнаружить?
  • В чем разница между sync.Mutex и sync.RWMutex? Когда предпочтительнее использовать второй?
  • Чем sync.Map отличается от обычной map и когда ее следует использовать?
  • Что такое deadlock и как его избежать?
  • Что такое «graceful shutdown» и для чего он нужен?
  • Allocations and sync.Pool a) Memory allocation for structures and global variables b) Deleting from a map/slice does not free memory c) Reusing variables and sync.Pool
  • Что такое мьютекс?
  • для чего тут нужна вейтгруппа?
  • почему необходимо использовать мьютекс? А еще можно решить эту проблему?
  • Что такое mutex?
  • Примитивы синхронизации.
  • Что такое mutex?
  • Какие тут примитивы синхронизации можем использовать?
  • Что такое атомики?
  • Как решить на атомиках?
  • Как сделать так, чтобы явно у нас только одна отработала, без доработки программы?
  • Что такое примитивы синхронизации, их виды?
  • Как мьютексы устроены внутри?
  • Что такое атомик и за счет происходит атомарность операции?
  • Как думаешь почему мьютексы реализованы через атомики?
  • Do you use SyncOnce or init for initialization of variable packages?
  • When does a race condition occur?
  • Can you write competitive code without mutex?
  • Why are atomics faster?
  • Can you build Mutex on Atomic?
  • Что такое sync.Pool? Когда применяется?
  • What is sync.Map?
  • Have you heard of deadlocks in databases?
  • Что такое race condition?
  • Race condition?
  • Примитивы синхронизации?
  • Deadlock в базе данных?
  • Что подразумевает под собой гарантия доставки «at most once»?
  • Как обнаружить гонку?
  • Как избежать гонки в представленной программе?
  • Чем отличаются Mutex и RWMutex?
  • Почему ты предпочитаешь использовать map+RWMutex, а не sync.Map?
  • Какие примитивы синхронизации ты знаешь?
  • Примитивы синхронизации какие знаешь?
  • Какое действие нельзя делать со всеми примитивами?
  • Рассказать подробно где и как тут будет происходить гонка?
  • Чем deadlock отличается от паники?
  • Какие бывают мьютексы? В чем их отличие?
  • Что под капотом используется в мьютексе?
  • Чем atomic лучше мьютекса?
  • Какие основные техники используются при работе с атомиками?
  • Какие примитивы синхронизации из стандартного пакета sync вы применяли на практике, помимо sync.Map?
  • В каких случаях использовали sync.Pool?
  • Какой метод не является частью пакета sync.WaitGroup?
  • Remove();
  • Wait();
  • Done();
  • Add().
  • Какой метод используется для блокировки мьютекса в Go?
  • Reserve;
  • Seize;
  • Save;
  • Read;
  • Create;
  • Load.

callService медленный (до 5 минут), надо отдавать свежий результат вызова callService (время жизни - полчаса). Можно сделать background job через таймер, который вызывает callService и засовывает в структуру с мьютексом, а хэндлер отдает клиенту.

  • Какое отличие между Mutex и RWMutex?
  • Если кол-во операций на чтение и запись одинаково, то есть ли смысл использовать RWMutex и почему?
  • Что можешь сказать про atomic?
  • Что еще есть в пакете sync?
  • Что такое гонка?
  • Какие можете назвать атомарные операции?
  • Что из пакета sync вы использовали в работе?
  • Какие методы есть у WaitGroup?
  • Что такое atomic?
  • Какие есть примитивы синхронизации в Го?
  • Зачем нужны атомики, если есть мьютексы?
  • Что такое race condition в Go?
  • Что такое дедлок в Go?
  • Что можешь сказать про пакет sync?
  • Чем отличается errgroup от WaitGroup?
  • Какая ключевая особенность есть в errgroup?
  • Почему часто используют обычную мапу с мьютексом, а не мапу из пакета sync?
  • Всегда ли атомик быстрее мьютекса?
  • Задача на грутины и race condition.
  • Какие примитивы синхронизации знаешь?
  • Как Go решает проблему в RWMutex, если бесконечно висит lock на чтение и когда произойдет lock на запись?
  • Мапа потокобезопасна? А как сделать безопасной? В чем отличие RW от Mutex
  • Что такое graceful-shutdown? Рeaлизовывал ли/Как работает?
  • Зачем RWMutex если у нас есть обычный Mutex?
  • Знаешь ли что такое graceful-degradation?
  • Работал ли с мьютексами? Какие они бывают и чем отличаются?
  • Какие примитивы синхронизации ты знаешь?
  • Что такое состояние гонки?
  • Что такое wait group?
  • Способы предотвращения гонки данных?

Wildberries / WB - 4 (Команда поставщиков) — 1 кв 2025

Заголовок раздела «Wildberries / WB - 4 (Команда поставщиков) — 1 кв 2025»
  • Какие бывают примитивы синхронизации?
  • RWMutex vs Mutex;
  • Какая команда помогает проверить есть ли гонки или дедлоки?
  • Data race и Race condition;

Wildberries / WB - 5 (Команда спецпроектов) — 1 кв 2025

Заголовок раздела «Wildberries / WB - 5 (Команда спецпроектов) — 1 кв 2025»
  • Какие бывают примитивы синхронизации?
  • RWMutex vs Mutex
  • Какие основные преимущества sync.Map?
  • Для чего нужен mutex
  • Как бороться с гонкой?
  • С какой проблемой можно столкнуться решая проблемы сихронизации?
  • В чем разница между Mutex и RWMutex?
  • Что такое sync.Map?
  • Какие типы мьютексов предоставляет stdlib?
  • Что именно защищает мьютекс?
  • сколько R и W локов можно взять от sync.RWMutex одновременно?
  • Зачем нужны atomic?
  • Почему интенсивная конкурентная модификация atomic приводит к заметному снижению производительности на многопроцессорных системах?
  • Какие еще примитивы синхронизации знаете?
  • Что такое дедлок? Как бороться со случившимся дедлоком? Как не допустить дедлок?
  • Как подождать их выполнения?
  • В чем польза от sync.Pool?
  • Как работает пакет sync? С какими примитивами из него вы работали?
  • В чем суть sync.Pool? Как и когда его правильно использовать?
  • Как garbage collector взаимодействует с объектами в sync.Pool?
  • Как бы вы реализовали функцию tryLock для семафора в Go?
  • Почему возникает log contention? Как его диагностировать и избежать?
  • В чем разница между Mutex и RWMutex? Приведите пример, где один предпочтительнее другого.
  • Что такое singleflight из пакета golang.org/x/sync? Какую проблему решает?

МВД РФ (Паспортно-визовый сервис) — 4 кв 2025

Заголовок раздела «МВД РФ (Паспортно-визовый сервис) — 4 кв 2025»
  • Представим ситуацию: CI-пайплайн зеленый, все тесты проходят успешно, но в продакшене периодически возникают проблемы, вызванные состоянием гонки. Как можно обнаружить гонки данных на этапе тестирования в CI? Что делать, если стоит задача постоянно отслеживать, есть ли в коде гонка?
  • Что такое deadlock и race condition?
  • Какие примитивы синхронизации существуют?
  • Что такое Mutex и RWMutex, в чем их отличия?
  • Что такое атомики и за счет чего они работают?
  • Что такое wait group и для чего он используется?
  • Что такое errgroup?