Skip to content

Test task for selection to the CROC Summer IT-School on Development

Notifications You must be signed in to change notification settings

denisovalex/croc-school2024-test-task

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

Тестовое задание для отбора на Летнюю ИТ-школу КРОК по разработке

Условие задания

Однажды теплым летним вечером вас посетила идея разработать свое расширение для браузера для построения ссылочного графа. Что это означает на практике — ваше расширение активируется на какой-либо web-странице сайта, определяет список уникальных внешних ссылок, после чего повторяет алгоритм для каждой ссылки. Максимальная глубина поиска, визуализация собранных данных и прочие вопросы вы сочли вторичными, а начать решено было с малого — с обходчика страниц, который бы находил уникальные ссылки.

В процессе проектирования вы решили немного упростить ваш mvp и в итоге поставили себе задачу следующим образом: реализовать поиск всех уникальных ресурсов (доменов) в рамках страницы, на которые есть ссылки. При этом, формулируя задачу, вы сделали следующие допущения:

  • Доменом считается запись вида example.com;
  • Поддомен, например, sub.example.com, считается отдельным ресурсом;
  • Протокол (при наличии) не имеет значения.

Требования к реализации:

  1. Реализация должна содержать, как минимум, одну процедуру (функцию/метод), отвечающую за поиск уникальных ресурсов, и должна быть описана в readme.md в соответствии с чек-листом;
  2. В качестве входных данных программа использует реальный html-файл (page.html) , считав который, начинает выполнять поиск;
  3. Процедура (функция/метод) поиска должна возвращать строку в формате json следующего формата:
    • {«sites»: [«mail.ru», «rbc.ru», «ria.ru»]}
  4. Найденные в соответствии с условием задачи домены должны выводиться в нижнем регистре без указания протокола и «www» в алфавитном порядке.

Автор решения

Денисов Алексей Геннадьевич. Почта, с которой отправлена анкета: [email protected]

Описание реализации

Метод Main использует по очереди методы следующих статических классов:

  • HtmlDocumentLoader: метод Load загружает в объект HtmlDocument html-файл.
  • UniqueDomainsExtractor: метод ExtractToArray производит парсинг html-файла и извлечение из него уникальных доменов, используя возможности пакета HtmlAgilityPack.
  • DomainsJsonConverter: метод ConvertToJsonString из массива доменов создаёт строку установленного в задании Json-формата

Полученная строка Json-формата вводится на экран.

Инструкция по сборке и запуску решения

Консоль

Из папки с проектом UniqueDomainsExtractorApp выполните следующие команды:

dotnet build
dotnet run [путь к html-файлу]

Visual Studio

Открыть UniqueDomainsExtractor.sln и, задав в свойствах отладки проекта аргумент командной строки (путь к html-файлу), запустить приложение.

About

Test task for selection to the CROC Summer IT-School on Development

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%