Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проверка знаний на составление выражений на языке C/C++
Форум на CrossPlatform.RU > Разработка > С\С++
ivan_ivchenko
Здравствуйте, форумчане!
Затрудняюсь с выбором раздела форума, где разместить свой вопрос, пусть будет здесь. Возникла необходимость придумать некое задание, которое бы проверяло уровень знаний тестируемого на предмет понимания и составления выражений на языке С/С++ с использованием массивов и, возможно, структур. Также нужно придумать варианты возможных подсказок, в случае, если у тестируемого возникнут проблемы. По сути то, что я хочу сделать должно быть автоматизированным тренажером на составление выражений с использованием массивов и, возможно, структур.
Если у кого-то есть мысли - буду рад услышать!
ViGOur
Не совсем понятно в чем заключается вопрос. Как автоматизировать или просто нужно помочь с заданиями?
ivan_ivchenko
Цитата(ViGOur @ 17.11.2011, 21:26) *
Не совсем понятно в чем заключается вопрос. Как автоматизировать или просто нужно помочь с заданиями?

Вопрос заключается именно в том, какую задачу необходимо поставить перед испытуемым. Например, что будет напечатано в консоле после завершения программы; чему равен такой-то элемент массива... но все это плохие задания!
Задание, наверное, должно быть именно на составление выражения (хотя не факт!). Также каким-то образом необходимо предусмотреть возможность выдачи подсказок. Например, можно подсказывать тип выделенной части выражения (подобно тому, как компилятор во время отладки подсказывает значение выделенного выражения).
RazrFalcon
Пусть испытуемый пишет программу(от начала и до конца) - вот и проверка знаний.
Алексей1153
ivan_ivchenko, думаю, вот неплохой материал для блиц-опроса http://www.forum.crossplatform.ru/index.php?showtopic=5748
ivan_ivchenko
Цитата(Алексей1153 @ 18.11.2011, 6:09) *
ivan_ivchenko, думаю, вот неплохой материал для блиц-опроса http://www.forum.crossplatform.ru/index.php?showtopic=5748


Понимаете, у тренажера должно быть одно задание. Сейчас требуется придумать "всего лишь" сценарий тренажера - какое задание ставить перед пользователем и каким образом подсказывать ему в случае затруднения с ответом. Если пользователь не справляется с 1го раза - выдавать подсказку. И так до тех пор, пока задание не будет решено правильно, либо через несколько попыток его можно считать невыполненным. Вопрос именно в составлении сценария тренажера.
Iron Bug
честно говоря, попытка представить такой "тренажёр" у меня вызвала полный ступор. лучший тренажёр - это компилятор :)
но всё-таки, в качестве параноидальной идеи могу подкинуть вот такое:
пользователю показывают кусок кода, он должен изобразить из себя компилятор и ввести правильный результат.
как я это себе представляю: например, элементы массива - некие пронумерованные ячейки, куда пользователь будет вводить какие-то значения. неправильно введённые значения могут как-то подсвечиваться.
так же можно изобразить память: только там будет переворот байтов.
можно также давать на выбор два фрагмента кода и просить выбрать правильный.
собственно, на этом моя фантазия иссякла :)
ivan_ivchenko
Цитата(Iron Bug @ 18.11.2011, 18:44) *
пользователю показывают кусок кода, он должен изобразить из себя компилятор и ввести правильный результат.
как я это себе представляю: например, элементы массива - некие пронмерованные ячейки, куда пользователь будет вводить какие-то значения. неправильно введённые значения могут как-то подсвечиваться.


Вот. Это уже очень неплохая идея! :) Здесь присутствует и анализ написанного кода, т.е. испытуемый должен понимать, что творится в коде и подсказки (подсветка некорректных элементов) и итеративность при работе с заданием - как раз то, что отличает тренажер от обычного тестового вопроса.

Цитата(Iron Bug @ 18.11.2011, 18:44) *
можно также давать на выбор два фрагмента кода и просить выбрать правильный.

А здесь итеративность процесса (и возможные подсказки) сложно представить, такого рода задание как раз больше похоже на обычный тестовый вопрос "знаю/не знаю".
Iron Bug
в принципе, можно доработать идею: выглядеть может как панель, на которой есть кнопки + и - для добавления и убирания полей. поля, соответственно, появляются и в них можно прописывать значения, либо сбрасывать их в "неопределённое значение" (можно пустое).
далее, можно рассматривать длину массивов, например
a[]={1,2,3,};

пользователь должен будет ввести четыре квадратика, три из которых определены, а четвёртое не заполнено.
далее, можно сделать какой-нибудь memset или memcpy и заполнить массив наполовину. пользователь должен отразить изменение в коде.
начальное значение массива тоже может быть отражено в виде аналогичного графического представления.

но я не знаю, поможет ли это пользователю в освоении С++ :) разве что на совсем уж ранних этапах изучения, на уровне школьного курса.
BRE
[offtop]
Вопрос далекий от темы.
Здесь топикстартер зарегистрировался как ivan_ivchenko, а на прогорге как Олег. Просто интересно почему ники так разнятся. ;)
[/offtop]
Алексей1153
BRE, ну тебе жалко что ли ? )) Я тоже то Алексей, то Жорик :D
ivan_ivchenko
Цитата(BRE @ 18.11.2011, 19:28) *
[offtop]
Вопрос далекий от темы.
Здесь топикстартер зарегистрировался как ivan_ivchenko, а на прогорге как Олег. Просто интересно почему ники так разнятся.
[/offtop]


Так вышло, это неинтересная история :)
Влад
Цитата(Iron Bug @ 18.11.2011, 19:44) *
пользователю показывают кусок кода, он должен изобразить из себя компилятор и ввести правильный результат.

Должен сказать, что эта идея мне представляется сомнительной.

Самые дурацкие задачи типа "вот кусок говнокода, что будет напечатано в консоли?" попадались мне именно в тестах типа брейнбенча. Это при том, что за подобные перлы в промышленном коде надо программиста гнать с работы ссаными тряпками и безжалостно! А ведь пользователь (испытуемый) может такой код и принять всерьез - дескать, "круто" так писать - совсем как "настоящие" программисты!

А настоящие программисты (без кавычек) пишут простой, ясный и понятный код.
Iron Bug
Цитата(Влад @ 22.11.2011, 12:48) *
Должен сказать, что эта идея мне представляется сомнительной.


Идея теста знаний С++ - вообще изначально сомнительна.
Лучший тест - это тестовое задание. А все попытки формализовать проверку навыков программирования неизменно завершаются получением неадекватных результатов. Я в своё время чуть не подралась с преподом-формалистом в универе из-за того, что он заявил, что "текстовые файлы принципиально отличаются от бинарных". Я сказала, что это метод их интерпретации отличается, а не "файлы". Он не терпел несогласных и влепил мне трояк по "С". Сейчас я профессиональный системный программист, без малейших проблем в профессиональной сфере. А препод так и остался преподом :)
wiz29
Базовые знания конечно можно проверить тестом, но на серьезную должность кр как испытательным сроком проверить сложно. Все предложения сделать тестовое задание это тоже формально неадекватное решение. У меня, например, физически может не быть времени его выполнить (бывает и такое). Поэтому, на мой взгляд, личная беседа и испытательный срок лучшее решение.
Iron Bug
Цитата(wiz29 @ 25.11.2011, 14:55) *
У меня, например, физически может не быть времени его выполнить (бывает и такое). Поэтому, на мой взгляд, личная беседа и испытательный срок лучшее решение.

если человек не может найти времени на решение тестового задания - значит, ему не нужна эта вакансия. вот и всё. отмазы типа "не успел" - для студентов. серьёзный разработчик должен уметь планировать своё время.
и да, испытательный срок никто не отменяет. сначала - тестовое задание, потом - беседа, потом - испытательный срок.
wiz29
для студента можно конечно дать тестовое задание, но если у человека солидный опыт работы, он даже рассматривать задание рассчитанное на неделю не станет... я бы не стал. (но это мое мнение) В беседе достаточно быстро можно узнать сильные и слабые стороны претендента. а задание это профанация.
Iron Bug
Цитата(wiz29 @ 25.11.2011, 15:23) *
В беседе достаточно быстро можно узнать сильные и слабые стороны претендента. а задание это профанация

всё как раз наоборот. по коду можно понять, что человек знает. а в болтовне вообще мало смысла.
те компании, которые требовательны к качеству разработки, дают претендентам тестовые задания. а собеседования - это для манагеров: там языком трепать надо уметь и больше ничего. а программист должен уметь писать код. и если ему лень потратить неделю - значит, это ленивый или тупой программист и его брать не нужно. такие варианты сами отпадают, чтобы не тратить на них время для собеседований :)
wiz29
Цитата(Iron Bug @ 25.11.2011, 14:28) *
значит, это ленивый или тупой программист и его брать не нужно.

Абсолютно не согласен с этим, надо ценить не только свое время но и время человека который будет это делать. Для студентов это вызов, для хороших специалистов уже повод задуматься а надо ли ему такое. Ваше резюме и рекомендации должны говорить о вас, а не решение какой то задачи в течение недели, которую за вас кто угодно может сделать. Можно попросить примеры кода человека, если хочется посмотреть на его стиль, хотя это тоже бред, для норм специалиста не проблемой должно быть писать в любом стиле, и тестовой задачей вы эти вопросы не снимите. Что то базовое проверить или подтвердить какой то опыт можно и при беседе, если технический спец. не участвует в собеседовании то это весьма странный подход, вы не находите?
Iron Bug
не нахожу.
трата времени на трёп до того, как кандидат вообще хоть что-то предъявил в качестве результата - занятие глупое и бесполезное.
и я ещё раз повторяю: тестовое задание - это только начало проверки. резюме, беседа, тестовый срок - это всё после тестового задания. просто тестовое задание с порога отсеивает ленивцев и халявщиков, без всяких хлопот.
Влад
Цитата(Iron Bug @ 25.11.2011, 14:28) *
а программист должен уметь писать код. и если ему лень потратить неделю - значит, это ленивый или тупой программист и его брать не нужно. такие варианты сами отпадают, чтобы не тратить на них время для собеседований :)

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


wiz29
Цитата(Влад @ 25.11.2011, 15:39) *
Цитата(Iron Bug @ 25.11.2011, 14:28) *
а программист должен уметь писать код. и если ему лень потратить неделю - значит, это ленивый или тупой программист и его брать не нужно. такие варианты сами отпадают, чтобы не тратить на них время для собеседований :)

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

Поддерживаю

Цитата(Iron Bug @ 25.11.2011, 15:37) *
отсеивает ленивцев и халявщиков, без всяких хлопот.

Время - деньги. Вы лишаетесь беседы с нормальными кандидатами 100%, подход неверный в корне. Ни один нормальный специалист не придет к вам, если тока зарплата будет поднебесной, но это вызовет другие сомнения.

Пока аргументов кроме возможности увидеть код вы не привели, все остальное слова...

я сам задавался подобным вопросом и не раз, присовокупив опыт поисков работы и людей делаю вывод о том что следующая схема выглядит более или менее жизнеспособной:
1. оценка резюме
2. разговор с возможным кандидатом
3. возможно не большое тестовое задание в случае каких либо сомнений
4. испытательный срок

опыт человека и какие то достижения, считаю определяющим для возможности разговора. Если конечно вакансия не младший программист, тогда п.1. не имеет серьезного значения.
Iron Bug
Цитата(Влад @ 25.11.2011, 17:39) *
если на тестовое задание надо потратить неделю - и задание, и фирма моментально отправляются в Корзину. Такие варианты сами отпадают, чтобы не тратить на них время для собеседований.

практика показывает, что уважающие себя фирмы не беспокоятся о таких программистах. у меня большой опыт программирования и я знаю много действительно серьёзных фирм. и везде у них - тестовые задания. это фирмы, пишущие системный софт, это фирмы, пишущие игры для заграничных клиентов, это фирмы, занимающиеся банковскими технологиями.
а говнокодеров набирают на собеседованиях :)
wiz29
ну если для вас Intel "говнокодерская" кантора, тогда я пас... или например microsoft...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.