Тестовое задание: написать эффективный TCP-сервер
От: Shmj Ниоткуда  
Дата: 06.02.22 17:28
Оценка: +2
Чел. пишет:

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


Что бы вы ответили на предложение "написать эффективный TCP-сервер" в качестве тестового? Звучит как бред.
Re: Тестовое задание: написать эффективный TCP-сервер
От: reversecode google
Дата: 06.02.22 17:47
Оценка: +1
компания во главе с говнокодерами из Network Optix
не способа вообще ничего стоящего написать
юзают qt в еммедеде
вместе с кутешной тупой, медленной и не эффективной сетевой имплементацией
и подцепленным гстриммером

че там они реально кодят когда уже все накожено до них и все готово?
я всегда улыбался когда встречал отзывы о той бестолковой компании
и завышенным чсв их типа свиньёров

так что я улыбнулся когда очередной чел опять помянул ее

стилистика... лишнее копирование...

типичный отказ тех кто никого никогда не нанимает))

ps если че, я вообще никаким боком к нетоптикусу
просто реверсил как то их говнософт
гугля параллельно встречал отзывы
Re: Тестовое задание: написать эффективный TCP-сервер
От: Sazon  
Дата: 06.02.22 18:28
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Чел. пишет:


S>

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


S>Что бы вы ответили на предложение "написать эффективный TCP-сервер" в качестве тестового? Звучит как бред.


Видимо, что-то поменялось у NO. У меня было всего три этапа, третий как раз system design. По первым двум этапам было адекватное впечатление, но system design смазало все откровенно. Задача была на построение архитектуры подобной торенту, что-то в этом роде. Я ее подзавалил, хотя не могу сказать, что полностью. Из уст собеседующего постоянно сквозило, что у него нет времени на разговоры, причем с какой-то злобой все произносилось.
Самое интересное, время они сами назначают.

Касаемо эффективности, вот судя по вопросам на первых двух этапах, не показалось, что там сильный уклон в эту сторону. Да, было разворачивание списка)
Re: Тестовое задание: написать эффективный TCP-сервер
От: Умака Кумакаки Ниоткуда  
Дата: 06.02.22 18:48
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>Что бы вы ответили на предложение "написать эффективный TCP-сервер" в качестве тестового? Звучит как бред.


бред это тащить копипасту с рсдна на хабр обратно на рсдн с хабра http://rsdn.org/Forum/job/7986240.1
Автор: dwebster
Дата: 08.04.21
нормально делай — нормально будет
Re[2]: Тестовое задание: написать эффективный TCP-сервер
От: reversecode google
Дата: 06.02.22 18:51
Оценка:
так там из песочницы
хабр год апрувил
Re: Тестовое задание: написать эффективный TCP-сервер
От: Gradiens  
Дата: 06.02.22 19:10
Оценка: +4
Здравствуйте, Shmj, Вы писали:

S>Что бы вы ответили на предложение "написать эффективный TCP-сервер" в качестве тестового? Звучит как бред.


В 22 году любое тестовое задание звучит как бред. Возможно, ради вот прямо компании мечты можно сделать исключение, но если это просто очередная компания из списка — зачем тратить свое время? Не лучше ли за это время пройти пару-тройку собеседований в более адекватных компаниях?
А уж эффективный сервер написать... а операционку им написать не надо?
Re: Тестовое задание: написать эффективный TCP-сервер
От: Denwer Россия  
Дата: 07.02.22 10:24
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Что бы вы ответили на предложение "написать эффективный TCP-сервер" в качестве тестового? Звучит как бред.


Вообще задание интересное, у меня у самого небольшой бзик к оптимизации. Не люблю кучу лишних копирований. В основном как раз по работе и пишу сервера, которые должны работать на слабом железе. Но давать такое задание на собеседовании даже в голову не придет, это перебор.
Re: Тестовое задание: написать эффективный TCP-сервер
От: sr_dev  
Дата: 07.02.22 11:10
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Чел. пишет:


S>

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


S>Что бы вы ответили на предложение "написать эффективный TCP-сервер" в качестве тестового? Звучит как бред.


Ну почему как бред. Надо просто немного повести диалог — уточнить, что конкретно там хотят видеть. Предложить решение — скажем, юзаем буст асио, корутины, тредов создаем по количеству ядер умножить на два. У всех разное ожидание "эффективного сервера", может там сразу скажут, что не любят лишнее копирование данных. Сказать им — тогда юзать смарт-поинтеры и не будет никакого копирования. Может и тестовое тогда не понадобится вообще, а можно намекнуть — зачем вам тестовое, если решение вот оно описано нами только что. Вот отказ от диалога с их стороны — косяк, нужно наверное тогда забить.
Re[2]: Тестовое задание: написать эффективный TCP-сервер
От: Shmj Ниоткуда  
Дата: 07.02.22 14:55
Оценка:
Здравствуйте, Denwer, Вы писали:

D>Вообще задание интересное, у меня у самого небольшой бзик к оптимизации. Не люблю кучу лишних копирований. В основном как раз по работе и пишу сервера, которые должны работать на слабом железе. Но давать такое задание на собеседовании даже в голову не придет, это перебор.


Ок, приведите тут ваш "эффективный TCP-сервер".
Re[3]: Тестовое задание: написать эффективный TCP-сервер
От: удусекшл  
Дата: 07.02.22 15:17
Оценка: +1 :)))
Здравствуйте, Shmj, Вы писали:

D>>Вообще задание интересное, у меня у самого небольшой бзик к оптимизации. Не люблю кучу лишних копирований. В основном как раз по работе и пишу сервера, которые должны работать на слабом железе. Но давать такое задание на собеседовании даже в голову не придет, это перебор.


S>Ок, приведите тут ваш "эффективный TCP-сервер".


Чтобы ты собес прошел?
Re: Тестовое задание: написать эффективный TCP-сервер
От: vsb Казахстан  
Дата: 07.02.22 15:48
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Что бы вы ответили на предложение "написать эффективный TCP-сервер" в качестве тестового?


Написал бы при наличии интереса к этой вакансии.

S>Звучит как бред.


Что именно?
Re[2]: Тестовое задание: написать эффективный TCP-сервер
От: reversecode google
Дата: 07.02.22 16:15
Оценка:
и много вы написали эффективных серверов и вообще на тестовых заданиях ?

даю намёк
на тестовом задании показывают общие знания
а не на дурняк кому то делают работу за спасиба

ну и к тому же, та компания не написала и не пишет никаких эффективных серверов
обычный говнокод

так что я бы сказал любой кандидат там оверквалифай для той компании

ну и вообще та компания никого никогда не нанимает
Re[3]: Тестовое задание: написать эффективный TCP-сервер
От: vsb Казахстан  
Дата: 07.02.22 16:52
Оценка: +2
Здравствуйте, reversecode, Вы писали:

R>и много вы написали эффективных серверов и вообще на тестовых заданиях ?


Ни одного, но задача интересная и при наличии стимула я бы повозился. Общее представление о том, как это делать, у меня имеется.

R>даю намёк

R>на тестовом задании показывают общие знания
R>а не на дурняк кому то делают работу за спасиба

Я не считаю, что написание эффективного hello world сервера это работа, которая чего-либо стоит в плане пользы. Вполне себе хорошее тестовое задание. И вполне себе бесполезный на практике код (т.к. любой адекватный проект будет использовать готовую библиотеку, а не велосипед).

R>ну и к тому же, та компания не написала и не пишет никаких эффективных серверов

R>обычный говнокод

Ну говнокод, так говнокод. Я же не говорю, что для любой компании буду тратить 3 дня на тестовое задание. Всё зависит от числе собеседований, от офферов, от самой компании. Если это будет Гугл, который будет меня потенциально приглашать в Цюрих, я ему HTTPS-реализацию на ассемблере напишу. Ну или попытаюсь, по крайней мере.

R>так что я бы сказал любой кандидат там оверквалифай для той компании


R>ну и вообще та компания никого никогда не нанимает


Я уже понял, что у тебя личная вендетта к той компании. Мой ответ был без какой-либо специфики относительно конкретной компании. К примеру первую работу я получил, написав реализацию malloc и GUI к этой реализации, визуализирующий выделение памяти, на WinAPI. Я на это потратил выходные и не считаю это плохой задачей, мне это было интересно и работу я получил в итоге.
Отредактировано 07.02.2022 16:53 vsb . Предыдущая версия . Еще …
Отредактировано 07.02.2022 16:53 vsb . Предыдущая версия .
Отредактировано 07.02.2022 16:52 vsb . Предыдущая версия .
Re[4]: Тестовое задание: написать эффективный TCP-сервер
От: Codealot Земля  
Дата: 07.02.22 23:20
Оценка: +1 :))
Здравствуйте, vsb, Вы писали:

vsb>HTTPS-реализацию на ассемблере напишу.


Ассемблер — для лохов. Только HDL, только хардкор.
Ад пуст, все бесы здесь.
Re: Тестовое задание: написать эффективный TCP-сервер
От: Тёмчик Австралия жж
Дата: 08.02.22 00:53
Оценка: :)))
Здравствуйте, Shmj, Вы писали:

S>Что бы вы ответили на предложение "написать эффективный TCP-сервер" в качестве тестового? Звучит как бред.


Взять готовую библиотеку. Но это же про C++, правда? Там у них своя атмосфэра.
Re[2]: Тестовое задание: написать эффективный TCP-сервер
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 08.02.22 01:55
Оценка: +2 :)
Здравствуйте, Тёмчик, Вы писали:


Тё>Взять готовую библиотеку. Но это же про C++, правда? Там у них своя атмосфэра.


Ну вообще взять готовую библиотеку — это современный C++ путь. Но могут быть и исключения
Re[3]: Тестовое задание: написать эффективный TCP-сервер
От: Тёмчик Австралия жж
Дата: 08.02.22 03:25
Оценка:
Здравствуйте, kaa.python, Вы писали:

Тё>>Взять готовую библиотеку. Но это же про C++, правда? Там у них своя атмосфэра.


KP>Ну вообще взять готовую библиотеку — это современный C++ путь. Но могут быть и исключения


Библиотека копирует буфер!
Re[4]: Тестовое задание: написать эффективный TCP-сервер
От: vsb Казахстан  
Дата: 08.02.22 05:44
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>>>Взять готовую библиотеку. Но это же про C++, правда? Там у них своя атмосфэра.


KP>>Ну вообще взять готовую библиотеку — это современный C++ путь. Но могут быть и исключения


Тё>Библиотека копирует буфер!


Да ладно. Даже на жаве netty ничего не копирует зазря, а напротив там куча приседаний, лишь бы не скопировать нечаянно.
Re[4]: Тестовое задание: написать эффективный TCP-сервер
От: Shmj Ниоткуда  
Дата: 08.02.22 07:12
Оценка:
Здравствуйте, удусекшл, Вы писали:

S>>Ок, приведите тут ваш "эффективный TCP-сервер".

У>Чтобы ты собес прошел?

Это не по моей части. Уважаю C++, но ведь у всех свои природные возможности, не все родились гениями — для моего мозга это слишком тяжело.

Просто сама постановка вопроса. Вот, для примера, образцовая реализация TCP-сервера из книги: http://www.khmere.com/freebsd_book/src/06/poll_socket.c.html

Ну или что-то подобное можно найти открытое, которое уже реализовали 300 раз и пытались оптимизировать лучшие умы человечества.

Неужели вы, простой Вася из Урюпинска, сможете написать что-то более эффективное?
Re[5]: Тестовое задание: написать эффективный TCP-сервер
От: Максим Россия  
Дата: 08.02.22 07:51
Оценка: +1
S>Неужели вы, простой Вася из Урюпинска, сможете написать что-то более эффективное?

Ну конечно не сможет. Впрочем как и авторы подобных тестовых заданий.

П.С.
Вспомнил историю про лишнее копирование. Лет 7 назад писали для СХД небольшой модуль, который данные (без обработки) из диска в сеть передавал (или наоборот, не помню точно). В классическом подходе нужно прочитать данные с диска в userspace, а потом послать их в нужный сокет. То есть нужно дважды из userspace в kernelspace переходить. Казалось, что sendfile должен сильно помочь. Переписали, поймали несколько deadlock-ов из-за ошибок в ядре и после замеров стало понятно, что производительность лучше не стала, а код сильно усложнился. Возможно это произошло из-за того, что sendfile был сырой на тот момент. Все это я к тому рассказал, что все эти теоретические измышления про скорость работы не всегда работают. Нужно смотреть запуски программы на конкретном железе в реальном окружении.
Errare humanum est
Отредактировано 08.02.2022 8:05 Максим . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.