GO Go  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Модель памяти и состояния гонки

Проверяет отношения happens-before, реальные состояния гонки, атомарные операции и безопасную публикацию данных между горутинами. В тесте 25 вопросов, из них 15 требуют чтения кода, команд или диагностических фрагментов. Задания опираются на устойчивые правила современного Go; если поведение зависит от версии, это оговорено в самом вопросе.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат и результаты по 5 тематическим шкалам с объяснениями и практическими рекомендациями.
Вопрос 1 из 25
На ревью разбирают тему «Порядок видимости happens-before». Каков наблюдаемый результат этого кода?
GoПорядок видимости happens-before: результат выполнения
// Фрагмент для трассировки.
package main
func main(){ ch:=make(chan struct{}); x:=0; go func(){ x=7; close(ch) }(); <-ch; _=x }
Вопрос 2 из 25
В разделе «Порядок видимости happens-before» показан конкретный случай. Какое изменение лучше всего укрепит контракт этого фрагмента?
GoПорядок видимости happens-before: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
func main(){ ch:=make(chan struct{}); x:=0; go func(){ x=7; close(ch) }(); <-ch; _=x }
Вопрос 3 из 25
Команда проверяет решение по теме «Порядок видимости happens-before». Какое утверждение точнее всего описывает действующую гарантию?
GoПорядок видимости happens-before: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
func main(){ ch:=make(chan struct{}); x:=0; go func(){ x=7; close(ch) }(); <-ch; _=x }
Вопрос 4 из 25
Перед публикацией кода по теме «Порядок видимости happens-before» нужно уточнить контракт. Что может изменить вывод при небольшом изменении условий?
Вопрос 5 из 25
В рабочем примере по теме «Порядок видимости happens-before» важно отделить гарантию от догадки. Как решение влияет на читаемость и надёжность?
Вопрос 6 из 25
В разделе «Состояния гонки» показан конкретный случай. Что увидит вызывающий код после выполнения?
GoСостояния гонки: результат выполнения
// Фрагмент для трассировки.
package main
func main(){ n:=0; done:=make(chan struct{},2); for i:=0;i<2;i++{ go func(){ n++; done<-struct{}{} }() }; <-done; <-done; _=n }
Вопрос 7 из 25
Команда проверяет решение по теме «Состояния гонки». Как подготовить этот код к реальному использованию?
GoСостояния гонки: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
func main(){ n:=0; done:=make(chan struct{},2); for i:=0;i<2;i++{ go func(){ n++; done<-struct{}{} }() }; <-done; <-done; _=n }
Вопрос 8 из 25
Перед публикацией кода по теме «Состояния гонки» нужно уточнить контракт. Какой контракт определяет результат показанного кода?
GoСостояния гонки: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
func main(){ n:=0; done:=make(chan struct{},2); for i:=0;i<2;i++{ go func(){ n++; done<-struct{}{} }() }; <-done; <-done; _=n }
Вопрос 9 из 25
В рабочем примере по теме «Состояния гонки» важно отделить гарантию от догадки. Какое допущение здесь чаще всего оказывается ложным?
Вопрос 10 из 25
Фрагмент относится к теме «Состояния гонки». Какое замечание о цене решения будет точным?
Вопрос 11 из 25
Команда проверяет решение по теме «Атомарные операции». Что гарантированно произойдёт в показанной последовательности операций?
GoАтомарные операции: результат выполнения
// Фрагмент для трассировки.
package main
import "sync/atomic"
func main(){ var n atomic.Int64; n.Add(1); _=n.Load() }
Вопрос 12 из 25
Перед публикацией кода по теме «Атомарные операции» нужно уточнить контракт. Какой вариант исправления соответствует обычной практике Go?
GoАтомарные операции: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "sync/atomic"
func main(){ var n atomic.Int64; n.Add(1); _=n.Load() }
Вопрос 13 из 25
В рабочем примере по теме «Атомарные операции» важно отделить гарантию от догадки. Какой принцип языка объясняет результат полностью?
GoАтомарные операции: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "sync/atomic"
func main(){ var n atomic.Int64; n.Add(1); _=n.Load() }
Вопрос 14 из 25
Фрагмент относится к теме «Атомарные операции». Какой предел контракта важен для вызывающего кода?
Вопрос 15 из 25
На ревью разбирают тему «Атомарные операции». Как решение скажется на тестировании и дальнейших изменениях?
Вопрос 16 из 25
Перед публикацией кода по теме «Безопасная публикация» нужно уточнить контракт. Какое наблюдение о работе кода будет верным?
GoБезопасная публикация: результат выполнения
// Фрагмент для трассировки.
package main
type Config struct{ Port int }
func main(){ ch:=make(chan *Config,1); go func(){ c:=&Config{Port:8080}; ch<-c }(); _=(<-ch).Port }
Вопрос 17 из 25
В рабочем примере по теме «Безопасная публикация» важно отделить гарантию от догадки. Какую правку разумнее внести до объединения изменений?
GoБезопасная публикация: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
type Config struct{ Port int }
func main(){ ch:=make(chan *Config,1); go func(){ c:=&Config{Port:8080}; ch<-c }(); _=(<-ch).Port }
Вопрос 18 из 25
Фрагмент относится к теме «Безопасная публикация». Какое правило Go непосредственно объясняет поведение фрагмента?
GoБезопасная публикация: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
type Config struct{ Port int }
func main(){ ch:=make(chan *Config,1); go func(){ c:=&Config{Port:8080}; ch<-c }(); _=(<-ch).Port }
Вопрос 19 из 25
На ревью разбирают тему «Безопасная публикация». Где заканчивается гарантия показанного приёма?
Вопрос 20 из 25
В разделе «Безопасная публикация» показан конкретный случай. Когда этот приём помогает, а когда начинает мешать?
Вопрос 21 из 25
В рабочем примере по теме «Тестирование и наблюдаемость» важно отделить гарантию от догадки в тесте «Модель памяти и состояния гонки». Каков наблюдаемый результат этого кода?
BashТестирование и наблюдаемость: результат выполнения
go test -race -count=20 ./...
Вопрос 22 из 25
Фрагмент относится к теме «Тестирование и наблюдаемость» в тесте «Модель памяти и состояния гонки». Какое изменение лучше всего укрепит контракт этого фрагмента?
BashТестирование и наблюдаемость: фрагмент на ревью
go test -race -count=20 ./...
# Задача: выбрать безопасную правку или способ проверки.
Вопрос 23 из 25
На ревью разбирают тему «Тестирование и наблюдаемость» в тесте «Модель памяти и состояния гонки». Какое утверждение точнее всего описывает действующую гарантию?
BashТестирование и наблюдаемость: проверка контракта
go test -race -count=20 ./...
# Требуется объяснить правило, а не только назвать команду.
Вопрос 24 из 25
В разделе «Тестирование и наблюдаемость» показан конкретный случай в тесте «Модель памяти и состояния гонки». Что может изменить вывод при небольшом изменении условий?
Вопрос 25 из 25
Команда проверяет решение по теме «Тестирование и наблюдаемость» в тесте «Модель памяти и состояния гонки». Как решение влияет на читаемость и надёжность?

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

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

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

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