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

Мок-собеседование Go-разработчика: реплики и ретраи

Кандидат проектирует получение данных из кластера из трёх реплик, пишет конкурентное решение на Go и прорабатывает подход к повторным попыткам. Интервьюер разбирает закрытие каналов, утечки goroutine и пограничные случаи.

Источник: it-interview

Открыть на YouTube

Таймлайн

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

Это мок-собеседование по Go с практической задачей. Интервьюер предлагает представить базу данных с тремя синхронными репликами и написать функцию получения значения по ключу и адресу реплики. Кандидат обходит адреса в цикле, запускает goroutine и передаёт результат через канал. По ходу реализации интервьюер просит идти небольшими шагами: сначала запись и чтение, потом закрытие канала. Отдельно разбирается опасность блокирующей записи после ошибки not found: незавершённые goroutine могут зависнуть и дать утечку. Во второй части кандидат прорабатывает ретраи: выносит запрос в отдельную функцию, обсуждает число попыток, задержку и ошибки, на которых повтор следует прекратить. В финале он получает фидбек о необходимости точнее учитывать неблокирующие операции и пограничные случаи.

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

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

  • Конкурентную задачу лучше реализовывать по шагам: запуск, передача результата, затем завершение.
  • Закрытие канала нужно связывать с жизненным циклом всех пишущих goroutine.
  • Блокирующая отправка в канал может оставить goroutine зависшими при раннем возврате.
  • Ретраи нужно ограничивать типами ошибок и ясным условием остановки.
  • На Go-интервью проверяют применимость знакомых паттернов, а не только их названия.

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