❓ Что описывает паттерн fan-out в контексте конкурентного программирования
Anonymous Poll
32%
Сбор результатов с нескольких горутин в один поток.
65%
Распараллеливание одной задачи на множество горутин.
3%
Последовательное выполнение задач для экономии ресурсов.
1%
Проверку состояния всех горутин.
❤2
❗️ Оцените вопросы прошлой недели в двоичной системе
Anonymous Poll
24%
001
5%
010
20%
011
32%
100
27%
101
🤔2
❓ Какой механизм Go используется для реализации паттерна fan-in
Anonymous Poll
13%
Мьютекс
85%
Каналы
2%
Таймеры
2%
Интерфейсы
🤡39
❓ В чем ключевое отличие fan-out/fan-in от простого параллелизма
Anonymous Poll
62%
Fan-out/fan-in включает централизованный сбор результатов
11%
Fan-out/fan-in выполняет задачи последовательно
2%
Fan-out/fan-in не использует каналы
30%
Fan-out/fan-in использует мультипараллельную парадигму
❓ В каком случае изменения в срезе могут перестать быть видны в другом срезе
Anonymous Poll
5%
При изменении отдельного элемента среза
14%
При получении под-среза с помощью [a:b]
69%
При использовании append при полном заполнении capacity
17%
Изменения в любом случае будут видны
❓ В каком случае можно использовать пользовательские типы как ключи в мапе
Anonymous Poll
1%
Тип содержит только экспортируемые поля
84%
Тип состоит только из сравнимых полей
10%
Тип реализует интерфейс Stringer
6%
Тип является указателем
❓ Что обозначает параметр GOGC
Anonymous Poll
8%
Максимальный размер памяти, доступной приложению
73%
Процент прироста памяти перед запуском сборщика мусора
14%
Количество горутин в программе
6%
Версию компилятора Go
❓ Сколько верных ответов было у вас на этой неделе
Anonymous Poll
50%
5-7
17%
3-4
9%
1-2
24%
Ни одного, ну и вопросы!
🤡2
❓ Для каких объектов sync.Pool подходит лучше всего
Anonymous Poll
11%
Крупные долгоживущие структуры конфигурации
11%
Долгоживущие singletons
76%
Часто создаваемые, короткоживущие временные объекты
4%
Только сетевые соединения
❓ Как правильнее всего поступить с bytes.Buffer перед возвратом в sync.Pool
Anonymous Poll
14%
Ничего не делать, просто положить как есть
57%
Вызвать Reset() и затем положить в пул
26%
Обнулить указатель через buf = nil и положить в пул
6%
Освободить через runtime.Free()
❓ Почему использование sync.Pool для редких и дешёвых аллокаций обычно не даёт пользы
Anonymous Poll
9%
sync.Pool работает только при высоком уровне конкуренции
85%
Накладные расходы на пул могут быть выше, чем выгода от экономии аллокаций
6%
GC игнорирует такие объекты
2%
sync.Pool нельзя использовать для небольших объектов
❓ Что произойдёт, если положить в один sync.Pool значения разных типов, а при Get() делать жёсткий type assertion к одному типу
Anonymous Poll
14%
Компилятор не даст собрать код
8%
Get() автоматически приведёт тип к нужному
74%
Возможна паника в рантайме при неверном type assertion
4%
Значения других типов будут молча игнорироваться
❓ Что делает метод Get() у sync.Pool, если внутри нет ни одного объекта и поле New не задано
Anonymous Poll
13%
Паникует
17%
Блокируется, пока не появится объект
24%
Создаёт новый объект через reflect.New
48%
Возвращает nil
❓ Поставьте эмодзи, который ассоциируется с вопросами прошедшей недели
Anonymous Poll
22%
👍
16%
⚡️
10%
⭐️
35%
🤨
18%
😢
14%
😞
❓ Go операция atomic.CompareAndSwapInt32 используется для реализации lock-free алгоритмов. Как называется проблема, когда значение меняется с A на B, затем обратно на A
Anonymous Poll
4%
Deadlock
64%
ABA-проблема
23%
Race Condition
9%
Livelock
❓ Как проверить, что переменная это указатель
Anonymous Poll
6%
var ok = (x == nil)
82%
var ok = reflect.TypeOf(x).Kind() == reflect.Ptr
9%
var ok = x instanceof pointer
10%
var ok = type(x) == "pointer"
❓ В чём разница между PUT и PATCH при обновлении ресурса
Anonymous Poll
10%
PATCH — полное, PUT — частичное
87%
PUT — полное обновление, PATCH — частичное
1%
PUT только для после DELETE
4%
Ничем не отличаются
❓ Что выведет код
Anonymous Poll
11%
Тест пройдёт успешно, выведет «Это выведется?» и «2»
44%
Тест завершится с FAILED, выведет «Это выведется?», но не выведет «2»
11%
Тест завершится с FAILED, выведет «Это выведется?», «Проверка 2» и «2»
50%
Тест завершится с FAILED, выведет «Это выведется?» и «2»
🤡31
❓ Какой метод регистрирует ошибку и продолжает выполнение теста, но не выводит сообщение об ошибке
Anonymous Poll
71%
t.Error()
24%
t.Fail()
3%
t.Fatal()
3%
t.FailNow()