На работе время от времени провожу собеседования. Помимо вопросов "как дошли до жизни такой" и что собеседуемый знает о всяких там мьютексах-тредах, задаю разные логические задачки. Вообще цель этих задач вовсе не в том, чтобы проверить, как человек умеет их решать. Потому как собеседование - это состояние стресса и цейтнота, и если задача оказывается решена - это означает, что потенциальный работник может и в таких условиях работать (что, конечно, тоже хорошо). Но мне важнее посмотреть, как именно он будет решать задачи. Будет ли задавать уточняющие вопросы, или начнет генерировать версии, или уйдет в себя и - и поди угадай что у него под крышкой варится (это самый распространенный вариант).
Задачи же эти, как правило, имеют не одно и даже не два решения. Нельзя сказать, что решения эти абсолютно верные. Чаще всего основываются они на ряде допусков, которые не были оглашены (или специально опущены, чтобы сделать возможным множество решений). Для примера возьмем задачу
"Встреча".
В моем изложении условие звучит примерно так:
"На дорогу, идущую строго с севера на юг по совершенно плоской местности, на неизвестном расстоянии друг от друга высаживаются два шпиона. Каждому из них выдают компас и одинаковые инструкции. Прежде чем начать шпионить, им нужно встретиться. Что написано в инструкции, чтобы они встретились?"
Прежде чем задать задачу на собеседовании, ее обязательно "тестируют" - т.е. просят решить кого-нибудь из сотрудников. И вот какие решения выдал испытуемый на тестировании этой задачи. Привожу в порядке, обратном их появлению:
4) Находим по компасу север, кладем компас на левую сторону дороги и идем на север. Как только встретили компас, начинаем бежать до тех пор, пока не догоним другого шпиона.
Как мне кажется - это самое корректное решение, особенно если уточнить, а бесконечна ли дорога и если нет, то дойдя до конца, ждать там напарника.
3) Находим по компасу север, кладем компас на левую сторону дороги и начинаем ходить "челноком" - на север 1 км, на юг 2 км, на север 3км, ну и т.д. до тех пор, пока не встретим "чужой" компас. Там останавливаемся и ждем. Возможно, что друг друга найдут раньше, чем компас :)
2) Если считать, что действо происходит на плоскости, то шпионы (как товарищи тренированные) попросту увидят друг друга.
И, наконец, первый озвученный вариант, который мне понравился больше всего.
1) Если по компасу можно определить, где север и юг, значит есть магнитные полюса. Надо просто идти на север и на магнитном полюсе они обязательно встретятся :)