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

Каналы

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

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат и результаты по 5 тематическим шкалам с объяснениями и практическими рекомендациями.
Вопрос 1 из 25
Команда проверяет решение по теме «Буфер». Как точнее всего описать выполнение фрагмента?
GoБуфер: результат выполнения
// Фрагмент для трассировки.
package main
func main(){ ch:=make(chan int,2); ch<-1; ch<-2; _=ch }
Вопрос 2 из 25
Перед публикацией кода по теме «Буфер» нужно уточнить контракт. Какая доработка делает поведение явным для вызывающего кода?
GoБуфер: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
func main(){ ch:=make(chan int,2); ch<-1; ch<-2; _=ch }
Вопрос 3 из 25
В рабочем примере по теме «Буфер» важно отделить гарантию от догадки. Какое правило достаточно применить для проверки ответа?
GoБуфер: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
func main(){ ch:=make(chan int,2); ch<-1; ch<-2; _=ch }
Вопрос 4 из 25
Фрагмент относится к теме «Буфер». Какой граничный случай нужно проверить отдельно?
Вопрос 5 из 25
На ревью разбирают тему «Буфер». Какой инженерный компромисс здесь действительно существует?
Вопрос 6 из 25
Перед публикацией кода по теме «Отправка и чтение» нужно уточнить контракт. Что именно произойдёт при выполнении показанного фрагмента?
GoОтправка и чтение: результат выполнения
// Фрагмент для трассировки.
package main
func main(){ ch:=make(chan int); go func(){ ch<-7 }(); _=<-ch }
Вопрос 7 из 25
В рабочем примере по теме «Отправка и чтение» важно отделить гарантию от догадки. Как исправить основной риск без ненужной перестройки решения?
GoОтправка и чтение: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
func main(){ ch:=make(chan int); go func(){ ch<-7 }(); _=<-ch }
Вопрос 8 из 25
Фрагмент относится к теме «Отправка и чтение». Какой принцип позволяет вывести ответ без запуска программы?
GoОтправка и чтение: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
func main(){ ch:=make(chan int); go func(){ ch<-7 }(); _=<-ch }
Вопрос 9 из 25
На ревью разбирают тему «Отправка и чтение». Какой контрпример разрушит слишком широкое толкование правила?
Вопрос 10 из 25
В разделе «Отправка и чтение» показан конкретный случай. Что важно учесть помимо формальной корректности?
Вопрос 11 из 25
В рабочем примере по теме «Закрытие» важно отделить гарантию от догадки. Какое описание результата совпадает с правилами Go?
GoЗакрытие: результат выполнения
// Фрагмент для трассировки.
package main
func main(){ ch:=make(chan int,2); ch<-1; ch<-2; close(ch); for range ch{} }
Вопрос 12 из 25
Фрагмент относится к теме «Закрытие». Какая правка устраняет причину, а не маскирует её проявление?
GoЗакрытие: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
func main(){ ch:=make(chan int,2); ch<-1; ch<-2; close(ch); for range ch{} }
Вопрос 13 из 25
На ревью разбирают тему «Закрытие». Что именно гарантирует Go в этой ситуации?
GoЗакрытие: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
func main(){ ch:=make(chan int,2); ch<-1; ch<-2; close(ch); for range ch{} }
Вопрос 14 из 25
В разделе «Закрытие» показан конкретный случай. Что нельзя автоматически переносить на похожий код?
Вопрос 15 из 25
Команда проверяет решение по теме «Закрытие». Как оценить этот подход для производственного кода?
Вопрос 16 из 25
Фрагмент относится к теме «Направленные каналы». Какой итог можно предсказать без пробного запуска?
GoНаправленные каналы: результат выполнения
// Фрагмент для трассировки.
package main
func produce(out chan<- int){ out<-1 }
func main(){ ch:=make(chan int,1); produce(ch); _=<-ch }
Вопрос 17 из 25
На ревью разбирают тему «Направленные каналы». Как изменить решение, не ломая его исходную задачу?
GoНаправленные каналы: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
func produce(out chan<- int){ out<-1 }
func main(){ ch:=make(chan int,1); produce(ch); _=<-ch }
Вопрос 18 из 25
В разделе «Направленные каналы» показан конкретный случай. Какое утверждение остаётся верным на всех поддерживаемых платформах?
GoНаправленные каналы: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
func produce(out chan<- int){ out<-1 }
func main(){ ch:=make(chan int,1); produce(ch); _=<-ch }
Вопрос 19 из 25
Команда проверяет решение по теме «Направленные каналы». Какое условие нельзя считать выполненным по умолчанию?
Вопрос 20 из 25
Перед публикацией кода по теме «Направленные каналы» нужно уточнить контракт. Какой вариант честно называет и преимущество, и издержку?
Вопрос 21 из 25
На ревью разбирают тему «Тестирование и наблюдаемость». Как точнее всего описать выполнение фрагмента?
GoТестирование и наблюдаемость: результат выполнения
// Фрагмент для трассировки.
package sample
import "testing"
func TestClosed(t *testing.T){ ch:=make(chan int); close(ch); v,ok:=<-ch; if v!=0||ok{t.Fatal(v,ok)} }
Вопрос 22 из 25
В разделе «Тестирование и наблюдаемость» показан конкретный случай. Какая доработка делает поведение явным для вызывающего кода?
GoТестирование и наблюдаемость: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package sample
import "testing"
func TestClosed(t *testing.T){ ch:=make(chan int); close(ch); v,ok:=<-ch; if v!=0||ok{t.Fatal(v,ok)} }
Вопрос 23 из 25
Команда проверяет решение по теме «Тестирование и наблюдаемость». Какое правило достаточно применить для проверки ответа?
GoТестирование и наблюдаемость: проверка контракта
// Определите правило Go, которое объясняет результат.
package sample
import "testing"
func TestClosed(t *testing.T){ ch:=make(chan int); close(ch); v,ok:=<-ch; if v!=0||ok{t.Fatal(v,ok)} }
Вопрос 24 из 25
Перед публикацией кода по теме «Тестирование и наблюдаемость» нужно уточнить контракт. Какой граничный случай нужно проверить отдельно?
Вопрос 25 из 25
В рабочем примере по теме «Тестирование и наблюдаемость» важно отделить гарантию от догадки. Какой инженерный компромисс здесь действительно существует?

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

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

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

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