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

HTTP-сервер

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат и результаты по 6 тематическим шкалам с объяснениями и практическими рекомендациями.
Вопрос 1 из 30
В разделе «Обработчики HTTP» показан конкретный случай. Как завершится показанный фрагмент при указанных входных данных?
GoОбработчики HTTP: результат выполнения
// Фрагмент для трассировки.
package main
import "net/http"
func h(w http.ResponseWriter,r *http.Request){ w.Write([]byte("partial")); w.WriteHeader(http.StatusInternalServerError) }
func main(){}
Вопрос 2 из 30
Команда проверяет решение по теме «Обработчики HTTP». Что здесь следует изменить прежде всего?
GoОбработчики HTTP: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "net/http"
func h(w http.ResponseWriter,r *http.Request){ w.Write([]byte("partial")); w.WriteHeader(http.StatusInternalServerError) }
func main(){}
Вопрос 3 из 30
Перед публикацией кода по теме «Обработчики HTTP» нужно уточнить контракт. Какое правило отделяет верный разбор от правдоподобной догадки?
GoОбработчики HTTP: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "net/http"
func h(w http.ResponseWriter,r *http.Request){ w.Write([]byte("partial")); w.WriteHeader(http.StatusInternalServerError) }
func main(){}
Вопрос 4 из 30
В рабочем примере по теме «Обработчики HTTP» важно отделить гарантию от догадки. Какой крайний случай обязан попасть в тесты?
Вопрос 5 из 30
Фрагмент относится к теме «Обработчики HTTP». Какой выбор лучше отражает баланс простоты и контроля?
Вопрос 6 из 30
Команда проверяет решение по теме «Маршрутизация». Как изменится состояние программы после этого фрагмента?
GoМаршрутизация: результат выполнения
// Фрагмент для трассировки.
package main
import "net/http"
func h(w http.ResponseWriter,r *http.Request){ if r.Method!=http.MethodGet{w.WriteHeader(http.StatusMethodNotAllowed);return};w.WriteHeader(204) }
func main(){}
Вопрос 7 из 30
Перед публикацией кода по теме «Маршрутизация» нужно уточнить контракт. Какое замечание на ревью будет наиболее точным?
GoМаршрутизация: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "net/http"
func h(w http.ResponseWriter,r *http.Request){ if r.Method!=http.MethodGet{w.WriteHeader(http.StatusMethodNotAllowed);return};w.WriteHeader(204) }
func main(){}
Вопрос 8 из 30
В рабочем примере по теме «Маршрутизация» важно отделить гарантию от догадки. Какое правило важнее случайных деталей конкретного запуска?
GoМаршрутизация: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "net/http"
func h(w http.ResponseWriter,r *http.Request){ if r.Method!=http.MethodGet{w.WriteHeader(http.StatusMethodNotAllowed);return};w.WriteHeader(204) }
func main(){}
Вопрос 9 из 30
Фрагмент относится к теме «Маршрутизация». Где корректный фрагмент легко становится ошибочным?
Вопрос 10 из 30
На ревью разбирают тему «Маршрутизация». Что учитывать при выборе этого приёма для публичного API?
Вопрос 11 из 30
Перед публикацией кода по теме «Контекст запроса» нужно уточнить контракт. Какой результат даст этот код на поддерживаемой реализации Go?
GoКонтекст запроса: результат выполнения
// Фрагмент для трассировки.
package main
import("net/http";"time")
func h(w http.ResponseWriter,r *http.Request){ select{case <-time.After(time.Second):w.WriteHeader(204);case <-r.Context().Done():return} }
func main(){}
Вопрос 12 из 30
В рабочем примере по теме «Контекст запроса» важно отделить гарантию от догадки. Что нужно поменять, чтобы граничный случай не превратился в сбой?
GoКонтекст запроса: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import("net/http";"time")
func h(w http.ResponseWriter,r *http.Request){ select{case <-time.After(time.Second):w.WriteHeader(204);case <-r.Context().Done():return} }
func main(){}
Вопрос 13 из 30
Фрагмент относится к теме «Контекст запроса». Какое свойство конструкции определяет её поведение?
GoКонтекст запроса: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import("net/http";"time")
func h(w http.ResponseWriter,r *http.Request){ select{case <-time.After(time.Second):w.WriteHeader(204);case <-r.Context().Done():return} }
func main(){}
Вопрос 14 из 30
На ревью разбирают тему «Контекст запроса». Что стоит проверить до переноса решения в общий компонент?
Вопрос 15 из 30
В разделе «Контекст запроса» показан конкретный случай. Как точнее всего описать пользу и цену этого решения?
Вопрос 16 из 30
В рабочем примере по теме «Корректное завершение» важно отделить гарантию от догадки. К какому результату приводит показанная конструкция?
GoКорректное завершение: результат выполнения
// Фрагмент для трассировки.
package main
import("context";"net/http";"time")
func stop(s *http.Server){ ctx,cancel:=context.WithTimeout(context.Background(),5*time.Second);defer cancel();_ = s.Shutdown(ctx) }
func main(){}
Вопрос 17 из 30
Фрагмент относится к теме «Корректное завершение». Какую правку стоит предложить на ревью, сохранив назначение кода?
GoКорректное завершение: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import("context";"net/http";"time")
func stop(s *http.Server){ ctx,cancel:=context.WithTimeout(context.Background(),5*time.Second);defer cancel();_ = s.Shutdown(ctx) }
func main(){}
Вопрос 18 из 30
На ревью разбирают тему «Корректное завершение». На какой контракт языка или стандартной библиотеки здесь нужно опереться?
GoКорректное завершение: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import("context";"net/http";"time")
func stop(s *http.Server){ ctx,cancel:=context.WithTimeout(context.Background(),5*time.Second);defer cancel();_ = s.Shutdown(ctx) }
func main(){}
Вопрос 19 из 30
В разделе «Корректное завершение» показан конкретный случай. Какое ограничение опаснее всего пропустить?
Вопрос 20 из 30
Команда проверяет решение по теме «Корректное завершение». Какой вывод о сопровождении решения наиболее взвешенный?
Вопрос 21 из 30
Фрагмент относится к теме «Тестирование и наблюдаемость» в тесте «HTTP-сервер». Как завершится показанный фрагмент при указанных входных данных?
GoТестирование и наблюдаемость: результат выполнения
// Фрагмент для трассировки.
package sample
import("net/http";"net/http/httptest";"testing")
func TestH(t *testing.T){ r:=httptest.NewRequest(http.MethodGet,"/",nil); w:=httptest.NewRecorder(); h(w,r); if w.Code!=204{t.Fatal(w.Code)} }
func h(w http.ResponseWriter,r *http.Request){w.WriteHeader(204)}
Вопрос 22 из 30
На ревью разбирают тему «Тестирование и наблюдаемость» в тесте «HTTP-сервер». Что здесь следует изменить прежде всего?
GoТестирование и наблюдаемость: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package sample
import("net/http";"net/http/httptest";"testing")
func TestH(t *testing.T){ r:=httptest.NewRequest(http.MethodGet,"/",nil); w:=httptest.NewRecorder(); h(w,r); if w.Code!=204{t.Fatal(w.Code)} }
func h(w http.ResponseWriter,r *http.Request){w.WriteHeader(204)}
Вопрос 23 из 30
В разделе «Тестирование и наблюдаемость» показан конкретный случай в тесте «HTTP-сервер». Какое правило отделяет верный разбор от правдоподобной догадки?
GoТестирование и наблюдаемость: проверка контракта
// Определите правило Go, которое объясняет результат.
package sample
import("net/http";"net/http/httptest";"testing")
func TestH(t *testing.T){ r:=httptest.NewRequest(http.MethodGet,"/",nil); w:=httptest.NewRecorder(); h(w,r); if w.Code!=204{t.Fatal(w.Code)} }
func h(w http.ResponseWriter,r *http.Request){w.WriteHeader(204)}
Вопрос 24 из 30
Команда проверяет решение по теме «Тестирование и наблюдаемость» в тесте «HTTP-сервер». Какой крайний случай обязан попасть в тесты?
Вопрос 25 из 30
Перед публикацией кода по теме «Тестирование и наблюдаемость» нужно уточнить контракт в тесте «HTTP-сервер». Какой выбор лучше отражает баланс простоты и контроля?
Вопрос 26 из 30
На ревью разбирают тему «Конкурентность и эксплуатация» в тесте «HTTP-сервер». Как изменится состояние программы после этого фрагмента?
GoКонкурентность и эксплуатация: результат выполнения
// Фрагмент для трассировки.
package main
import("net/http";"sync")
type H struct{ mu sync.Mutex; hits map[string]int }
func(h *H)ServeHTTP(w http.ResponseWriter,r *http.Request){h.mu.Lock();h.hits[r.URL.Path]++;h.mu.Unlock();w.WriteHeader(204)}
func main(){}
Вопрос 27 из 30
В разделе «Конкурентность и эксплуатация» показан конкретный случай в тесте «HTTP-сервер». Какое замечание на ревью будет наиболее точным?
GoКонкурентность и эксплуатация: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import("net/http";"sync")
type H struct{ mu sync.Mutex; hits map[string]int }
func(h *H)ServeHTTP(w http.ResponseWriter,r *http.Request){h.mu.Lock();h.hits[r.URL.Path]++;h.mu.Unlock();w.WriteHeader(204)}
func main(){}
Вопрос 28 из 30
Команда проверяет решение по теме «Конкурентность и эксплуатация» в тесте «HTTP-сервер». Какое правило важнее случайных деталей конкретного запуска?
GoКонкурентность и эксплуатация: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import("net/http";"sync")
type H struct{ mu sync.Mutex; hits map[string]int }
func(h *H)ServeHTTP(w http.ResponseWriter,r *http.Request){h.mu.Lock();h.hits[r.URL.Path]++;h.mu.Unlock();w.WriteHeader(204)}
func main(){}
Вопрос 29 из 30
Перед публикацией кода по теме «Конкурентность и эксплуатация» нужно уточнить контракт в тесте «HTTP-сервер». Где корректный фрагмент легко становится ошибочным?
Вопрос 30 из 30
В рабочем примере по теме «Конкурентность и эксплуатация» важно отделить гарантию от догадки в тесте «HTTP-сервер». Что учитывать при выборе этого приёма для публичного API?

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

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

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

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