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

context и отмена

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

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат и результаты по 5 тематическим шкалам с объяснениями и практическими рекомендациями.
Вопрос 1 из 25
Фрагмент относится к теме «Предельный срок». Какой итог можно предсказать без пробного запуска?
GoПредельный срок: результат выполнения
// Фрагмент для трассировки.
package main
import("context";"time")
func main(){ p,cancel:=context.WithTimeout(context.Background(),10*time.Millisecond); defer cancel(); c,stop:=context.WithTimeout(p,time.Second); defer stop(); <-c.Done() }
Вопрос 2 из 25
На ревью разбирают тему «Предельный срок». Как изменить решение, не ломая его исходную задачу?
GoПредельный срок: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import("context";"time")
func main(){ p,cancel:=context.WithTimeout(context.Background(),10*time.Millisecond); defer cancel(); c,stop:=context.WithTimeout(p,time.Second); defer stop(); <-c.Done() }
Вопрос 3 из 25
В разделе «Предельный срок» показан конкретный случай. Какое утверждение остаётся верным на всех поддерживаемых платформах?
GoПредельный срок: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import("context";"time")
func main(){ p,cancel:=context.WithTimeout(context.Background(),10*time.Millisecond); defer cancel(); c,stop:=context.WithTimeout(p,time.Second); defer stop(); <-c.Done() }
Вопрос 4 из 25
Команда проверяет решение по теме «Предельный срок». Какое условие нельзя считать выполненным по умолчанию?
Вопрос 5 из 25
Перед публикацией кода по теме «Предельный срок» нужно уточнить контракт. Какой вариант честно называет и преимущество, и издержку?
Вопрос 6 из 25
На ревью разбирают тему «Отмена». Как точнее всего описать выполнение фрагмента?
GoОтмена: результат выполнения
// Фрагмент для трассировки.
package main
import "context"
func main(){ ctx,cancel:=context.WithCancel(context.Background()); done:=make(chan struct{}); go func(){ <-ctx.Done(); close(done) }(); cancel(); <-done }
Вопрос 7 из 25
В разделе «Отмена» показан конкретный случай. Какая доработка делает поведение явным для вызывающего кода?
GoОтмена: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "context"
func main(){ ctx,cancel:=context.WithCancel(context.Background()); done:=make(chan struct{}); go func(){ <-ctx.Done(); close(done) }(); cancel(); <-done }
Вопрос 8 из 25
Команда проверяет решение по теме «Отмена». Какое правило достаточно применить для проверки ответа?
GoОтмена: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "context"
func main(){ ctx,cancel:=context.WithCancel(context.Background()); done:=make(chan struct{}); go func(){ <-ctx.Done(); close(done) }(); cancel(); <-done }
Вопрос 9 из 25
Перед публикацией кода по теме «Отмена» нужно уточнить контракт. Какой граничный случай нужно проверить отдельно?
Вопрос 10 из 25
В рабочем примере по теме «Отмена» важно отделить гарантию от догадки. Какой инженерный компромисс здесь действительно существует?
Вопрос 11 из 25
В разделе «Значения контекста» показан конкретный случай. Что именно произойдёт при выполнении показанного фрагмента?
GoЗначения контекста: результат выполнения
// Фрагмент для трассировки.
package main
import "context"
type key int
const traceKey key = 0
func main(){ ctx:=context.WithValue(context.Background(),traceKey,"abc"); _=ctx.Value(traceKey) }
Вопрос 12 из 25
Команда проверяет решение по теме «Значения контекста». Как исправить основной риск без ненужной перестройки решения?
GoЗначения контекста: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "context"
type key int
const traceKey key = 0
func main(){ ctx:=context.WithValue(context.Background(),traceKey,"abc"); _=ctx.Value(traceKey) }
Вопрос 13 из 25
Перед публикацией кода по теме «Значения контекста» нужно уточнить контракт. Какой принцип позволяет вывести ответ без запуска программы?
GoЗначения контекста: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "context"
type key int
const traceKey key = 0
func main(){ ctx:=context.WithValue(context.Background(),traceKey,"abc"); _=ctx.Value(traceKey) }
Вопрос 14 из 25
В рабочем примере по теме «Значения контекста» важно отделить гарантию от догадки. Какой контрпример разрушит слишком широкое толкование правила?
Вопрос 15 из 25
Фрагмент относится к теме «Значения контекста». Что важно учесть помимо формальной корректности?
Вопрос 16 из 25
Команда проверяет решение по теме «Передача контекста». Какое описание результата совпадает с правилами Go?
GoПередача контекста: результат выполнения
// Фрагмент для трассировки.
package main
import "context"
func Load(ctx context.Context,id int) error { return ctx.Err() }
func main(){ _=Load(context.Background(),1) }
Вопрос 17 из 25
Перед публикацией кода по теме «Передача контекста» нужно уточнить контракт. Какая правка устраняет причину, а не маскирует её проявление?
GoПередача контекста: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "context"
func Load(ctx context.Context,id int) error { return ctx.Err() }
func main(){ _=Load(context.Background(),1) }
Вопрос 18 из 25
В рабочем примере по теме «Передача контекста» важно отделить гарантию от догадки. Что именно гарантирует Go в этой ситуации?
GoПередача контекста: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "context"
func Load(ctx context.Context,id int) error { return ctx.Err() }
func main(){ _=Load(context.Background(),1) }
Вопрос 19 из 25
Фрагмент относится к теме «Передача контекста». Что нельзя автоматически переносить на похожий код?
Вопрос 20 из 25
На ревью разбирают тему «Передача контекста». Как оценить этот подход для производственного кода?
Вопрос 21 из 25
Перед публикацией кода по теме «Тестирование и наблюдаемость» нужно уточнить контракт. Какой итог можно предсказать без пробного запуска?
GoТестирование и наблюдаемость: результат выполнения
// Фрагмент для трассировки.
package sample
import("context";"testing";"time")
func TestDeadline(t *testing.T){ ctx,cancel:=context.WithTimeout(context.Background(),time.Millisecond); defer cancel(); <-ctx.Done(); if ctx.Err()!=context.DeadlineExceeded{t.Fatal(ctx.Err())} }
Вопрос 22 из 25
В рабочем примере по теме «Тестирование и наблюдаемость» важно отделить гарантию от догадки. Как изменить решение, не ломая его исходную задачу?
GoТестирование и наблюдаемость: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package sample
import("context";"testing";"time")
func TestDeadline(t *testing.T){ ctx,cancel:=context.WithTimeout(context.Background(),time.Millisecond); defer cancel(); <-ctx.Done(); if ctx.Err()!=context.DeadlineExceeded{t.Fatal(ctx.Err())} }
Вопрос 23 из 25
Фрагмент относится к теме «Тестирование и наблюдаемость». Какое утверждение остаётся верным на всех поддерживаемых платформах?
GoТестирование и наблюдаемость: проверка контракта
// Определите правило Go, которое объясняет результат.
package sample
import("context";"testing";"time")
func TestDeadline(t *testing.T){ ctx,cancel:=context.WithTimeout(context.Background(),time.Millisecond); defer cancel(); <-ctx.Done(); if ctx.Err()!=context.DeadlineExceeded{t.Fatal(ctx.Err())} }
Вопрос 24 из 25
На ревью разбирают тему «Тестирование и наблюдаемость». Какое условие нельзя считать выполненным по умолчанию?
Вопрос 25 из 25
В разделе «Тестирование и наблюдаемость» показан конкретный случай. Какой вариант честно называет и преимущество, и издержку?

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

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

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

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