Информация об изменениях

Сообщение Re[6]: Тестовое задание: написать эффективный TCP-сервер от 12.02.2022 16:53

Изменено 12.02.2022 16:54 dwebster

Re[6]: Тестовое задание: написать эффективный TCP-сервер
Здравствуйте, so5team, Вы писали:

S>Чтобы говорить про алго-сложность нужно знать точную постановку задачи. Я ее не знаю.



Вот постановка.

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

Да, я бОльшую часть времени убил на разбирательство с boost asio и осознанием как это все покрыть юнит-тестами.
Первая версия получилась неэффективной, но покрытой.
Вторая более эффективной, но не покрытой — https://github.com/w5346c/hash_server2
Потом получил устраивающий меня оффер из другой компании и продолжать не стал.
Re[6]: Тестовое задание: написать эффективный TCP-сервер
Здравствуйте, so5team, Вы писали:

S>Чтобы говорить про алго-сложность нужно знать точную постановку задачи. Я ее не знаю.



Вот постановка.

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

Да, я бOльшую часть времени убил на разбирательство с boost asio и осознанием как это все покрыть юнит-тестами.
Первая версия получилась неэффективной, но покрытой.
Вторая более эффективной, но не покрытой — https://github.com/w5346c/hash_server2
Потом получил устраивающий меня оффер из другой компании и продолжать не стал.