Этап 7 из 7 · ≈ 10 ч

Сервисы на Go

Основа с Junior

net/http, маршрутизация, middleware, работа с базой и graceful shutdown.

Что важно знать

  • С Go 1.22 стандартный http.ServeMux умеет методы и параметры пути.
  • Middleware — функции-обёртки над http.Handler.
  • database/sql или pgx, пул соединений.
  • Graceful shutdown: server.Shutdown(ctx) по сигналу.

Критерии освоения

Junior ≈ 10 ч

  • Делает HTTP API на net/http с маршрутизацией и JSON

Практика. Сделать API заказов на стандартной библиотеке с тестами через httptest.

Middle ≈ 8 ч

  • Пишет middleware для логирования, авторизации и восстановления после panic
  • Работает с PostgreSQL через pgx и делает graceful shutdown

Практика. Добавить middleware, работу с PostgreSQL через pgx, миграции и корректную остановку по SIGTERM.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Зачем нужен context.Context?Junior

Context переносит отмену, дедлайн и значения запроса через цепочку вызовов и горутин. Создают от входящего запроса, передают первым аргументом во все функции с вводом-выводом. WithTimeout/WithCancel порождают дочерний контекст; отмена родителя отменяет всех…

Полный разбор
Как пишут тесты в Go — табличные тесты, моки, бенчмарки?Junior

Тесты — функции TestXxx(t testing.T) в файлах _test.go, запуск go test ./.... Идиома — табличные тесты: срез случаев и t.Run для каждого. Зависимости подменяют через маленькие интерфейсы и рукописные фейки. Бенчмарки — BenchmarkXxx(b testing.B), go test…

Полный разбор
Как написать HTTP-сервис на стандартной библиотеке Go?Junior

Обработчик — всё, что реализует http.Handler (метод ServeHTTP(w, r)), чаще — функция func(w http.ResponseWriter, r http.Request). Маршруты регистрируют в http.ServeMux; с Go 1.22 он понимает метод и параметры пути: mux.HandleFunc("GET /orders/{id}", h)…

Полный разбор
Как настроить таймауты и корректную остановку HTTP-сервера в Go?Middle

http.ListenAndServe по умолчанию без таймаутов: медленные клиенты держат соединения и горутины бесконечно. Нужен свой http.Server с ReadHeaderTimeout, ReadTimeout, WriteTimeout, IdleTimeout. Исходящий http.Client тоже без таймаута по умолчанию — задавать…

Полный разбор
Что такое горутина и чем она отличается от потока ОС?Junior

Горутина — лёгкий поток, управляемый рантаймом Go: стартовый стек ~2 КБ (растёт по необходимости), создание и переключение в разы дешевле потока ОС — можно держать сотни тысяч. Планировщик M:N распределяет горутины (G) по потокам ОС (M) через логические…

Полный разбор

← Вся карта «Go»

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования