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

Надёжный Go-сервис в производстве

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат и результаты по 6 тематическим шкалам с объяснениями и практическими рекомендациями.
Вопрос 1 из 30
В рабочем примере по теме «Конфигурация» важно отделить гарантию от догадки. Как изменится состояние программы после этого фрагмента?
GoКонфигурация: результат выполнения
// Фрагмент для трассировки.
package main
import("errors";"time")
type Config struct{Timeout time.Duration}
func(c Config)Validate()error{if c.Timeout<=0{return errors.New("timeout must be positive")};return nil}
func main(){}
Вопрос 2 из 30
Фрагмент относится к теме «Конфигурация». Какое замечание на ревью будет наиболее точным?
GoКонфигурация: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import("errors";"time")
type Config struct{Timeout time.Duration}
func(c Config)Validate()error{if c.Timeout<=0{return errors.New("timeout must be positive")};return nil}
func main(){}
Вопрос 3 из 30
На ревью разбирают тему «Конфигурация». Какое правило важнее случайных деталей конкретного запуска?
GoКонфигурация: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import("errors";"time")
type Config struct{Timeout time.Duration}
func(c Config)Validate()error{if c.Timeout<=0{return errors.New("timeout must be positive")};return nil}
func main(){}
Вопрос 4 из 30
В разделе «Конфигурация» показан конкретный случай. Где корректный фрагмент легко становится ошибочным?
Вопрос 5 из 30
Команда проверяет решение по теме «Конфигурация». Что учитывать при выборе этого приёма для публичного API?
Вопрос 6 из 30
Фрагмент относится к теме «Метрики». Какой результат даст этот код на поддерживаемой реализации Go?
ТекстМетрики: результат выполнения
requests_total{method="GET",route="/users/:id",status="200"} 42
request_duration_seconds_bucket{route="/users/:id",le="0.5"} 40
Вопрос 7 из 30
На ревью разбирают тему «Метрики». Что нужно поменять, чтобы граничный случай не превратился в сбой?
ТекстМетрики: фрагмент на ревью
requests_total{method="GET",route="/users/:id",status="200"} 42
request_duration_seconds_bucket{route="/users/:id",le="0.5"} 40

Контекст проверки: Метрики.
Вопрос 8 из 30
В разделе «Метрики» показан конкретный случай. Какое свойство конструкции определяет её поведение?
ТекстМетрики: проверка контракта
requests_total{method="GET",route="/users/:id",status="200"} 42
request_duration_seconds_bucket{route="/users/:id",le="0.5"} 40

Вопрос относится к теме: Метрики.
Вопрос 9 из 30
Команда проверяет решение по теме «Метрики». Что стоит проверить до переноса решения в общий компонент?
Вопрос 10 из 30
Перед публикацией кода по теме «Метрики» нужно уточнить контракт. Как точнее всего описать пользу и цену этого решения?
Вопрос 11 из 30
На ревью разбирают тему «Корректное завершение». К какому результату приводит показанная конструкция?
GoКорректное завершение: результат выполнения
// Фрагмент для трассировки.
package main
import("context";"net/http";"time")
func shutdown(s *http.Server){ctx,cancel:=context.WithTimeout(context.Background(),10*time.Second);defer cancel();_=s.Shutdown(ctx)}
func main(){}
Вопрос 12 из 30
В разделе «Корректное завершение» показан конкретный случай. Какую правку стоит предложить на ревью, сохранив назначение кода?
GoКорректное завершение: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import("context";"net/http";"time")
func shutdown(s *http.Server){ctx,cancel:=context.WithTimeout(context.Background(),10*time.Second);defer cancel();_=s.Shutdown(ctx)}
func main(){}
Вопрос 13 из 30
Команда проверяет решение по теме «Корректное завершение». На какой контракт языка или стандартной библиотеки здесь нужно опереться?
GoКорректное завершение: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import("context";"net/http";"time")
func shutdown(s *http.Server){ctx,cancel:=context.WithTimeout(context.Background(),10*time.Second);defer cancel();_=s.Shutdown(ctx)}
func main(){}
Вопрос 14 из 30
Перед публикацией кода по теме «Корректное завершение» нужно уточнить контракт. Какое ограничение опаснее всего пропустить?
Вопрос 15 из 30
В рабочем примере по теме «Корректное завершение» важно отделить гарантию от догадки. Какой вывод о сопровождении решения наиболее взвешенный?
Вопрос 16 из 30
В разделе «Расследование сбоя» показан конкретный случай. Как завершится показанный фрагмент при указанных входных данных?
ТекстРасследование сбоя: результат выполнения
12:01 deploy v1242
12:03 p99 180ms -> 4.8s
12:03 db_in_use 20/20
12:04 db_wait_duration +38s/s
12:05 cpu 31%
Вопрос 17 из 30
Команда проверяет решение по теме «Расследование сбоя». Что здесь следует изменить прежде всего?
ТекстРасследование сбоя: фрагмент на ревью
12:01 deploy v1242
12:03 p99 180ms -> 4.8s
12:03 db_in_use 20/20
12:04 db_wait_duration +38s/s
12:05 cpu 31%

Контекст проверки: Расследование сбоя.
Вопрос 18 из 30
Перед публикацией кода по теме «Расследование сбоя» нужно уточнить контракт. Какое правило отделяет верный разбор от правдоподобной догадки?
ТекстРасследование сбоя: проверка контракта
12:01 deploy v1242
12:03 p99 180ms -> 4.8s
12:03 db_in_use 20/20
12:04 db_wait_duration +38s/s
12:05 cpu 31%

Вопрос относится к теме: Расследование сбоя.
Вопрос 19 из 30
В рабочем примере по теме «Расследование сбоя» важно отделить гарантию от догадки. Какой крайний случай обязан попасть в тесты?
Вопрос 20 из 30
Фрагмент относится к теме «Расследование сбоя». Какой выбор лучше отражает баланс простоты и контроля?
Вопрос 21 из 30
Команда проверяет решение по теме «Тестирование и наблюдаемость» в тесте «Надёжный Go-сервис в производстве». Как изменится состояние программы после этого фрагмента?
ТекстТестирование и наблюдаемость: результат выполнения
release:
  canary_percent: 5
  abort_if:
    error_rate: "> 1%"
    p99: "> 800ms"
Вопрос 22 из 30
Перед публикацией кода по теме «Тестирование и наблюдаемость» нужно уточнить контракт в тесте «Надёжный Go-сервис в производстве». Какое замечание на ревью будет наиболее точным?
ТекстТестирование и наблюдаемость: фрагмент на ревью
release:
  canary_percent: 5
  abort_if:
    error_rate: "> 1%"
    p99: "> 800ms"

Контекст проверки: Тестирование и наблюдаемость.
Вопрос 23 из 30
В рабочем примере по теме «Тестирование и наблюдаемость» важно отделить гарантию от догадки в тесте «Надёжный Go-сервис в производстве». Какое правило важнее случайных деталей конкретного запуска?
ТекстТестирование и наблюдаемость: проверка контракта
release:
  canary_percent: 5
  abort_if:
    error_rate: "> 1%"
    p99: "> 800ms"

Вопрос относится к теме: Тестирование и наблюдаемость.
Вопрос 24 из 30
Фрагмент относится к теме «Тестирование и наблюдаемость» в тесте «Надёжный Go-сервис в производстве». Где корректный фрагмент легко становится ошибочным?
Вопрос 25 из 30
На ревью разбирают тему «Тестирование и наблюдаемость» в тесте «Надёжный Go-сервис в производстве». Что учитывать при выборе этого приёма для публичного API?
Вопрос 26 из 30
Перед публикацией кода по теме «Конкурентность и эксплуатация» нужно уточнить контракт. Какой результат даст этот код на поддерживаемой реализации Go?
GoКонкурентность и эксплуатация: результат выполнения
// Фрагмент для трассировки.
package main
const maxConcurrent=64
var slots=make(chan struct{},maxConcurrent)
func guarded(fn func()error)error{select{case slots<-struct{}{}:defer func(){<-slots}();return fn();default:return ErrBusy}}
var ErrBusy=errorString("busy")
type errorString string
func(e errorString)Error()string{return string(e)}
func main(){}
Вопрос 27 из 30
В рабочем примере по теме «Конкурентность и эксплуатация» важно отделить гарантию от догадки. Что нужно поменять, чтобы граничный случай не превратился в сбой?
GoКонкурентность и эксплуатация: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
const maxConcurrent=64
var slots=make(chan struct{},maxConcurrent)
func guarded(fn func()error)error{select{case slots<-struct{}{}:defer func(){<-slots}();return fn();default:return ErrBusy}}
var ErrBusy=errorString("busy")
type errorString string
func(e errorString)Error()string{return string(e)}
func main(){}
Вопрос 28 из 30
Фрагмент относится к теме «Конкурентность и эксплуатация». Какое свойство конструкции определяет её поведение?
GoКонкурентность и эксплуатация: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
const maxConcurrent=64
var slots=make(chan struct{},maxConcurrent)
func guarded(fn func()error)error{select{case slots<-struct{}{}:defer func(){<-slots}();return fn();default:return ErrBusy}}
var ErrBusy=errorString("busy")
type errorString string
func(e errorString)Error()string{return string(e)}
func main(){}
Вопрос 29 из 30
На ревью разбирают тему «Конкурентность и эксплуатация». Что стоит проверить до переноса решения в общий компонент?
Вопрос 30 из 30
В разделе «Конкурентность и эксплуатация» показан конкретный случай. Как точнее всего описать пользу и цену этого решения?

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

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

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

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