четверг, 17 февраля 2022 г.

понедельник, 14 февраля 2022 г.

[prog.c++] Мои пять копеек про тестовое задание от Network Optix (по мотивам срачей на Хабре и RSDN)

Сперва была статья на Хабре "Мои собеседования '2021 (C++ developer)", потом один кусочек из нее процитировали на RSDN:

Домашнее задание, написать эффективный TCP-сервер с определенными требованиями. Код должен быть покрыт юнит-тестами. Раньше TCP-сервера писать не приходилось, потратил три дня почти full-time, отослал результат. Ответили что стилистически код понравился, но сервер недостаточно эффективен, в частности имеются лишние копирования данных. Оценил что на исправление замечаний может уйти еще N часов. Забил.

после чего образовался небольшой срач, в который угораздило вляпаться и мне. В какой-то момент туда пришел и автор хабровской статьи, показал написанные им варианты решения тестового задания (номер раз, номер два), после чего озвучил и условие самого тестового задания:

Клиентское приложение устанавливает TCP-соединение и передает строки, разделенные символом перевода строки “\n”.
Сервер должен считать их хеш-суммы (тип суммы — на выбор кандидата) и отправлять их обратно в HEX-виде, также завершая каждую сумму символом перевода строки.
Клиентские запросы должны обрабатываться параллельно, в случае достаточного количества параллельных соединений должны быть загружены все ядра CPU.
Сервер должен работать эффективно — не потреблять лишней памяти и отправлять хэш-суммы по мере их готовности.
Входные строки могут быть неограниченной длины.
Для реализации сетевой части сервера можно использовать любую удобную вам библиотеку из числа стандартных пакетов репозитория Ubuntu 16. Сервер также должен собираться и работать на Ubuntu 16.
На модули приложения должны быть написаны unit-тесты.

Сейчас не буду вдаваться в то, уместно ли в 2021-2022 давать тестовые задания соискателям. Как и не буду говорить про впечатления от RSDN-овского срача. Лучше я этому посвящу отдельный пост.

В этом же посте хочется поговорить именно про само это тестовое задание. Потому что оно мне понравилось. И потому что я слегка прифигел от уровня "решений" автора статьи с Хабра. Так что кому интересны мои пять копеек, то милости прошу под кат.