GO Go  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

Race detector и диагностика конкурентности

Проверяет запуск детектора гонок, воспроизведение дефектов, выбор блокировок и исправления, которые сохраняют смысл программы. В тесте 30 вопросов, из них 18 требуют чтения кода, команд или диагностических фрагментов. Задания опираются на устойчивые правила современного Go; если поведение зависит от версии, это оговорено в самом вопросе.

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат и результаты по 6 тематическим шкалам с объяснениями и практическими рекомендациями.
Вопрос 1 из 30
В отчёте `go test -race` показан конфликт двух обращений к одной области памяти. Что именно обнаружил детектор?
ТекстФрагмент отчёта go test -race
WARNING: DATA RACE
Write at 0x00c000014188 by goroutine 8:
  example.TestCounter.func1()

Previous read at 0x00c000014188 by goroutine 7:
  example.TestCounter.func2()
Вопрос 2 из 30
На ревью разбирают тему «Детектор гонок -race». Как исправить основной риск без ненужной перестройки решения?
BashДетектор гонок -race: фрагмент на ревью
go test -race ./...
# Задача: выбрать безопасную правку или способ проверки.
Вопрос 3 из 30
В разделе «Детектор гонок -race» показан конкретный случай. Какой принцип позволяет вывести ответ без запуска программы?
BashДетектор гонок -race: проверка контракта
go test -race ./...
# Требуется объяснить правило, а не только назвать команду.
Вопрос 4 из 30
Команда проверяет решение по теме «Детектор гонок -race». Какой контрпример разрушит слишком широкое толкование правила?
Вопрос 5 из 30
Перед публикацией кода по теме «Детектор гонок -race» нужно уточнить контракт. Что важно учесть помимо формальной корректности?
Вопрос 6 из 30
На ревью разбирают тему «Воспроизведение». Какое описание результата совпадает с правилами Go?
GoВоспроизведение: результат выполнения
// Фрагмент для трассировки.
package main
func main(){ start:=make(chan struct{}); done:=make(chan struct{},2); var x int; for i:=0;i<2;i++{go func(){<-start;x++;done<-struct{}{}}()};close(start);<-done;<-done;_=x }
Вопрос 7 из 30
В разделе «Воспроизведение» показан конкретный случай. Какая правка устраняет причину, а не маскирует её проявление?
GoВоспроизведение: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
func main(){ start:=make(chan struct{}); done:=make(chan struct{},2); var x int; for i:=0;i<2;i++{go func(){<-start;x++;done<-struct{}{}}()};close(start);<-done;<-done;_=x }
Вопрос 8 из 30
Команда проверяет решение по теме «Воспроизведение». Что именно гарантирует Go в этой ситуации?
GoВоспроизведение: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
func main(){ start:=make(chan struct{}); done:=make(chan struct{},2); var x int; for i:=0;i<2;i++{go func(){<-start;x++;done<-struct{}{}}()};close(start);<-done;<-done;_=x }
Вопрос 9 из 30
Перед публикацией кода по теме «Воспроизведение» нужно уточнить контракт. Что нельзя автоматически переносить на похожий код?
Вопрос 10 из 30
В рабочем примере по теме «Воспроизведение» важно отделить гарантию от догадки. Как оценить этот подход для производственного кода?
Вопрос 11 из 30
В разделе «Блокировки» показан конкретный случай. Какой итог можно предсказать без пробного запуска?
GoБлокировки: результат выполнения
// Фрагмент для трассировки.
package main
import "sync"
type Ledger struct{mu sync.Mutex;a,b int}
func(l *Ledger)Move(n int){l.mu.Lock();defer l.mu.Unlock();if l.a>=n{l.a-=n;l.b+=n}}
func main(){}
Вопрос 12 из 30
Команда проверяет решение по теме «Блокировки». Как изменить решение, не ломая его исходную задачу?
GoБлокировки: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "sync"
type Ledger struct{mu sync.Mutex;a,b int}
func(l *Ledger)Move(n int){l.mu.Lock();defer l.mu.Unlock();if l.a>=n{l.a-=n;l.b+=n}}
func main(){}
Вопрос 13 из 30
Перед публикацией кода по теме «Блокировки» нужно уточнить контракт. Какое утверждение остаётся верным на всех поддерживаемых платформах?
GoБлокировки: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "sync"
type Ledger struct{mu sync.Mutex;a,b int}
func(l *Ledger)Move(n int){l.mu.Lock();defer l.mu.Unlock();if l.a>=n{l.a-=n;l.b+=n}}
func main(){}
Вопрос 14 из 30
В рабочем примере по теме «Блокировки» важно отделить гарантию от догадки. Какое условие нельзя считать выполненным по умолчанию?
Вопрос 15 из 30
Фрагмент относится к теме «Блокировки». Какой вариант честно называет и преимущество, и издержку?
Вопрос 16 из 30
Команда проверяет решение по теме «Исправление». Как точнее всего описать выполнение фрагмента?
GoИсправление: результат выполнения
// Фрагмент для трассировки.
package main
func main(){done:=make(chan struct{},3);for _,v:=range []int{1,2,3}{v:=v;go func(){_=v;done<-struct{}{}}()};<-done;<-done;<-done }
Вопрос 17 из 30
Перед публикацией кода по теме «Исправление» нужно уточнить контракт. Какая доработка делает поведение явным для вызывающего кода?
GoИсправление: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
func main(){done:=make(chan struct{},3);for _,v:=range []int{1,2,3}{v:=v;go func(){_=v;done<-struct{}{}}()};<-done;<-done;<-done }
Вопрос 18 из 30
В рабочем примере по теме «Исправление» важно отделить гарантию от догадки. Какое правило достаточно применить для проверки ответа?
GoИсправление: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
func main(){done:=make(chan struct{},3);for _,v:=range []int{1,2,3}{v:=v;go func(){_=v;done<-struct{}{}}()};<-done;<-done;<-done }
Вопрос 19 из 30
Фрагмент относится к теме «Исправление». Какой граничный случай нужно проверить отдельно?
Вопрос 20 из 30
На ревью разбирают тему «Исправление». Какой инженерный компромисс здесь действительно существует?
Вопрос 21 из 30
Что совместно проверяют точный итог счётчика и многократный запуск теста под `-race`?
BashТестирование и наблюдаемость: результат выполнения
go test -race -count=50 -run TestConcurrentInvariant ./...
Вопрос 22 из 30
В рабочем примере по теме «Тестирование и наблюдаемость» важно отделить гарантию от догадки в тесте «Race detector и диагностика конкурентности». Как исправить основной риск без ненужной перестройки решения?
BashТестирование и наблюдаемость: фрагмент на ревью
go test -race -count=50 -run TestConcurrentInvariant ./...
# Задача: выбрать безопасную правку или способ проверки.
Вопрос 23 из 30
Фрагмент относится к теме «Тестирование и наблюдаемость» в тесте «Race detector и диагностика конкурентности». Какой принцип позволяет вывести ответ без запуска программы?
BashТестирование и наблюдаемость: проверка контракта
go test -race -count=50 -run TestConcurrentInvariant ./...
# Требуется объяснить правило, а не только назвать команду.
Вопрос 24 из 30
На ревью разбирают тему «Тестирование и наблюдаемость» в тесте «Race detector и диагностика конкурентности». Какой контрпример разрушит слишком широкое толкование правила?
Вопрос 25 из 30
В разделе «Тестирование и наблюдаемость» показан конкретный случай в тесте «Race detector и диагностика конкурентности». Что важно учесть помимо формальной корректности?
Вопрос 26 из 30
В рабочем примере по теме «Конкурентность и эксплуатация» важно отделить гарантию от догадки в тесте «Race detector и диагностика конкурентности». Какое описание результата совпадает с правилами Go?
BashКонкурентность и эксплуатация: результат выполнения
curl -sS http://127.0.0.1:6060/debug/pprof/goroutine?debug=2 > goroutines.txt
Вопрос 27 из 30
Фрагмент относится к теме «Конкурентность и эксплуатация» в тесте «Race detector и диагностика конкурентности». Какая правка устраняет причину, а не маскирует её проявление?
BashКонкурентность и эксплуатация: фрагмент на ревью
curl -sS http://127.0.0.1:6060/debug/pprof/goroutine?debug=2 > goroutines.txt
# Задача: выбрать безопасную правку или способ проверки.
Вопрос 28 из 30
На ревью разбирают тему «Конкурентность и эксплуатация» в тесте «Race detector и диагностика конкурентности». Что именно гарантирует Go в этой ситуации?
BashКонкурентность и эксплуатация: проверка контракта
curl -sS http://127.0.0.1:6060/debug/pprof/goroutine?debug=2 > goroutines.txt
# Требуется объяснить правило, а не только назвать команду.
Вопрос 29 из 30
В разделе «Конкурентность и эксплуатация» показан конкретный случай в тесте «Race detector и диагностика конкурентности». Что нельзя автоматически переносить на похожий код?
Вопрос 30 из 30
Команда проверяет решение по теме «Конкурентность и эксплуатация» в тесте «Race detector и диагностика конкурентности». Как оценить этот подход для производственного кода?

Ответьте на все 30 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу