Вернуться в видеотеку

Go-собеседование: worker pool, PostgreSQL и Kafka

Кандидат реализует конкурентную обработку URL на Go, отвечает о PostgreSQL и Kafka и проектирует key-value хранилище.

Источник: it father.

Открыть на YouTube

Таймлайн

Коротко о видео

Техническое Go-собеседование начинается с live coding: кандидат должен обработать URL с контекстом, таймаутом и корректной реакцией на HTTP-ошибки. Решение развивается от запуска goroutine к worker pool, каналам заданий и результатов, WaitGroup и ограничению параллелизма, чтобы не создавать миллион горутин. Затем интервьюер спрашивает о PostgreSQL: EXPLAIN, Seq Scan, Index Scan, репликации, Redis-кэше, блокировках и deadlock. В блоке брокеров сравниваются Kafka, NATS и гарантии доставки. Финальная задача — key-value хранилище с map, RWMutex, WAL, восстановлением после старта и очисткой растущего лога.

Затронутые темы

Что взять на заметку

  • Контекст с дедлайном или тайм-аутом передают в HTTP-запрос через http.NewRequestWithContext.
  • Worker pool ограничивает число одновременно выполняемых задач и защищает память и сокеты от неконтролируемого числа goroutine.
  • Результаты конкурентных задач следует передавать через канал или собирать с синхронизацией; порядок их готовности не гарантирован.
  • Единый порядок захвата ресурсов в транзакциях снижает риск deadlock.
  • Журнал операций позволяет восстановить состояние key-value хранилища после запуска, но нуждается в компакции.

Рекомендуем посмотреть