GO Go  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Ошибки как значения

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

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат и результаты по 4 тематическим шкалам с объяснениями и практическими рекомендациями.
Вопрос 1 из 20
Команда проверяет решение по теме «Создание ошибок». Какое описание результата совпадает с правилами Go?
GoСоздание ошибок: результат выполнения
// Фрагмент для трассировки.
package main
import "errors"
func sqrt(n int) (int,error){ if n<0{return 0,errors.New("negative")}; return n,nil }
func main(){ _,_ = sqrt(-1) }
Вопрос 2 из 20
Перед публикацией кода по теме «Создание ошибок» нужно уточнить контракт. Какая правка устраняет причину, а не маскирует её проявление?
GoСоздание ошибок: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "errors"
func sqrt(n int) (int,error){ if n<0{return 0,errors.New("negative")}; return n,nil }
func main(){ _,_ = sqrt(-1) }
Вопрос 3 из 20
В рабочем примере по теме «Создание ошибок» важно отделить гарантию от догадки. Что именно гарантирует Go в этой ситуации?
GoСоздание ошибок: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "errors"
func sqrt(n int) (int,error){ if n<0{return 0,errors.New("negative")}; return n,nil }
func main(){ _,_ = sqrt(-1) }
Вопрос 4 из 20
Фрагмент относится к теме «Создание ошибок». Что нельзя автоматически переносить на похожий код?
Вопрос 5 из 20
На ревью разбирают тему «Создание ошибок». Как оценить этот подход для производственного кода?
Вопрос 6 из 20
Перед публикацией кода по теме «Оборачивание» нужно уточнить контракт. Какой итог можно предсказать без пробного запуска?
GoОборачивание: результат выполнения
// Фрагмент для трассировки.
package main
import("errors";"fmt")
var ErrMissing=errors.New("missing")
func load() error { return fmt.Errorf("config: %w", ErrMissing) }
func main(){ _=load() }
Вопрос 7 из 20
В рабочем примере по теме «Оборачивание» важно отделить гарантию от догадки. Как изменить решение, не ломая его исходную задачу?
GoОборачивание: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import("errors";"fmt")
var ErrMissing=errors.New("missing")
func load() error { return fmt.Errorf("config: %w", ErrMissing) }
func main(){ _=load() }
Вопрос 8 из 20
Фрагмент относится к теме «Оборачивание». Какое утверждение остаётся верным на всех поддерживаемых платформах?
GoОборачивание: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import("errors";"fmt")
var ErrMissing=errors.New("missing")
func load() error { return fmt.Errorf("config: %w", ErrMissing) }
func main(){ _=load() }
Вопрос 9 из 20
На ревью разбирают тему «Оборачивание». Какое условие нельзя считать выполненным по умолчанию?
Вопрос 10 из 20
В разделе «Оборачивание» показан конкретный случай. Какой вариант честно называет и преимущество, и издержку?
Вопрос 11 из 20
В рабочем примере по теме «Проверка цепочки errors.Is» важно отделить гарантию от догадки. Как точнее всего описать выполнение фрагмента?
GoПроверка цепочки errors.Is: результат выполнения
// Фрагмент для трассировки.
package main
import("errors";"fmt")
var ErrMissing=errors.New("missing")
func main(){ err:=fmt.Errorf("open: %w",ErrMissing); _=errors.Is(err,ErrMissing) }
Вопрос 12 из 20
Фрагмент относится к теме «Проверка цепочки errors.Is». Какая доработка делает поведение явным для вызывающего кода?
GoПроверка цепочки errors.Is: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import("errors";"fmt")
var ErrMissing=errors.New("missing")
func main(){ err:=fmt.Errorf("open: %w",ErrMissing); _=errors.Is(err,ErrMissing) }
Вопрос 13 из 20
На ревью разбирают тему «Проверка цепочки errors.Is». Какое правило достаточно применить для проверки ответа?
GoПроверка цепочки errors.Is: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import("errors";"fmt")
var ErrMissing=errors.New("missing")
func main(){ err:=fmt.Errorf("open: %w",ErrMissing); _=errors.Is(err,ErrMissing) }
Вопрос 14 из 20
В разделе «Проверка цепочки errors.Is» показан конкретный случай. Какой граничный случай нужно проверить отдельно?
Вопрос 15 из 20
Команда проверяет решение по теме «Проверка цепочки errors.Is». Какой инженерный компромисс здесь действительно существует?
Вопрос 16 из 20
Фрагмент относится к теме «Проектирование контекста». Что именно произойдёт при выполнении показанного фрагмента?
GoПроектирование контекста: результат выполнения
// Фрагмент для трассировки.
package main
import "fmt"
func parse(id int, err error) error { return fmt.Errorf("parse invoice %d: %w", id, err) }
func main(){}
Вопрос 17 из 20
На ревью разбирают тему «Проектирование контекста». Как исправить основной риск без ненужной перестройки решения?
GoПроектирование контекста: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "fmt"
func parse(id int, err error) error { return fmt.Errorf("parse invoice %d: %w", id, err) }
func main(){}
Вопрос 18 из 20
В разделе «Проектирование контекста» показан конкретный случай. Какой принцип позволяет вывести ответ без запуска программы?
GoПроектирование контекста: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "fmt"
func parse(id int, err error) error { return fmt.Errorf("parse invoice %d: %w", id, err) }
func main(){}
Вопрос 19 из 20
Команда проверяет решение по теме «Проектирование контекста». Какой контрпример разрушит слишком широкое толкование правила?
Вопрос 20 из 20
Перед публикацией кода по теме «Проектирование контекста» нужно уточнить контракт. Что важно учесть помимо формальной корректности?

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

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

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

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