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

select и таймауты

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

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат и результаты по 5 тематическим шкалам с объяснениями и практическими рекомендациями.
Вопрос 1 из 25
На ревью разбирают тему «Выбор операций select». Что гарантированно произойдёт в показанной последовательности операций?
GoВыбор операций select: результат выполнения
// Фрагмент для трассировки.
package main
func main(){ a:=make(chan int,1); b:=make(chan int,1); a<-1; b<-2; select{case <-a: case <-b:} }
Вопрос 2 из 25
В разделе «Выбор операций select» показан конкретный случай. Какой вариант исправления соответствует обычной практике Go?
GoВыбор операций select: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
func main(){ a:=make(chan int,1); b:=make(chan int,1); a<-1; b<-2; select{case <-a: case <-b:} }
Вопрос 3 из 25
Команда проверяет решение по теме «Выбор операций select». Какой принцип языка объясняет результат полностью?
GoВыбор операций select: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
func main(){ a:=make(chan int,1); b:=make(chan int,1); a<-1; b<-2; select{case <-a: case <-b:} }
Вопрос 4 из 25
Перед публикацией кода по теме «Выбор операций select» нужно уточнить контракт. Какой предел контракта важен для вызывающего кода?
Вопрос 5 из 25
В рабочем примере по теме «Выбор операций select» важно отделить гарантию от догадки. Как решение скажется на тестировании и дальнейших изменениях?
Вопрос 6 из 25
В разделе «Неблокирующая ветвь default» показан конкретный случай. Какое наблюдение о работе кода будет верным?
GoНеблокирующая ветвь default: результат выполнения
// Фрагмент для трассировки.
package main
import "fmt"
func main(){ ch:=make(chan int); select{case ch<-1: fmt.Println("sent"); default: fmt.Println("busy")} }
Вопрос 7 из 25
Команда проверяет решение по теме «Неблокирующая ветвь default». Какую правку разумнее внести до объединения изменений?
GoНеблокирующая ветвь default: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "fmt"
func main(){ ch:=make(chan int); select{case ch<-1: fmt.Println("sent"); default: fmt.Println("busy")} }
Вопрос 8 из 25
Перед публикацией кода по теме «Неблокирующая ветвь default» нужно уточнить контракт. Какое правило Go непосредственно объясняет поведение фрагмента?
GoНеблокирующая ветвь default: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "fmt"
func main(){ ch:=make(chan int); select{case ch<-1: fmt.Println("sent"); default: fmt.Println("busy")} }
Вопрос 9 из 25
В рабочем примере по теме «Неблокирующая ветвь default» важно отделить гарантию от догадки. Где заканчивается гарантия показанного приёма?
Вопрос 10 из 25
Фрагмент относится к теме «Неблокирующая ветвь default». Когда этот приём помогает, а когда начинает мешать?
Вопрос 11 из 25
Команда проверяет решение по теме «Таймеры». Каков наблюдаемый результат этого кода?
GoТаймеры: результат выполнения
// Фрагмент для трассировки.
package main
import "time"
func main(){ timer:=time.NewTimer(time.Millisecond); defer timer.Stop(); <-timer.C }
Вопрос 12 из 25
Перед публикацией кода по теме «Таймеры» нужно уточнить контракт. Какое изменение лучше всего укрепит контракт этого фрагмента?
GoТаймеры: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "time"
func main(){ timer:=time.NewTimer(time.Millisecond); defer timer.Stop(); <-timer.C }
Вопрос 13 из 25
В рабочем примере по теме «Таймеры» важно отделить гарантию от догадки. Какое утверждение точнее всего описывает действующую гарантию?
GoТаймеры: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "time"
func main(){ timer:=time.NewTimer(time.Millisecond); defer timer.Stop(); <-timer.C }
Вопрос 14 из 25
Фрагмент относится к теме «Таймеры». Что может изменить вывод при небольшом изменении условий?
Вопрос 15 из 25
На ревью разбирают тему «Таймеры». Как решение влияет на читаемость и надёжность?
Вопрос 16 из 25
Перед публикацией кода по теме «Координация каналов» нужно уточнить контракт. Что увидит вызывающий код после выполнения?
GoКоординация каналов: результат выполнения
// Фрагмент для трассировки.
package main
func main(){ a:=make(chan int); b:=make(chan int); close(a); close(b); for a!=nil||b!=nil{ select{case _,ok:=<-a: if !ok{a=nil}; case _,ok:=<-b: if !ok{b=nil}} } }
Вопрос 17 из 25
В рабочем примере по теме «Координация каналов» важно отделить гарантию от догадки. Как подготовить этот код к реальному использованию?
GoКоординация каналов: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
func main(){ a:=make(chan int); b:=make(chan int); close(a); close(b); for a!=nil||b!=nil{ select{case _,ok:=<-a: if !ok{a=nil}; case _,ok:=<-b: if !ok{b=nil}} } }
Вопрос 18 из 25
Фрагмент относится к теме «Координация каналов». Какой контракт определяет результат показанного кода?
GoКоординация каналов: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
func main(){ a:=make(chan int); b:=make(chan int); close(a); close(b); for a!=nil||b!=nil{ select{case _,ok:=<-a: if !ok{a=nil}; case _,ok:=<-b: if !ok{b=nil}} } }
Вопрос 19 из 25
На ревью разбирают тему «Координация каналов». Какое допущение здесь чаще всего оказывается ложным?
Вопрос 20 из 25
В разделе «Координация каналов» показан конкретный случай. Какое замечание о цене решения будет точным?
Вопрос 21 из 25
В рабочем примере по теме «Тестирование и наблюдаемость» важно отделить гарантию от догадки в тесте «select и таймауты». Что гарантированно произойдёт в показанной последовательности операций?
GoТестирование и наблюдаемость: результат выполнения
// Фрагмент для трассировки.
package sample
import("testing";"time")
func TestSignal(t *testing.T){ ch:=make(chan struct{}); close(ch); select{case <-ch: case <-time.After(500*time.Millisecond): t.Fatal("timeout")} }
Вопрос 22 из 25
Фрагмент относится к теме «Тестирование и наблюдаемость» в тесте «select и таймауты». Какой вариант исправления соответствует обычной практике Go?
GoТестирование и наблюдаемость: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package sample
import("testing";"time")
func TestSignal(t *testing.T){ ch:=make(chan struct{}); close(ch); select{case <-ch: case <-time.After(500*time.Millisecond): t.Fatal("timeout")} }
Вопрос 23 из 25
На ревью разбирают тему «Тестирование и наблюдаемость» в тесте «select и таймауты». Какой принцип языка объясняет результат полностью?
GoТестирование и наблюдаемость: проверка контракта
// Определите правило Go, которое объясняет результат.
package sample
import("testing";"time")
func TestSignal(t *testing.T){ ch:=make(chan struct{}); close(ch); select{case <-ch: case <-time.After(500*time.Millisecond): t.Fatal("timeout")} }
Вопрос 24 из 25
В разделе «Тестирование и наблюдаемость» показан конкретный случай в тесте «select и таймауты». Какой предел контракта важен для вызывающего кода?
Вопрос 25 из 25
Команда проверяет решение по теме «Тестирование и наблюдаемость» в тесте «select и таймауты». Как решение скажется на тестировании и дальнейших изменениях?

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

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

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

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