Pull to refresh

Comments 35

вот бы всех компаниях так тестировали…
реализация несложных алгоритмов дает точно такое же представление о квалификации как и тесты с вариантами, т.е. никакое. хотя задачку решать явно веселей, чем вспоминать глубины апи в том же ббенче.
Истинно так. Такие тесты имеют смысл только как средство первичного отбора — когда физически нет возможность пригласить на интервью сотни людей, приславших резюме. Ибо неэффективно тратить своре время на разговор с человеком, который после прочтения «Java за 24 часа» присылает резюме на Senior Java Developer. Для чего-то большего такие тесты бессмысленны.
прочитавших java за 24 часа отсеивают на телефонном получасовом интервью. Без всяких тестов
Эмм… А там всем выдает результат, что вы «better than 99% of all test takers»?
Это вы по результатам теста или после просмотра правой колонки на сайте говорите? Мой опыт прохождения этого теста позволяет утверждать, что есть еще, как минимум, одна оценка — 86%. :)
Вы контроль исходных данных в своем решении производили? Если да, то мы сразу же можем вычислить его максимальную стоимость.

PS Жаль, что полный список тестов решений просмотреть не дают. Или хотя бы детализацию по пройден/завален для каждого решения.
Вы контроль исходных данных в своем решении производили?
Вы имеете в виду валидацию параметров переданных в функции, которые было нужно дописать?
Да, именно их. В порядке эксперимента я решил не валидировать входящие параметры. Да и вообще не прогонял тест локально, только проверял на наличие синтаксических ошибок.
Да, я также не валидировал входные данные. Не очень понимаю, зачем это делать в автоматическом тесте.

А вот тестирование на простых данных я делал — нужно же убедиться, что мой код работает корректно.
UFO landed and left these words here
Если сайт учитывает незаконченные тесты наравне с законченными, то грош ему цена. Я думаю это достаточно очевидно, чтобы сами разработчики сайта об этом догадались :)
Я никогда не понимал работодателей, которые дают решать задачки «уровня районной олимпиады». Дайте им практическое задание! Пусть напишут кусок кода, над которым вы работаете или работали. Или пусть его оптимизируют. Оцените насколько эффективно решение, насколько читаем код
Всегда недоумевал. Несколько раз сотрудничество так и не началось, только по этой причине.
Я не пишу на JAVA, но стало интересно, а выполнение кода тестируемых на сервере безопасно?
Еслибы такой был бы для PHP то теста давно бы не существовало, нашлись бы вандалы.
Как с JAVA дела бстоят?
Вполне возможно, что для выполнения попросту выделен отдельный компьютер, на котором попросту нечего вандалить. Или виртуальная машина. Коду даётся, скажем, 10 секунд на исполнение, а потом назад копируются результаты (если есть такие).
> Еслибы такой был бы для PHP то теста давно бы не существовало, нашлись бы вандалы.
Ерунда, просто блокируется всё то, что не нужно для решения алгоритмических задач: лишние библиотеки, ввод/вывод куда-либо помимо стандартного.

Существует немало систем автоматической проверки с PHP/Perl/Bash в качестве допустимых языков, например:
acm.mipt.ru/
www.spoj.pl/
Во-первых в Java есть такая замечательная вещь как SecurityManager, который позволяет контролировать доступ к тем или иным частям API JVM.

Во-вторых, скорее всего весь код выполняется в изолированном виртуальном контейнере и не может вторгнуться в родительскую ОС.
Это естественно, что задачи более адекватны, нежели тесты с вариантами.
UFO landed and left these words here
Вы действительно уверены что такой способ приемлим для компаний разрабатывающих продукты на java? )
UFO landed and left these words here
Помоему при таком способе тестирования у людей с опытом в ACM большое преимущество)
Причем не просто большое, а колоссальное — в ACM совершенно другой подход к программированию. Но, увы, если цель стоит проверить способность писать обычный, а не ACM-код, то такой способ тестирования даст заведомо некорректный результат.
Да, несомненно. Я в общем и сам ACM занимаюсь)
Это скорее не способ тестирования а способ отсева челок, которых будут тестировать более подробно.
АААА!!!
Решил пройти тест, написал три задачи, решение для четвертой (подсчет количества уникальных комбинаций монет) написал в виде супер метода:
return new Random.nextInt(cents/2);
и получил результат в 96%
Буду рад если кто расскажет об алгоритме для расчета уникальных комбинаций, или хотя бы даст набор ключевых слов для гугла
Динамическое программирование.
dp[k] — количество способов представить k в виде суммы монет уже учтённого номинала.

public static int countWaysToProduceGivenAmountOfMoney(int cents) {
    int[] dp = new int[cents + 1];
    dp[0] = 1;
    for (int x : new int[] {1, 5, 10, 25, 50})
        for (int i = 0; i + x <= cents; ++i)
            dp[i + x] += dp[i];
    return dp[cents];
}
Не совсем согласен с утверждением про тесты. Возможно в Ббенче много вопросов на API, но к примеру в Sun Certified Java Programmer (SCJP) не более 20 % на знание API. Весьма много вопросов на concurrency, на знание ООП и занание коллекций, а это базовый уровень знаний. Я не согласен, что человек может правильно подобрать класс в collections по документации. Т.к. программист, который не очень хорошо знает это, будет использовать то, что ему знакомо, и врят ли будет вдаваться в подробности других классов. Ну а про понимание потоков я вообще молчу.
P.S. сертифицированлся и в brainbench и в sun'е.
Берем N несложных задач с какого-нибуть problemset архива вроде acm.sgu.ru и просим кандидата решить. Знаю живые примеры такой политики. В чем уникальность метода?
Only those users with full accounts are able to leave comments. Log in, please.