GO Go  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

Тесты и табличные сценарии

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат и результаты по 6 тематическим шкалам с объяснениями и практическими рекомендациями.
Вопрос 1 из 30
Перед публикацией кода по теме «Пакет testing» нужно уточнить контракт. Что увидит вызывающий код после выполнения?
GoПакет testing: результат выполнения
// Фрагмент для трассировки.
package sample
import "testing"
func assertEqual(t *testing.T,a,b int){t.Helper();if a!=b{t.Fatalf("%d != %d",a,b)}}
func TestX(t *testing.T){assertEqual(t,2,2)}
Вопрос 2 из 30
В рабочем примере по теме «Пакет testing» важно отделить гарантию от догадки. Как подготовить этот код к реальному использованию?
GoПакет testing: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package sample
import "testing"
func assertEqual(t *testing.T,a,b int){t.Helper();if a!=b{t.Fatalf("%d != %d",a,b)}}
func TestX(t *testing.T){assertEqual(t,2,2)}
Вопрос 3 из 30
Фрагмент относится к теме «Пакет testing». Какой контракт определяет результат показанного кода?
GoПакет testing: проверка контракта
// Определите правило Go, которое объясняет результат.
package sample
import "testing"
func assertEqual(t *testing.T,a,b int){t.Helper();if a!=b{t.Fatalf("%d != %d",a,b)}}
func TestX(t *testing.T){assertEqual(t,2,2)}
Вопрос 4 из 30
На ревью разбирают тему «Пакет testing». Какое допущение здесь чаще всего оказывается ложным?
Вопрос 5 из 30
В разделе «Пакет testing» показан конкретный случай. Какое замечание о цене решения будет точным?
Вопрос 6 из 30
В рабочем примере по теме «Табличные сценарии» важно отделить гарантию от догадки. Что гарантированно произойдёт в показанной последовательности операций?
GoТабличные сценарии: результат выполнения
// Фрагмент для трассировки.
package sample
import "testing"
func TestAbs(t *testing.T){cases:=[]struct{name string;in,want int}{{"negative",-2,2},{"zero",0,0},{"positive",3,3}};for _,tc:=range cases{t.Run(tc.name,func(t *testing.T){got:=tc.in;if got<0{got=-got};if got!=tc.want{t.Fatal(got)}})}}
Вопрос 7 из 30
Фрагмент относится к теме «Табличные сценарии». Какой вариант исправления соответствует обычной практике Go?
GoТабличные сценарии: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package sample
import "testing"
func TestAbs(t *testing.T){cases:=[]struct{name string;in,want int}{{"negative",-2,2},{"zero",0,0},{"positive",3,3}};for _,tc:=range cases{t.Run(tc.name,func(t *testing.T){got:=tc.in;if got<0{got=-got};if got!=tc.want{t.Fatal(got)}})}}
Вопрос 8 из 30
На ревью разбирают тему «Табличные сценарии». Какой принцип языка объясняет результат полностью?
GoТабличные сценарии: проверка контракта
// Определите правило Go, которое объясняет результат.
package sample
import "testing"
func TestAbs(t *testing.T){cases:=[]struct{name string;in,want int}{{"negative",-2,2},{"zero",0,0},{"positive",3,3}};for _,tc:=range cases{t.Run(tc.name,func(t *testing.T){got:=tc.in;if got<0{got=-got};if got!=tc.want{t.Fatal(got)}})}}
Вопрос 9 из 30
В разделе «Табличные сценарии» показан конкретный случай. Какой предел контракта важен для вызывающего кода?
Вопрос 10 из 30
Команда проверяет решение по теме «Табличные сценарии». Как решение скажется на тестировании и дальнейших изменениях?
Вопрос 11 из 30
Фрагмент относится к теме «Подтесты». Какое наблюдение о работе кода будет верным?
GoПодтесты: результат выполнения
// Фрагмент для трассировки.
package sample
import "testing"
func TestCases(t *testing.T){for _,name:=range []string{"a","b"}{name:=name;t.Run(name,func(t *testing.T){t.Parallel();_ = name})}}
Вопрос 12 из 30
На ревью разбирают тему «Подтесты». Какую правку разумнее внести до объединения изменений?
GoПодтесты: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package sample
import "testing"
func TestCases(t *testing.T){for _,name:=range []string{"a","b"}{name:=name;t.Run(name,func(t *testing.T){t.Parallel();_ = name})}}
Вопрос 13 из 30
В разделе «Подтесты» показан конкретный случай. Какое правило Go непосредственно объясняет поведение фрагмента?
GoПодтесты: проверка контракта
// Определите правило Go, которое объясняет результат.
package sample
import "testing"
func TestCases(t *testing.T){for _,name:=range []string{"a","b"}{name:=name;t.Run(name,func(t *testing.T){t.Parallel();_ = name})}}
Вопрос 14 из 30
Команда проверяет решение по теме «Подтесты». Где заканчивается гарантия показанного приёма?
Вопрос 15 из 30
Перед публикацией кода по теме «Подтесты» нужно уточнить контракт. Когда этот приём помогает, а когда начинает мешать?
Вопрос 16 из 30
На ревью разбирают тему «Подмены». Каков наблюдаемый результат этого кода?
GoПодмены: результат выполнения
// Фрагмент для трассировки.
package main
import "time"
type Clock func() time.Time
func age(now Clock,t time.Time)time.Duration{return now().Sub(t)}
func main(){}
Вопрос 17 из 30
В разделе «Подмены» показан конкретный случай. Какое изменение лучше всего укрепит контракт этого фрагмента?
GoПодмены: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "time"
type Clock func() time.Time
func age(now Clock,t time.Time)time.Duration{return now().Sub(t)}
func main(){}
Вопрос 18 из 30
Команда проверяет решение по теме «Подмены». Какое утверждение точнее всего описывает действующую гарантию?
GoПодмены: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "time"
type Clock func() time.Time
func age(now Clock,t time.Time)time.Duration{return now().Sub(t)}
func main(){}
Вопрос 19 из 30
Перед публикацией кода по теме «Подмены» нужно уточнить контракт. Что может изменить вывод при небольшом изменении условий?
Вопрос 20 из 30
В рабочем примере по теме «Подмены» важно отделить гарантию от догадки. Как решение влияет на читаемость и надёжность?
Вопрос 21 из 30
В разделе «Тестирование и наблюдаемость» показан конкретный случай в тесте «Тесты и табличные сценарии». Что увидит вызывающий код после выполнения?
BashТестирование и наблюдаемость: результат выполнения
go test -race -shuffle=on -count=10 ./...
Вопрос 22 из 30
Команда проверяет решение по теме «Тестирование и наблюдаемость» в тесте «Тесты и табличные сценарии». Как подготовить этот код к реальному использованию?
BashТестирование и наблюдаемость: фрагмент на ревью
go test -race -shuffle=on -count=10 ./...
# Задача: выбрать безопасную правку или способ проверки.
Вопрос 23 из 30
Перед публикацией кода по теме «Тестирование и наблюдаемость» нужно уточнить контракт в тесте «Тесты и табличные сценарии». Какой контракт определяет результат показанного кода?
BashТестирование и наблюдаемость: проверка контракта
go test -race -shuffle=on -count=10 ./...
# Требуется объяснить правило, а не только назвать команду.
Вопрос 24 из 30
В рабочем примере по теме «Тестирование и наблюдаемость» важно отделить гарантию от догадки в тесте «Тесты и табличные сценарии». Какое допущение здесь чаще всего оказывается ложным?
Вопрос 25 из 30
Фрагмент относится к теме «Тестирование и наблюдаемость» в тесте «Тесты и табличные сценарии». Какое замечание о цене решения будет точным?
Вопрос 26 из 30
Команда проверяет решение по теме «Конкурентность и эксплуатация» в тесте «Тесты и табличные сценарии». Что гарантированно произойдёт в показанной последовательности операций?
GoКонкурентность и эксплуатация: результат выполнения
// Фрагмент для трассировки.
package sample
import("net";"testing")
func TestPort(t *testing.T){ln,err:=net.Listen("tcp","127.0.0.1:0");if err!=nil{t.Fatal(err)};t.Cleanup(func(){ln.Close()})}
Вопрос 27 из 30
Перед публикацией кода по теме «Конкурентность и эксплуатация» нужно уточнить контракт в тесте «Тесты и табличные сценарии». Какой вариант исправления соответствует обычной практике Go?
GoКонкурентность и эксплуатация: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package sample
import("net";"testing")
func TestPort(t *testing.T){ln,err:=net.Listen("tcp","127.0.0.1:0");if err!=nil{t.Fatal(err)};t.Cleanup(func(){ln.Close()})}
Вопрос 28 из 30
В рабочем примере по теме «Конкурентность и эксплуатация» важно отделить гарантию от догадки в тесте «Тесты и табличные сценарии». Какой принцип языка объясняет результат полностью?
GoКонкурентность и эксплуатация: проверка контракта
// Определите правило Go, которое объясняет результат.
package sample
import("net";"testing")
func TestPort(t *testing.T){ln,err:=net.Listen("tcp","127.0.0.1:0");if err!=nil{t.Fatal(err)};t.Cleanup(func(){ln.Close()})}
Вопрос 29 из 30
Фрагмент относится к теме «Конкурентность и эксплуатация» в тесте «Тесты и табличные сценарии». Какой предел контракта важен для вызывающего кода?
Вопрос 30 из 30
На ревью разбирают тему «Конкурентность и эксплуатация» в тесте «Тесты и табличные сценарии». Как решение скажется на тестировании и дальнейших изменениях?

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

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

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

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