Это интервью на позицию Go разработчика. Вам предстоит реализовать систему обработки веб-контента.
Необходимо реализовать package для обработки веб-контента, который получает данные из канала и выполняет анализ веб-страниц.
Система должна слушать канал со структурами:
type Entity struct {
Link string
Title string
}-
HTTP запрос
- Выполнить GET запрос по ссылке
- Сохранить статус ответа
- Сохранить исходный код страницы
-
Парсинг контента
- Извлечь все ссылки из HTML
- Найти ссылки на .m3u8 файлы
-
Классификация
- Проверить наличие ключевых слов в title и body
- Проверить наличие m3u8 ссылок
- На основе критериев выше принять решение о дальнейшей обработке
-
Результат
- Вернуть структурированный результат обработки
- Graceful shutdown с context
- Thread safety с mutex
- Error handling для различных сценариев
- Настраиваемые таймауты
- Создайте fork репозитория
# Клонируйте репозиторий
git clone <your-fork-url>
cd web-content-processor-interview
# Запустите тесты
make test
# Запустите пример
make run
# Проверьте код
make lint- Откройте проект в VS Code
- Нажмите "Reopen in Container" когда появится уведомление
- Среда готова к работе
processor/
├── processor.go # ← ОСНОВНОЙ ФАЙЛ ДЛЯ РЕАЛИЗАЦИИ
├── types.go # Типы данных (можно расширить)
└── processor_test.go # Тесты (запускайте для проверки)
# Запуск всех тестов
go test ./...
# Запуск с подробным выводом
go test -v ./processor
# Тесты с coverage
go test -cover ./processor- Начните с реализации базовой структуры в
processor/processor.go - Используйте стандартные библиотеки:
net/http,html,strings - Не забывайте про обработку ошибок
- Тесты помогут понять ожидаемое поведение
- Можно использовать регулярные выражения для парсинга
- Корректность - работает ли код
- Go идиомы - каналы, горутины, error handling
- Архитектура - читаемость и структура кода
- Тесты - проходят ли существующие тесты
Удачи! Если есть вопросы - не стесняйтесь спрашивать.