Вернуться в видеотекуКоротко о видео
Запись публичной учебной сессии в формате технического Go-собеседования с кандидатами Алексеем и Никитой: они рассказывают о переходе в разработку и обучении Go. Затем ведущий проверяет базовые знания о компиляции, REST API, Docker, деплое и жизненном цикле разработки. Основная часть — парное решение задачи: обработать большой текст, выводя кириллические слова и длины латинских, а затем разнести конвейер на горутины и каналы, разобрав строки, руны, закрытие каналов и синхронизацию.
Затронутые темы
Что взять на заметку
- Уметь объяснить различие между компилируемым Go и интерпретируемым Python: для выполнения Python обычно нужен интерпретатор, а Go-программа после сборки запускается как бинарный файл.
- Подготовить точные определения REST API, Docker, деплоя и этапов жизненного цикла: планирование, разработка, тестирование, деплой и поддержка.
- Для строк в Go различать байтовую длину `len(word)` и число символов `len([]rune(word))`; в задаче это позволяет отличить кириллицу от латиницы при заданных ограничениях.
- Перед написанием кода сформулировать алгоритм: разбить текст по пробелам, для каждого слова определить алфавит, вывести кириллическое слово либо длину латинского слова.
- Разобраться в конвейере из горутин: одна отправляет слова в канал, вторая обрабатывает их и передаёт результат дальше, третья выводит результат; отправитель должен закрыть канал после завершения передачи.
- Понимать, что `for range` по каналу завершится после его закрытия и чтения всех значений, а `sync.WaitGroup` нужен для ожидания завершения запущенных горутин.