|
1 / 1 / 0
Регистрация: 16.10.2015
Сообщений: 27
|
|
Проверить и прокомментировать вариант решения тестового задания при приёме на работу16.10.2015, 21:07. Показов 7431. Ответов 87
Метки нет (Все метки)
Приветствую!
Сделал тестовое задание, которое попросил сделать один работодатель, на что получил отказ и комментарий о том, что "оно сделано неидеально". Как вы думаете, что могло там не понравиться, чтобы знать на будущее? Это работодатель такой капризный или я такой кривой программер, что там действительно сделано так нехорошо? Несколько шероховатостей я вижу, но могли ли они быть основанием для отказа? Ниже привожу свои варианты решения задач.
0
|
|
| 16.10.2015, 21:07 | |
|
Ответы с готовыми решениями:
87
Проверить и прокомментировать вариант решения тестового экзаменационного задания по теории C++ и Си Тесты, вопросы и задания при приеме на работу Какого уровня тестовые задания при приеме на работу ребят без опыта |
|
1 / 1 / 0
Регистрация: 16.10.2015
Сообщений: 27
|
||
| 17.10.2015, 19:23 [ТС] | ||
|
0
|
||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 17.10.2015, 19:34 | |
|
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||
| 17.10.2015, 19:40 | |||
|
Но если очень надо самому сделать, но std::set наверняка работает на сбалансированных деревьях.
0
|
|||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||
| 17.10.2015, 20:14 | |||||||
|
Речь идет о примерно такой реализации автомате (Даже не набросок а заготовка наброска)
0
|
|||||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 17.10.2015, 20:17 | ||
|
0
|
||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 17.10.2015, 20:25 | ||
|
0
|
||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 17.10.2015, 20:28 | ||
|
0
|
||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 17.10.2015, 20:47 | ||||
|
Добавлено через 3 минуты Добавлено через 1 минуту
0
|
||||
|
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 157
|
|
| 17.10.2015, 20:59 | |
|
почитал. Рэнжи прав.
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 17.10.2015, 21:23 | ||
|
0
|
||
|
1 / 1 / 0
Регистрация: 16.10.2015
Сообщений: 27
|
|
| 23.10.2015, 09:28 [ТС] | |
|
По первым двум заданиям пришли отказы. Попытка номер 3.
Задание. Необходимо реализовать класс(ы) для генерирования идентификаторов. Идентификаторы должны быть последовательными целыми числами (например, 3, 4, 5 и т.п.). Другие свойства генератора вам нужно придумать самому на основе того, что по вашему мнению может понадобится пользователям вашего генератора. Код должен быть написан на C++ используя любой официальный стандарт. Из библиотек можно использовать libc, stl и boost. Решение приложено (и уже отправлено работодателю - я же честный мальчик). Что скажете?
0
|
|
|
27 / 26 / 6
Регистрация: 02.02.2014
Сообщений: 96
|
|
| 23.10.2015, 10:52 | |
|
Из N+1 генераторов при их сохранении/загрузке N превратятся в тыкву. Лежащий рядом скрипт idGenerator при сохранении превратится в тыкву. Опять шаблоны на ровном месте, но по сравнению с первыми двумя проблемными моментами это уже не важно.
0
|
|
|
1 / 1 / 0
Регистрация: 16.10.2015
Сообщений: 27
|
||
| 23.10.2015, 12:11 [ТС] | ||
|
Насчет сохранения загрузки - еще утром у меня был другой вариант вообще без классов (нафиг они тут нужны?) а просто со статическим классом-инициализатором генератора + самой функцией-генератором. Он работал нормально. Но перед отправкой я еще разок перечитал задание, а там написано, что надо сделать класс(ы). Тут я подумал, что лажанулся и все переписал с помощью класса и уже не обратил внимание на эту проблему. Потом решил опять для крутости добавить темплейт... вот дебил я...
0
|
||
|
27 / 26 / 6
Регистрация: 02.02.2014
Сообщений: 96
|
|
| 23.10.2015, 12:50 | |
|
Тут можно было вообще отписаться, что есть на свете std::atomic... - готовые классы, которых вполне достаточно для указанной задачи и выставить основным решением что-то вроде "using Generator = std::atomic<int>".
0
|
|
|
1 / 1 / 0
Регистрация: 16.10.2015
Сообщений: 27
|
|
| 12.11.2015, 15:50 [ТС] | |
|
Попытка номер 5.
Задание. 1. Написать класс, реализующий примитив синхронизации «много читателей/один писатель», для доступа к разделяемым данным. 2. Написать программу, демонстрирующую возможности данного класса. Условия работы: - Писатель может захватить примитив, если он не захвачен ни писателем, ни читателем. Если захват невозможен, писатель должен ждать; - Читатель может захватить примитив, если он не захвачен писателем. Если захват невозможен, читатель должен ждать; - Приоритет при захвате примитива всегда отдаётся писателю, т.е. если читатель и писатель должны ждать одновременно, то первым доступ получает писатель. Все под Windows. Решение приложено.
0
|
|
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||
| 12.11.2015, 17:30 | ||
|
— throw new — Не-explict конструкторы с одним параметром. — Непонятно зачем используемые битовые поля. — Операторы приведения сомнительной полезности с конструкциями вида return *(LONG*)this; 2. Если посмотреть на реализацию, то она тоже какая-то странная. Состояния не прикрыты мьютексами. Создается их копия и дальше закрываем глаза на то, что состояние может измениться в другом потоке. Какие-то непонятные вложенные бесконечные циклы, внезапные Sleep(0)… Изменение состояния выполняется по принципу «пробуем записать пока не успеем». Посмотрите в сети варианты решения этой задачи — там все сильно проще. Либо я чего-то не понимаю.
2
|
||
|
27 / 26 / 6
Регистрация: 02.02.2014
Сообщений: 96
|
|
| 12.11.2015, 17:59 | |
|
В условиях нет ни слова про запрет пользоваться C++11, а ведь с 11 стандартом код вышел бы намного проще - весь класс свелся бы к обертке над mutex-ом и conditional_variable, которая (обертка) бы уже меняла как надо остальное состояние. Опять же код заметно сложнее, чем необходимо для решения задачи.
P.S. у SemaphoreWrapper никуда не делись оба оператора присваивания = утечка хендлов если что. P.P.S. да и ядреные семафоры тащить туда, где хватило бы critical section - явный перебор.
1
|
|
|
1 / 1 / 0
Регистрация: 16.10.2015
Сообщений: 27
|
||
| 12.11.2015, 21:56 [ТС] | ||
|
В варианте с critical section performance хуже.
SemaphoreWrapper - да, утечка хэндлов, спасибо! shared_mutex есть в С++14 - он бы помог, наверное, но у меня нет даже такого компайлера проверить. Добавлено через 4 минуты не-explicit - конструкторы тоже согласен Битовые поля совершенно понятно зачем - performance, иначе бы пришлось ставить залочки какие-то на развесистые структуры. А так - InterlockedCompareExhange, и все. Состояния не прикрыты мьютексами - это намеренно, для увеличения производительности. Все абсолютно корректно, там даже подробные комменты есть, что зачем и почему.
0
|
||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||
| 13.11.2015, 06:40 | ||
|
Делается две копии состояния. Одна для изменений, вторая для сравнения с оригиналом. И вот я ожидал бы, что вторая будет явно объявлена константой.
1
|
||
|
1 / 1 / 0
Регистрация: 16.10.2015
Сообщений: 27
|
|
| 13.11.2015, 09:31 [ТС] | |
|
0
|
|
| 13.11.2015, 09:31 | |
|
Помогаю со студенческими работами здесь
60
Не взяли на работу из-за неправильно выполненного тестового задания, посмотрите? Задание при приёме на работу
Задача при приеме на работу Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так?
Да, всё верно. Я — искусственный интеллект.
Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
|
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает.
В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше.
Перед запуском проверяем. . .
|
Модель здравоохранения 13. Добавление самой системы здравоохранения.
anaschu 22.05.2026
В предыдущем посте мы настроили болезни. Теперь добавим события, которые управляют здоровьем всего коллектива, а также настроим рабочий график и расчёт финансов.
В Main создаём четыре события. . . .
|
Модель здравоохранения 12. добавление болезней через ресурпул, как аварии
anaschu 22.05.2026
Болезни — это ключевая часть нашей модели. Нам нужно, чтобы работник периодически уходил на больничный, его задание при этом зависало, а после выздоровления работа возобновлялась. Реализуем это двумя. . .
|
|
Модель здравоохранения 11. Создаём классы Задание и Работник
anaschu 22.05.2026
В AnyLogic каждая заявка и каждый ресурс — это объект определённого класса. Нам нужно создать два класса: Задание (заявка) и Работник (ресурс).
Класс Задание
В дереве проекта нажимаем правой. . .
|
Модель здравоохранения 10. Новая модель, смотрим, как добавлять логические блоки, и что писать внутри
anaschu 22.05.2026
Открываем AnyLogic, создаём новый проект. В дереве проекта появляется класс Main — это главный агент, в котором будет жить вся наша логика.
Палитра блоков
Слева находится палитра. Нас интересует. . .
|
модель ЗдравоСохранения 9. Новая модель, разбираемся, как ее создавать
anaschu 22.05.2026
В этой серии постов мы построим модель небольшого рабочего коллектива. Сотрудники получают задания, выполняют их, иногда болеют — и мы хотим посчитать, сколько это стоит компании.
Метод. . .
|
[golang] Linked list
alhaos 22.05.2026
Связный список / Linked list
Связный список структура данных позволяющая хранить список значений, в отличии от массива в памяти хранится не сплошным куском, а отдельными частями которые ссылаются. . .
|