Экзамены по ООП. День второй

Jun 13, 2009 18:43


Собственно, в первый день я понял, что любить людям мозг по полтора часа -- это себе дороже. Их много, а я один ;) На второй день у мня уже была другая стратегия. Перед общением ознакомиться с оценками студента за два последних семестра. Меньше вопросов про Java, больше про С++ (хотя вопросы были тоже простые). По С++ я в основном действовал так: берем какой-нибудь принцип ООП и допрашиваем о том, как этот принцип поддерживается в С++ да и в Java. Как ни странно, но на этом пути тоже были проблемы.

Например, одного студента спросил о поддержке модульности в обоих языках. Почему-то чел думал, что в пространствах имён С++ можно объявлять только переменные O_o. Немного походив вокруг да около, мы всё-таки выяснили, что всё с пространствами имён хорошо, и это и есть языковое средство поддержки модульности в С++. Выяснял, чего люди знают про инкапсуляцию, а также про спецификаторы доступа (public/private/protected//friend) в С++/Java. Как выяснилось, установить аналогию между пакетной видимостью в Java и friend в С++ непросто.

Достаточно долго беседовали на тему влияния virtual на то, какие функции/деструкторы будут вызываться, как влияет тип указателя при отсутствии virtual и прочее.

Ещё я выяснил, что люди категорически не понимают, что такое InterruptedException в Java. Откуда он вылетает, как со всем этим связан метод Thread.interrupt(). Один чел мне залечил, что InterruptedException вылетает после вызова interrupt(). Хорошо, говорю, откуда он вылетает? Выяснилось, что оказывается, вылетает он чуть ли не из ниоткуда :) Начинаем рассуждать. Говорю, что мол а что в стеке вызовов-то будет? :) Начинается тупняк :) Предлагаю подсказку, что мол InterruptedException не является RuntimeException'ом. не помогает.

Ещё один прикол, это то, как люди понимают слово deprecated. Выходит так, что это такие заминированные методы, которые если вызовешь -- усё, божья кара наступит незамедлительно. Полная и немедленная катастрофа. Те, кто с моей помощью приходили к умозаключению, что interrupt() не обязательно чего-то останавливает никак не соглашались принять следующую логику:
  • Метод Thread.stop() объявлен deprecated т.к. он насильственно освобождает мониторы объектов, что может привести к порче данных.
  • Если мы вызываем метод Thread.interrupt(), но он не срабатывает за какое-то время, то поток, который мы хотим остановить ведёт себя некорректно, а значит тоже может испортить данные
  • Следовательно можно вызвать Thread.stop(), по крайней мере мы сможем добиться того, чего хотели -- остановить поток
Как я ни пытался убедить людей, что такая логика имеет право на существование, они никак не хотели согласиться на возможность вызова deprecated-метода. Наверное, они думали, что я их пытаюсь как-то перехитрить и ввожу в заблуждение. Какие недоверчивые.

Но в целом люди всё-таки чего-то отвечали. Один чувачок настолько много ботанил, что, похоже, у него из ушей уже всё это полезло, и он мне давал одни определения вместо других, но зато оч-ч-чень быстро. Я даже ещё вопрос не успевал до конца задать...

Второй день прошел гораздо менее напряжно. Несмотря на то, что мне удалось пообщаться опять-таки с тремя студентами, во второй день осталось время на шутки с другими преподавателями :) Итог такой: 5, 5, 4. Последняя четвёрка как раз тому чувачку, который много ботанил. Но он не в обиде, т.к. косячил он много и думал, что я ему вообще 3 поставлю. Но у него было две четвёрки за семестры, так что решил не злобствовать, тем более, что он старался.

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

P.S. Я бы порекомендовал студентам ФИТ в первом семестре в свободное время почитывать книжку по Java (пока идёт материал про С++), а во втором -- книжку про С++. Это как минимум не даст им забыть чему научились в первом семестре. Хотя надежды на то, что кто-то последует такому совету не много

моя борьба

Previous post Next post
Up