Мок-собеседование Go-разработчика: реплики и ретраи
Кандидат проектирует получение данных из кластера из трёх реплик, пишет конкурентное решение на Go и прорабатывает подход к повторным попыткам. Интервьюер разбирает закрытие каналов, утечки goroutine и пограничные случаи.
- Опубликовано на YouTube:
- Просмотры на YouTube: 15,5 тыс.
- Лайки на YouTube: 271
Таймлайн
Коротко о видео
Это мок-собеседование по Go с практической задачей. Интервьюер предлагает представить базу данных с тремя синхронными репликами и написать функцию получения значения по ключу и адресу реплики. Кандидат обходит адреса в цикле, запускает goroutine и передаёт результат через канал. По ходу реализации интервьюер просит идти небольшими шагами: сначала запись и чтение, потом закрытие канала. Отдельно разбирается опасность блокирующей записи после ошибки not found: незавершённые goroutine могут зависнуть и дать утечку. Во второй части кандидат прорабатывает ретраи: выносит запрос в отдельную функцию, обсуждает число попыток, задержку и ошибки, на которых повтор следует прекратить. В финале он получает фидбек о необходимости точнее учитывать неблокирующие операции и пограничные случаи.
Затронутые темы
Что взять на заметку
- Конкурентную задачу лучше реализовывать по шагам: запуск, передача результата, затем завершение.
- Закрытие канала нужно связывать с жизненным циклом всех пишущих goroutine.
- Блокирующая отправка в канал может оставить goroutine зависшими при раннем возврате.
- Ретраи нужно ограничивать типами ошибок и ясным условием остановки.
- На Go-интервью проверяют применимость знакомых паттернов, а не только их названия.