Натаскать к экзамену

[info]knutov затронул, на мой взгляд, крайне интересную тему. На хабре рассказывают о том, как правильно отвечать на вопросы, которые могут задать программисту при устройстве на работу. Грубо говоря, “что надо вызубрить, чтобы обмануть будущего работодателя”. У меня неподалеку лежит книга “Deep C Secrets: Expert C Programming” за авторством Peter van der Linden’а, вышедшая в далеком уже 1994 году. В ней одно из приложений посвящено тем вопросам, которые задают на собеседованиях в “лучших фирмах” Silicon Valley. Тогда это было неким откровением, сегодня – те же вопросы задают в любой говноконторке, возомнившей себя “лучшей в мире” – благодаря руководствам типа Joel’овского.

Так вот, вспомнилась мне одна история. Как известно многим, и в чем я не раз признавался, я закончил маткласс 57-й школы г. Москвы. Как пишут на сайте школы, прием в математические классы сопровождается некими вступительными “собеседованиями”. На этих собеседованиях предлагается решать задачи типа таких (взято из одного сборника, эти задачи предлагались в 2001 году – “свои” листочки я не нашел, видимо, далеко запрятал):

1. Отрезок [0, 1] разделили на 215 равных частей (от 0 до 1/215, от 1/215 до 2/215 и так далее). В каком отношении число 1/5 делит ту из них, в которую попадает (считая слева направо)?

2. На доске написано 100 чисел: одна единица и 99 нулей. За один шаг разрешается уравнять любые два числа, заменив каждое из них на их полусумму. Мы хотим, чтобы все числа стали равными. Докажите, что это невозможно.

3. Имеются слова: ДУМА, КАМА, КЕША, ДАША, КАША, ДАМА, КУМА. Сколькими способами можно выписать слова в столбик так, чтобы каждое следующее слово получалось из предыдущего заменой одной буквы (остальные остаются на своих местах)?

4. Из фанеры выпилен прямоугольный треугольник с катетами 4 и 5. Он лежит на дне неподвижного прямоугольного ящика 6 х 7. Можно ли его повернуть на 360 градусов, не отрывая от дна ящика?

5 (продолжение) Какова наименьшая возможная площадь прямоугольника, внутри которого можно повернуть этот треугольник?

Естественно, что список этих задач конечен и я в свое время был свидетелем гешефта, предпринятого одним из выпускников. Этот деятель брался натаскивать несчастных поступающих деток решению задач, да еще и имел доступ к готовящимся вариантам задач для собеседования. Уж не знаю, получилось или нет у него “обмануть систему”. В общем, так или иначе, вместо проверки, знает ли несчастный одаренный ребенок математику, эти “собеседования” мало-помалу стали превращаться в проверку того, знает ли он список типовых задач. Это как в том анекдоте про зеков, которые от скуки дошли до того, что перенумеровали все анекдоты и вместо того, чтобы рассказывать их, просто произносили номер.

Вот и с собеседованиями для программистов, на мой взгляд, произошла та же история. Методики интервью в Microsoft и других “высокотехнологичных” компаниях, где даже рядовому разработчику желательно знать, что такое красно-белое дерево (это тупой как дуб игрок “Спартака”), оказались достоянием общественности и стали применяться даже всякими говнофирмочками, изготавливающими сайты на PHP. Как на это “ответило” программистское сообщество? Да очень просто – вместо того, чтобы читать книжку Кормена, теперь достаточно ознакомиться с парой таких “ФАКов по прохождению интервью”.

В общем, как мне кажется, сегодня типовые вопросы про структуры данных могут годиться лишь для отсева редкостно ленивых кандидатов, не удосужившихся прочитать хотя бы такой FAQ. К “фундаментальному образованию”, о котором говорит [info]knutov, эти вопросы отношения уже не имеют.

PS Кстати, к вопросу о 57 школе. Уже давно собираюсь написать некую “рвущую шаблон” вещь о ней. Писать или не надо?

6 комментариев

  1. [info]knutov пишет:

    > типовые вопросы про структуры данных могут годиться

    Не могут. Вообще ни на что не могут. Ибо сейчас их знание, равно как и незнание, не говорит ни о пригодности, ни о непригодности для работы.

    • Про что я и говорю. Если раньше их знание свидельствовало о том, что человек изучал книжки Кнута или Кормена и даже (может быть) выполнял упражнения оттуда (а это хороший такой объем написанного кода), то теперь популярные вопросы по этим темам снабжены “готовыми ответами”.

      Ну и требования к “массовому” программисту сегодня совсем другие – с реализацией алгоритмов вообще можно ни разу не сталкиваться. Но вообще все зависит от отрасли – кое-где они все равно иногда нужны.

  2. golergka пишет:

    Пешы, любопытно

  3. [info]ak57 пишет:

    жги напалмом

  4. [info]soonts пишет:

    >красно-белое дерево
    А не красно-чорное?
    Кстати они говно.

    Кстати та статья на хабре тоже.
    Например вот это
    >сперва попытайтесь использовать, ну хотя бы подумать использовать, рекурсивный метод решения.
    Скорее всего я не возьму такого кандидата: в винде стек по умолчанию всего 1MB, и его переполнение нельзя нормально обработать.

    >Спроектируйте чат-сервер
    OMFG.
    А как пользователи авторизуются?
    А что вы будете делать когда пользователи перестанут влезать в RAM?
    А как установить пользователю display name?
    А зачем вы объявляли структуру status если она нигде не используется?
    Как вы будете делать поиск по display name? Можно ли быстрее чем O(n)?
    Как вы думаете нельзя ли было обойтись значительно меньшим числом строк собственного кода, за счёт использования каких-то стандартных компонент производства microsoft или хотя бы оп.сорсных?

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

      Ну а насчет статьи на хабре – там 99% говна, для тебя это новость?