Эти задания предназначены для кандидатов, которые прошли интервью и были отобраны. Задания являются последним этапом в процессе найма. То есть, вопрос о приеме на работу или отказе зависит от результатов выполнения заданий.
- Веб-программирование
- Разработка программного обеспечения
- Сетевое взаимодействие
Ссылка на ваш публичный репозиторий с решением должна быть опубликована у нас не позднее 20 Июня 23:59 в разделе General внутри GitHub Обсуждений.
Во время выполнения заданий запрещено использовать помощников в виде чат-ботов (ChatGPT, Bing). Вы должны найти решение, опираясь на свои знания. Независимо от того, насколько совершенное решение вы найдете, ваш собственный код повысит вероятность получения лучшего результата.
В этом направлении от вас требуется создать MVC для API сервиса без использования каких-либо фреймворков. Это означает, что задачи в сервисе должны быть разделены на отдельные модели и управляться через контроллеры на основе маршрутизаторов, которые управляют конечными точками.
Кроме того, требуется возможность работы с базой данных для сервиса. В качестве адаптера базы данных вы можете использовать любые технологии, которые вам удобны.
В роутерах необходимо обрабатывать отдельные запросы GET, POST, PUT, DELETE и наличие авторизации будет дополнительным плюсом.
Вспомогательные ресурсы:
- https://drogonframework.github.io/drogon-docs/#/
- https://github.com/ipkn/crow
- https://oatpp.io/docs/start/
- https://github.com/cutelyst/cutelyst/wiki
Создайте программу, используя фреймворк QtC++ для десктопных платформ. Программа должна быть мультиплатформенной, то есть работать на windows, linux и macos одновременно. Будет дополнительным плюсом, если программа сможет подключаться к сети и интегрироваться с веб-программой, упомянутой выше.
Вспомогательные ресурсы:
Написать две программы, сервер и клиент для обмена мгновенными сообщениями (чат) работающих в пределах локальной сети. Для сетевого взаимодействия приложения должны использовать стандартные системные библиотеки Network sockets типа winsock2.h, sys/socket.h и т.п. (использование сторонних фреймворков для сетевого обмена или обмена мгновенными сообщениями не допускается). Приложения могут как иметь графический интерфейс (любой фреймворк на выбор разработчика) так и работать в консольном режиме, значения не имеет. Приложения могут быть написаны под операционную систему Linux, Windows или MacOS по выбору разработчика.
Минимальный функционал сервера:
1) Серверная часть должна принимать подключения от множества клиентов по протоколу TCP/IP;
2) Отображать на экране в реальном времени список IP адресов всех подключенных клиентов;
3) Сообщения пришедшее от одного клиента должны пересылаться всем подключенным в текущий момент клиентам.
Минимальный функционал клиента:
1) Подключаться к серверу по протоколу TCP/IP;
2) Отправлять, принимать и отображать текстовые сообщения.
Дополнительно:
Любой дополнительный функционал, такой как наличие графического интерфейса, авторизация пользователей, сохранение лога сообщений в базе данных, использование шифрования и т.д. может быть реализован на усмотрение разработчика и будет считаться преимуществом при рассмотрении результатов тестового задания.
Вспомогательные ресурсы:
- https://www.binarytides.com/socket-programming-c-linux-tutorial
- https://www.binarytides.com/winsock-socket-programming-tutorial
После выполнения этих заданий вы можете загрузить проекты на ваш профиль GitHub и поделиться ими на нашей странице GitHub Обсуждений!