Форум программистов, компьютерный форум, киберфорум
Работа
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607

Тестовое задание от компании ИНКОМА (Senior Software Developer C++ (Qt)

29.01.2020, 22:38. Показов 5012. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня вопросы к профессиональному сообществу: Как относится данному работодателю ?
Отправил сврё резюме и в качестве условия для собеседования мне выслали тестовое задание.
Я правильно понимаю что мне будет дано право решать хочу я тут работать или нет только после успешно выполненного тестового задания ?
Само тестовое задание тоже вызывает вопросы. Возможно у меня нехватает опыта, а возможно не умеют формулировать мысли.
Непонятный места помечены жирным шрифтом. В описании требований вакансии вообще ничего не сказано про опыт разработки клиент-серверных приложений. Я сам раньше сервера не разрабатывал и мне сам объём задания кажется запредельным.

например меня немного озадачила фраза:
У вас есть серверная компонента, в которой есть некий объект (например контейнер STL) из\в которого производятся конкурентные (из нескольких потоков) чтение и запись клиентами, которые подключились к этому серверу.
В одной идеи смешали сетевые и межпоточные концепции, хоя конечно можно догадать что имел ввиду автор.

Что имсеется ввиду тут непонятно вообще.
Соотношение операций чтение/запись = 90/10.
Ну остальные непонятки в тексте ниже?
Кликните здесь для просмотра всего текста
Решение необходимо оформить в виде ссылки на GitHub на приватный доступ. Для того нужно зайти в настройки профиля -> Repositories -> Collaborators, рядом с тем репозиторием, к которому хотите дать доступ, в строке поиска ввести e-mail: romed2403@gmail.com. Появится аккаунт RomanED.


Задание 1

Класс описан следующим образом:

class SomeClass
{

public:
SomeClass()
{
x1 = new char[ 1024 ];
x2 = new char[ 1024 * 1024 ];
}

private:
char *x1;
char *x2;
};

Опишите и исправьте проблемы (если они есть) в этом классе и приведите код для конструктора копирования и оператора присваивания(а также оператор перемещения и конструктор перемещения).


Задание 2


У вас есть серверная компонента, в которой есть некий объект (например контейнер STL) из\в которого производятся конкурентные (из нескольких потоков) чтение и запись клиентами, которые подключились к этому серверу.

Соотношение операций чтение/запись = 90/10.

Реализуйте клиент-серверный механизм взаимодействия (используя Boost и\или Qt).

Допустим у вас есть 10 клиентов (реализация клиента проста, может отправлять запросы, а также выполнять ожидание на reconnect и т.д., список запросов можете сделать как вам удобно, но чем больше разных состояний и граничных случаев будет учтено, тем лучше), каждый из которых подключились по соответствующему порту и адресу к серверу. Сервер имеет в качестве структуры данных какой то контейнер STL, например unordered_map (либо это может быть база данных SQL или любая другая).

Запись и чтение в этот контейнер должны производиться конкурентно. Сам сервер должен, в случае если нагрузка нормальная, ответить на запрос клиента при попытке установки соединения, если занят то ответить что нибудь типа Busy, и через некоторое время попытаться соединиться снова. После установки соединения, клиент (можно генерировать тип запроса "чтение" или "запись", в любой последовательности в примерном соотношении 90\10 как указано выше), начинает отправлять запросы на чтение или запись в контейнер сервера (или базу данных). Можно вкратце описать выбор протокола передачи UDP или TCP, преимущества и недостатки, а также, если невозможно использовать какой либо из них при решении данной задачи.

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

Приведите несколько способов организации доступа к данным объекта (нужно реализовать один из этих способов, например можно реализовать многопоточную обёртку над контейнером), опишите плюсы и минусы каждого способа.

Будет плюсом при решении отметить что и как можно оптимизировать, а также отметить возможно возникающие проблемы при этом.

Что для решения можно использовать:

С++11\14\17
Boost
Qt

Как будет оцениваться задача:

ООП составляющая(применение паттернов, то как это спроектировано, применение SOLID и тд).
Качество кода(правильное использование конструкций и возможностей языка С++, STL и фреймворка Qt).
Наличие бенчмарка (запись результатов скорости выполнения, оценка сложности).
Правильность выбора структуры данных при решении данной задачи (относится к предыдущему, провести анализ вычислительной сложности).
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.01.2020, 22:38
Ответы с готовыми решениями:

Тестовое задание от компании Exness
У меня нет никакого вопроса, но я так и не понял в какую ветку надо написать (все изучил внимательно), поэтому пишу сюда. Я просто хочу...

Небольшое тестовое задание в финской компании.
Привествую всех жителей форума. Сразу отмечу, что решения просить не хочу, а просто хочу показать задание, которая давала компания...

Senior Software Developer C++(Симферополь)
Для реализации новых коммерческих проектов требуется опытный программист-разработчик системного и сетевого ПО на С/С++ в г. Симферополе ...

33
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
31.01.2020, 10:24  [ТС]
Студворк — интернет-сервис помощи студентам
Так для справки....уже сейчас 200КБ кода (не считая тестов) и я чувствую что тону в нём. Такие веши лучше делать наверно всётаки напару с кемто.
фрилансер
 Аватар для Алексей1153
6506 / 5756 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
31.01.2020, 11:08
squareroot, разбивай на классы, тестируй их по отдельности
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
31.01.2020, 11:16  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
squareroot, разбивай на классы, тестируй их по отдельности
Почему Вы решили что у меня както иначе ?
фрилансер
 Аватар для Алексей1153
6506 / 5756 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
31.01.2020, 11:20
Цитата Сообщение от squareroot Посмотреть сообщение
Почему Вы решили что у меня както иначе
по описанию проблемы
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
31.01.2020, 11:29  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
по описанию проблемы
Вы зря думаете что тесты смогут проверить всё.
фрилансер
 Аватар для Алексей1153
6506 / 5756 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
31.01.2020, 11:38
тесты - не смогут, а тестирование (работа с отладчиком, логгирование) - сможет

Добавлено через 1 минуту
вообще, при чём тут тесты,

Цитата Сообщение от squareroot Посмотреть сообщение
уже сейчас 200КБ кода
неважно, какой там объём, важно - как он организован
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
31.01.2020, 11:41  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
тесты - не смогут, а тестирование (работа с отладчиком, логгирование) - сможет
Ручное тестирование(работа с отладчиком) и автоматизированное тестирование не понацея ИМХО. Без второй пары глаз, а лучшей третий многое так и останется. Я не говорю что код нерабочий. Он рабочий. Но по опыту знаю что сырой.
фрилансер
 Аватар для Алексей1153
6506 / 5756 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
31.01.2020, 11:43
я сейчас для интереса в одном своём долгоиграющем древнем проекте замерил все cpp и h файлы - вышло 14МБ. Ничё, справляюсь пока что

Добавлено через 1 минуту
Цитата Сообщение от squareroot Посмотреть сообщение
Без второй пары глаз, а лучшей третий многое так и останется.
на самом деле, всё баги находятся (читай- тестируются) конечным пользователем. Лучше - толпой таких пользователей. На столе фиг всё обнаружишь )

Добавлено через 32 секунды
но обеспечить отсутствие крашей - первоочередная задача ещё на столе
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
31.01.2020, 11:53  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
я сейчас для интереса в одном своём долгоиграющем древнем проекте замерил все cpp и h файлы - вышло 14МБ. Ничё, справляюсь пока что
В каком смыслн справляетесь ? Вы помните содержание каждой функции/метода ? Могу только позавидовать вашей памяти. Впрос в том что наступает момент когда даже идеальный код поддерживать и развивать отнимает много времени. Надо то вспомнить и сё вспомнить. А если это писалось несколько лет назад, то вдвойне хлопотно.

Цитата Сообщение от Алексей1153 Посмотреть сообщение
на самом деле, всё баги находятся (читай- тестируются) конечным пользователем. Лучше - толпой таких пользователей. На столе фиг всё обнаружишь )
Это не мой случай. Пока во всяком слчае не мой.Мжет в будущем.

Цитата Сообщение от Алексей1153 Посмотреть сообщение
но обеспечить отсутствие крашей - первоочередная задача ещё на столе
На столе или под сталом. А исключительно самостоятельное тестирование имеет свои пределы качества.
фрилансер
 Аватар для Алексей1153
6506 / 5756 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
31.01.2020, 11:57
но обеспечить отсутствие крашей - первоочередная задача ещё на столе
Цитата Сообщение от squareroot Посмотреть сообщение
Вы помните содержание каждой функции/метода
самое интересное - нет. Разве что в общих чертах. Но когда нужно исправить или доработать - заглядываю туда и вспоминаю. Ругаю свой древний код за корявость, хвалю более новый за заботу о бущем (мне). В непонятных местах пообильнее комментарии делаю

Цитата Сообщение от squareroot Посмотреть сообщение
А если это писалось несколько лет назад,
проекту более 10 лет
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
31.01.2020, 12:00  [ТС]
Цитата Сообщение от Алексей1153 Посмотреть сообщение
но обеспечить отсутствие крашей - первоочередная задача ещё на столе

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


проекту более 10 лет
У вас просто не стоит задача презентовать этот код и быть готовым обосновать каждую строчку кода.

Добавлено через 1 минуту
И нормально так обосновать что реализовано лучшее решение.
фрилансер
 Аватар для Алексей1153
6506 / 5756 / 1134
Регистрация: 11.10.2019
Сообщений: 15,404
31.01.2020, 12:06
squareroot, что такое лучшее? По какому критерию? Есть оптимальное - работает быстро, ресурсы лишние не отнимает.

Вот если пользователь жалуется, тогда нужно заниматься тонкой настройкой и оптимизацией. Но сначала нужно точно определить, где именно тормоза, потому что они часто бывают совсем не там, где думаешь
 Аватар для TheAthlete
174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 575
31.01.2020, 17:08
Прочитал описание вакансии и чем занимается компания -
наш основной продукт — видеоконференцсвязь Видеоселектор
Другими словами основная работа там будет связана как раз с сетью, серверами и клиентами на TCP/UDP и в целом данное тестовое адекватное - т.е. позволяет проверить - сможет ли кандидат сразу сесть за код и начать решать прикладные задачи, а не заниматься изучением сетей. Тут даже вопрос не только в изучении, а в том, что помимо базовых вещей, связанных с сетью, которые описаны тестовом задании, серверами и клиентами есть специфические, которые требует хорошего знания стека, внутренностей реализации сети в ОС и т.д. И которые проявляются только при реальной работе, а не при написании hello world проектов

Что касается тестововго - чтение/запись - это по сути HTTP-методы GET и POST, т.е. можно за основу взять

По поводу конкурентной записи - тут нужно будет подумать, либо взять какой-то потокобезопасный контейнер STL, либо для простоты писать в базу

Добавлено через 15 минут
т.е. по сути можно реализовать как раз http сервер и клиент, благо примеров реализации большое количество
Furl::HTTP
AnyEvent::HTTP::Server
Примеры на перле
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
01.02.2020, 00:10  [ТС]
TheAthlete, Ну может этой темой я помогу компании Инкома в поиске кандидата. Я то сам особо не претендую.
Мне щас больше нужен консультант или просто чел с кем я могбы вместе довести свой сервер до ума.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.02.2020, 00:10

Senior Software Developer C++ [CQG, Zelenograd]
Вакансия: Ведущий Программист-Разработчик C++ (Win) Регион: Зеленоград (Москва) Компания: CQG Заработная...

Senior Software Web Developer (PHP), $2000, Kiev
Известной студии Web-дизайна в связи с открытием ряда крупных международных проектов требуется на постоянную работу в Киеве Senior Software...

Senior Software Developer (Cloud Core Services) СПб от 90000р
Резюме направлять на job@dins.ru Требования: Опыт командной работы. Профессиональное владение одним из языков высокого...

Вакансия Senior C++Developer,Senior J2EE Developer, Украина, г.Николаев
С++ Required skills: Good understanding of OOP principles, design patterns and their applicability 4+ years of experience in...

Уровень программиста (Junior Developer, Middle Developer, Senior Developer), как проверить?
Доброго времени суток. Какие есть тесты для проверки своего уровня программирования(может на хабре или где-то еще)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru