Проверяет знание планировщика goroutine и механизма остановки для GC или fairness.
Preemption — это механизм, который прерывает долго работающие горутины, чтобы дать время другим. Он реализован через “safe points” и сигналы.
Go runtime использует M:N планировщик: множество goroutine (G) на ограниченное количество потоков (M).
Если горутина выполняет длительный CPU-bound код без блокировок, scheduler может её вытеснить.
Механизм:
runtime вставляет safe points (вызовы функции, allocation и т.п.);
при необходимости GC или балансировки, выполняется прерывание (signal preemption);
управление возвращается в планировщик.
Вывод:
Preemption предотвращает “захват” CPU одной горутиной и делает выполнение более справедливым.