что делать с ошибочным тестом навыков С ++ - PullRequest
4 голосов
/ 16 апреля 2010

В следующем посте gcc.gnu.org Натан Майерс говорит, что тест на знание C ++ в SANS Consulting Services содержал три ошибки в девяти вопросах:

Посмотрев вокруг, я наткнулся на один из первых онлайн-тестов навыков С ++: http://www.geekinterview.com/question_details/13090

Я посмотрел на вопрос 1 ...

find(int x,int y)
{ return ((x<y)?0:(x-y)):}

call find (a, find (a, b)) используется для поиска (а) максимум а, б (б) минимум а, б (в) положительная разница а, б (г) сумма а, б

... сразу задаешься вопросом, зачем кому-то писать такие тупые слова? Избавившись от абсурда, мне не очень понравился ни один из ответов, сразу же исключив (a) и (b), потому что вы можете вернуть ноль (что не является ни a, ни b) в различных обстоятельствах. Сумма или разница кажутся более вероятными, за исключением того, что вы также можете получить ноль независимо от величин a и b. Итак ... Я включил Matlab (код ниже) и обнаружил: когда a или b отрицательны, вы получаете ноль; когда б> а вы получаете; в противном случае вы получите b, поэтому ответ будет (b) min (a, b), если a и b положительны, хотя, строго говоря, ответ не должен быть ни одним из вышеперечисленных, поскольку для каждой переменной нет ограничений по диапазону. Это заставляет тестируемых сталкиваться с дилеммой - выбрать наилучший из доступных ответов и ошибиться в 3 из 4 квадрантов, или не отвечать, оставляя дверь открытой для вывода, что грейдер считает, что вы не можете его выяснить.

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

function z = findfunc(x,y)
   for i=1:length(x)
      if x(i) < y(i)
          z(i) = 0;
      else
          z(i) = x(i) - y(i);
      end
   end
end

function [b,d1,z] = plotstuff()
   k = 50;
   a = [-k:1:k];
   b = (2*k+1) * rand(length(a),1) - k;
   d1 = findfunc(a,b);
   z = findfunc(a,d1);
   plot( a, b, 'r.', a, d1, 'g-', a, z, 'b-');
end

Ответы [ 3 ]

3 голосов
/ 16 апреля 2010

Почему вы тратите время на тесты, такие как онлайн, на который вы ссылались? Это так плохо, что слов недостаточно, чтобы описать ужас.

В этом случае вы должны промыть глаза с мылом, напиться и надеяться, что утром ничего не вспомните ...

2 голосов
/ 16 апреля 2010

У меня была такая же проблема на тесте несколько лет назад.

Варианты: A, B, C или D.

Я написал вариант Е со своим ответом, а затем четко объяснил, почему остальные четыре были не правы.

Тест был пройден дистанционно, и в тот же день ему позвонили на собеседование.

... вы можете принять это за то, что оно стоит.

0 голосов
/ 16 апреля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...