Go-собеседование: worker pool, PostgreSQL и Kafka
Кандидат реализует конкурентную обработку URL на Go, отвечает о PostgreSQL и Kafka и проектирует key-value хранилище.
it father.
Открыть на YouTube- Опубликовано на YouTube:
- Просмотры на YouTube: 6,4 тыс.
- Лайки на YouTube: 88
Таймлайн
Коротко о видео
Техническое 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 хранилища после запуска, но нуждается в компакции.