Здравствуйте, Igorxz, Вы писали:
I>это ещё што! попадаются такие, что дают целый проект под видом тестового задания))) I>и поступай, как хочешь!
Это была обычная практика в нескольких компаниях, где мне приходилось работать. Задания формулировались достаточно определённо и были весьма объёмными (требовали создания завершённой полноценной функциональной программы, имеющей практическую пользу, включающей и UI и нетривиальную логику). В одном случае мне пришлось потратить две недели на выполнение тестового задания (мне их потом оплатили, когда приняли на работу). Во всех случаях компании предлагали очень конкурентоспособные условия работы и зарплату, и предъявляли очень высокие требования к способностям работников (и по знаниям, и по мыслительным способностям, и по умению фокусироваться на работе, самомотивации, и способности в приемлемые сроки доводить дело до конца без присмотра со стороны начальства).
Хотя я слышал и про компании-лохотроны, которые использовали подобную практику как источник бесплатной рабочей силы.
N>"Здесь нет правильных ответов. N>Оценивается способность кандидата понимать поставленную задачу, используемый синтаксис и подход к решению, алгоритмические способности и т.п."
Здравствуйте, -n1l-, Вы писали:
N>"Здесь нет правильных ответов. N>Оценивается способность кандидата понимать поставленную задачу, используемый синтаксис и подход к решению, алгоритмические способности и т.п."
А, таки поиск глубинного смысла. Даём задачу с плохо сформулированными и частично некорректными требованиями и смотрим, что ответит кандидат. Единственный плюс — можно повышать ЧСВ за счёт "опять никто не угадал, кандидаты отстой".
Только не надо начинать "интервьюер хороший, он потом хотел обсудить". Потому что в этом случае
а. Задачи подобного рода дают на живом собеседовании.
б. Задачу формулируют или как "предложите свою реализацию класса при таких вводных" или "оцените реализацию на заданном наборе сценариев использования". Но никак не "вот дурное описание, приступай к реализации"
в. Не отвечают на прямые вопросы отмазками "ну ок, продолжай угадывать дальше"
Здравствуйте, nikov, Вы писали:
N>Возможно, что одна из целей данного задания — убедиться, что в случае недопонимания условия, ты будешь задавать уточняющие вопросы до тех пор, пока условие не станет понятным, вместо того чтобы тратить время на написание чего-то, не соответствующего условию.
Что-то я сомневаюсь, что у топикстартера именно такой вариант Там некорректно всё.
Ок, всякие косяки вида "Значение (BaudRate — Sinix) кэшируется до следующего запроса свойства BaudRate" спишем на волнение. Но:
Во-первых, любой императив ("нужно реализовать" и дальше низкоуровневые детали реализации) в техзадании подразумевает один из трёх вариантов:
* на первичный анализ задачи было угрохано огромное количество времени, все "очевидные" варианты не подошли.
* автор считает исполнителя неспособным провести анализ самостоятельно.
* автор не умеет писать техзадание.
Насколько понял, в задании нет ни вводной части с обоснованием, ни сценариев использования, только спецификация контракта. Третий вариант?
Во-вторых, дизайн API кривой. Совсем кривой. До невозможности. Ни один человек, реально писавший подобный код (и главное, сам его использовавший) так никогда не напишет:
class Fps
{
public TimeSpan MinimumInterval { get; set; }
public static Fps operator += ( Fps fps, double amount ) {…}
public double BaudRate { get {…} }
}
Начнём с того, что сценарий использования класса, очевидно, предполагает два этапа:
1. создание + настройку.
2. собственно использование.
Первая задача обычно реализуется через конструктор, factory-методы, или на худой конец, Start(options) + Stop() + IsRunning, как в Stopwatch/Thread/Process etc. У автора ТЗ этого состояния явно нет, только изменяемое свойство MinimumInterval. Которое само по себе порождает кучу интересных вопросов:
* допустимо ли использование класса без заданного интервала?
* как указать, что интервал не нужен
* можно ли менять интервал в процессе использования
* что должно происходить при попытке получить значение BaudRate при незаданном операторе?
Тут автор выбрал второй из двух плохих вариантов — "Если в момент обращения к свойству этот интервал времени еще не достигнут, возвращается
ноль или значение, рассчитанное на предыдущем интервале."
Хорошо хоть не первый из двух плохих — "кидать исключение".
Если разработчик и пользователь API не сошлись в ответах, класс будет неудобным в использовании. Как тут можно сойтись — я
Продолжаем, оператор +=. Если забыть про реализацию op_AdditionAssignment через il (это если трактовать ТЗ буквально), то у нас остаётся только operator+.
Тут идея вообще шизофренична: мы берём mutable-тип и используем его как один из операндов, т.е. как значение.
Не, серьёзно,
var x = timer + 12;
— это хороший код???
Наконец, именование. Сорри, но Fps и BaudRate — это как из анекдота про трусы и крестик, должно быть что-то одно. Судя по ответу,
BaudRate ... выражается в единицах указанной величины за секунду (например: Байт/сек или Кг/сек).
я бы не надеялся на то, что в остальных пунктах будет больше глубинного смысла.
Здравствуйте, помогите понять, чего от меня хотят.
2. Расчет скорости передачи данных
Необходимо создать класс Fps, удовлетворяющий следующим условиям:
class Fps
{
…
public TimeSpan MinimumInterval { get; set; }
public static Fps operator += ( Fps fps, double amount ) {…}
public double BaudRate { get {…} }
…
}
1. Класс имеет свойство MinimumInterval, определяющее минимальный интервал времени, на котором
производится расчет скорости передачи. (Ну вроде бы понятно)
2. Класс перегружает оператор += для инкремента счетчика на произвольную величину. (Какого счетчика? Зачем этот счетчик?)
3. Класс имеет свойство BaudRate возвращающее текущую скорость инкремента, рассчитанную, как
минимум, на интервале MinimumInterval. (Чего? Я не понимаю.)
Данное значение кэшируется до следующего запроса свойства
BaudRate. (Ну это может быть и понятно)
Если в момент обращения к свойству этот интервал времени еще не достигнут, возвращается
ноль или значение, рассчитанное на предыдущем интервале.
Вот тут тоже непонятно. Если в момент времени интервал не достигнут? Это мне что собственный таймер изобретать?
4. Инкремент счетчика (2) и чтение скорости (3) могут осуществляться из разных потоков. Необходимо
обеспечить потокобезопасность этих операций.
5. Никакие внутренние или внешние таймеры либо дополнительные потоки не используются.
Помогите пожалуйста понять, у меня это в логическую цепочку не складывается.
Здравствуйте, -n1l-, Вы писали:
N>Помогите пожалуйста понять, у меня это в логическую цепочку не складывается.
Обычное тестовое задание. Если не искать глубинного смысла, то оно ещё и сформулировано в виде "на, отстань". Нужно набросать сценарий использования, затем думать.
Скорее всего автор задания имел в виду что-то типа
var fps = Fps.StartNew(minTimeout: TimeSpan.FromSeconds(1));
for (int i = 0; i < SamplesCount; i++)
{
fps += ProcessSomeSamples(i);
}
Console.WriteLine(fps.BaudRate); // Throws if elapsed time is less than minTimeout.
но узнать можно только у автора.
* Дизайн конечно идиотский (особенно идея с оператором), ну да фиг с ним. В техзаданиях ещё и не такое попадается
Здравствуйте, -n1l-, Вы писали:
N>Все равно не все ясно, можете помочь?
Возможно, что одна из целей данного задания — убедиться, что в случае недопонимания условия, ты будешь задавать уточняющие вопросы до тех пор, пока условие не станет понятным, вместо того чтобы тратить время на написание чего-то, не соответствующего условию.
Если вразумительных ответов ты получить не можешь, то спроси себя: ты хочешь работать там, где тебе будут ставить задания, которых ты не понимаешь даже после поясняющих вопросов?
Здравствуйте, mogikanin, Вы писали:
M>Здравствуйте, -n1l-, Вы писали:
N>>Здравствуйте, помогите понять, чего от меня хотят.
M>а у тех кто хотят не пробовали спросить?
пробовал получил такой ответ:
BaudRate — это скорость (в данном случае — скорость передачи или обработки некоторой величины)
Она выражается в единицах указанной величины за секунду (например: Байт/сек или Кг/сек). Поскольку скорость невозможно измерить мгновенно, её измеряют на некотором временном промежутке. Данный промежуток, согласно заданию, должен быть не меньше указанной длительности (MinimumInterval).
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, -n1l-, Вы писали:
N>>Помогите пожалуйста понять, у меня это в логическую цепочку не складывается.
S>Обычное тестовое задание. Если не искать глубинного смысла, то оно ещё и сформулировано в виде "на, отстань". Нужно набросать сценарий использования, затем думать.
S>Скорее всего автор задания имел в виду что-то типа S>
S>var fps = Fps.StartNew(minTimeout: TimeSpan.FromSeconds(1));
S>for (int i = 0; i < SamplesCount; i++)
S>{
S> fps += ProcessSomeSamples(i);
S>}
S>Console.WriteLine(fps.BaudRate); // Throws if elapsed time is less than minTimeout.
S>
S>но узнать можно только у автора.
S>* Дизайн конечно идиотский (особенно идея с оператором), ну да фиг с ним. В техзаданиях ещё и не такое попадается
Как вам такой ответ? Это вообще нормально?
Может быть я чего-то не понимаю?
"Здесь нет правильных ответов.
Оценивается способность кандидата понимать поставленную задачу, используемый синтаксис и подход к решению, алгоритмические способности и т.п."
Здравствуйте, Sinix, Вы писали: S>в. Не отвечают на прямые вопросы отмазками "ну ок, продолжай угадывать дальше"
Они просто послали меня.
Сначала я выслал список вопросов не понятных мне -> не ответили.
Потом выслал какой-то код, с пометками, меня послали, типа не то что мы бы хотели видеть.
Здравствуйте, -n1l-, Вы писали:
N>Сначала я выслал список вопросов не понятных мне -> не ответили. N>Потом выслал какой-то код, с пометками, меня послали, типа не то что мы бы хотели видеть.
Здравствуйте, -n1l-, Вы писали:
N>Здравствуйте, Sinix, Вы писали: S>>в. Не отвечают на прямые вопросы отмазками "ну ок, продолжай угадывать дальше" N>Они просто послали меня. N>Сначала я выслал список вопросов не понятных мне -> не ответили. N>Потом выслал какой-то код, с пометками, меня послали, типа не то что мы бы хотели видеть.
это ещё што! попадаются такие, что дают целый проект под видом тестового задания)))
и поступай, как хочешь!
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, Igorxz, Вы писали:
I>>это ещё што! попадаются такие, что дают целый проект под видом тестового задания))) I>>и поступай, как хочешь!
N>Это была обычная практика в нескольких компаниях, где мне приходилось работать. Задания формулировались достаточно определённо и были весьма объёмными (требовали создания завершённой полноценной функциональной программы, имеющей практическую пользу, включающей и UI и нетривиальную логику). В одном случае мне пришлось потратить две недели на выполнение тестового задания (мне их потом оплатили, когда приняли на работу). Во всех случаях компании предлагали очень конкурентоспособные условия работы и зарплату, и предъявляли очень высокие требования к способностям работников (и по знаниям, и по мыслительным способностям, и по умению фокусироваться на работе, самомотивации, и способности в приемлемые сроки доводить дело до конца без присмотра со стороны начальства).
N>Хотя я слышал и про компании-лохотроны, которые использовали подобную практику как источник бесплатной рабочей силы.
дьявол, как говориться, в деталях)) я видел тестовое задание, которое предполагает создание компонента (в области текстовой аналитики), который стоит разработать скажем несколько месяцев. это если ещё знать что делать. я сомневаюсь, что вот эти самые работодатели, не понимают этого.
таким образом они хотят чего?, — что бы к ним попросились батрачить со своим пудом золота ?!)))
Re[5]: Непонятное тестовое задание
От:
Аноним
Дата:
18.06.14 06:45
Оценка:
Здравствуйте, Sinix, Вы писали:
S>Начнём с того, что сценарий использования класса, очевидно, предполагает два этапа: S>1. создание + настройку. S>2. собственно использование.
S>Первая задача обычно реализуется через конструктор, factory-методы, или на худой конец, Start(options) + Stop() + IsRunning, как в Stopwatch/Thread/Process etc. У автора ТЗ этого состояния явно нет, только изменяемое свойство MinimumInterval. Которое само по себе порождает кучу интересных вопросов:
Там есть ключевое слово — BaudRate. Код писал железнячник, методом, которому он научился еще в школьном радиокружке. Что такое фабрика — ему неизвестно.