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

Горутины

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

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат и результаты по 5 тематическим шкалам с объяснениями и практическими рекомендациями.
Вопрос 1 из 25
Фрагмент относится к теме «Запуск». Что именно произойдёт при выполнении показанного фрагмента?
GoЗапуск: результат выполнения
// Фрагмент для трассировки.
package main
func work(int){}
func main(){ n:=1; go work(n); n=2 }
Вопрос 2 из 25
На ревью разбирают тему «Запуск». Как исправить основной риск без ненужной перестройки решения?
GoЗапуск: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
func work(int){}
func main(){ n:=1; go work(n); n=2 }
Вопрос 3 из 25
В разделе «Запуск» показан конкретный случай. Какой принцип позволяет вывести ответ без запуска программы?
GoЗапуск: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
func work(int){}
func main(){ n:=1; go work(n); n=2 }
Вопрос 4 из 25
Команда проверяет решение по теме «Запуск». Какой контрпример разрушит слишком широкое толкование правила?
Вопрос 5 из 25
Перед публикацией кода по теме «Запуск» нужно уточнить контракт. Что важно учесть помимо формальной корректности?
Вопрос 6 из 25
На ревью разбирают тему «Планирование». Какое описание результата совпадает с правилами Go?
GoПланирование: результат выполнения
// Фрагмент для трассировки.
package main
import "fmt"
func main(){ go fmt.Print("A"); go fmt.Print("B"); select{} }
Вопрос 7 из 25
В разделе «Планирование» показан конкретный случай. Какая правка устраняет причину, а не маскирует её проявление?
GoПланирование: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "fmt"
func main(){ go fmt.Print("A"); go fmt.Print("B"); select{} }
Вопрос 8 из 25
Команда проверяет решение по теме «Планирование». Что именно гарантирует Go в этой ситуации?
GoПланирование: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "fmt"
func main(){ go fmt.Print("A"); go fmt.Print("B"); select{} }
Вопрос 9 из 25
Перед публикацией кода по теме «Планирование» нужно уточнить контракт. Что нельзя автоматически переносить на похожий код?
Вопрос 10 из 25
В рабочем примере по теме «Планирование» важно отделить гарантию от догадки. Как оценить этот подход для производственного кода?
Вопрос 11 из 25
В разделе «Утечки горутин» показан конкретный случай. Какой итог можно предсказать без пробного запуска?
GoУтечки горутин: результат выполнения
// Фрагмент для трассировки.
package main
func main(){ ch:=make(chan int); go func(){ ch<-1 }(); _=ch }
Вопрос 12 из 25
Команда проверяет решение по теме «Утечки горутин». Как изменить решение, не ломая его исходную задачу?
GoУтечки горутин: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
func main(){ ch:=make(chan int); go func(){ ch<-1 }(); _=ch }
Вопрос 13 из 25
Перед публикацией кода по теме «Утечки горутин» нужно уточнить контракт. Какое утверждение остаётся верным на всех поддерживаемых платформах?
GoУтечки горутин: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
func main(){ ch:=make(chan int); go func(){ ch<-1 }(); _=ch }
Вопрос 14 из 25
В рабочем примере по теме «Утечки горутин» важно отделить гарантию от догадки. Какое условие нельзя считать выполненным по умолчанию?
Вопрос 15 из 25
Фрагмент относится к теме «Утечки горутин». Какой вариант честно называет и преимущество, и издержку?
Вопрос 16 из 25
Команда проверяет решение по теме «Завершение». Как точнее всего описать выполнение фрагмента?
GoЗавершение: результат выполнения
// Фрагмент для трассировки.
package main
import "sync"
func main(){ var wg sync.WaitGroup; wg.Add(2); for i:=0;i<2;i++{ go func(){ defer wg.Done() }() }; wg.Wait() }
Вопрос 17 из 25
Перед публикацией кода по теме «Завершение» нужно уточнить контракт. Какая доработка делает поведение явным для вызывающего кода?
GoЗавершение: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "sync"
func main(){ var wg sync.WaitGroup; wg.Add(2); for i:=0;i<2;i++{ go func(){ defer wg.Done() }() }; wg.Wait() }
Вопрос 18 из 25
В рабочем примере по теме «Завершение» важно отделить гарантию от догадки. Какое правило достаточно применить для проверки ответа?
GoЗавершение: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "sync"
func main(){ var wg sync.WaitGroup; wg.Add(2); for i:=0;i<2;i++{ go func(){ defer wg.Done() }() }; wg.Wait() }
Вопрос 19 из 25
Фрагмент относится к теме «Завершение». Какой граничный случай нужно проверить отдельно?
Вопрос 20 из 25
На ревью разбирают тему «Завершение». Какой инженерный компромисс здесь действительно существует?
Вопрос 21 из 25
Перед публикацией кода по теме «Тестирование и наблюдаемость» нужно уточнить контракт в тесте «Горутины». Что именно произойдёт при выполнении показанного фрагмента?
GoТестирование и наблюдаемость: результат выполнения
// Фрагмент для трассировки.
package sample
import("testing";"time")
func TestWork(t *testing.T){ done:=make(chan struct{}); go func(){ close(done) }(); select{case <-done: case <-time.After(time.Second): t.Fatal("timeout")} }
Вопрос 22 из 25
В рабочем примере по теме «Тестирование и наблюдаемость» важно отделить гарантию от догадки в тесте «Горутины». Как исправить основной риск без ненужной перестройки решения?
GoТестирование и наблюдаемость: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package sample
import("testing";"time")
func TestWork(t *testing.T){ done:=make(chan struct{}); go func(){ close(done) }(); select{case <-done: case <-time.After(time.Second): t.Fatal("timeout")} }
Вопрос 23 из 25
Фрагмент относится к теме «Тестирование и наблюдаемость» в тесте «Горутины». Какой принцип позволяет вывести ответ без запуска программы?
GoТестирование и наблюдаемость: проверка контракта
// Определите правило Go, которое объясняет результат.
package sample
import("testing";"time")
func TestWork(t *testing.T){ done:=make(chan struct{}); go func(){ close(done) }(); select{case <-done: case <-time.After(time.Second): t.Fatal("timeout")} }
Вопрос 24 из 25
На ревью разбирают тему «Тестирование и наблюдаемость» в тесте «Горутины». Какой контрпример разрушит слишком широкое толкование правила?
Вопрос 25 из 25
В разделе «Тестирование и наблюдаемость» показан конкретный случай в тесте «Горутины». Что важно учесть помимо формальной корректности?

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

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

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

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