3854

Объяснил на пальцах

Однажды мы проводили собеседование с программистом C#. Наш рекрутер попросил кандидата объяснить принцип объектно-ориентированного программирования простым и понятным языком. Кандидат рассказывает, доходит до принципа полиморфизма и приводит пример: «Вот у меня есть ручка. Я могу ей написать свое имя, а могу воткнуть ее вам в глаз. Это и есть принцип полиморфизма».


P.S. Собеседование кандидат прошел успешно.

Дубликаты не найдены

+47
Джокер работу нашел.
Иллюстрация к комментарию
+197
Весьма странное объяснение полиморфизмп. Я представил некую сущность в виде ручки, с 2мя методами - написать и воткнуть. Более корректноо имхо было бы сказать что я могу сделать это ручкой, а могу карандашом, так ккк они оба унаследованы от некой общей сущности.
раскрыть ветку 55
+47
Скорее 1 метод - "использовать" и две реализации, хотя я бы скорее Стратегию заюзал: пока догонишь того в кого воткнуть, пока воткнешь - куча лишних зависимостей для обычного письма.
раскрыть ветку 47
+36

Две абстрактные сущности, одна - оружие, другая - пишущая пренадлежность. И ручка, унаследованная от обеих сущностей.

раскрыть ветку 44
0

если есть 2 разных типа и у них есть метод воткнуть, но втыкают их по разному - это специальный полиморфизм, а если втыкают одинаково, но разные типы объектов - это параметрический полиморфизм

раскрыть ветку 1
+10

Поэтому, я и не особо люблю собеседования - каждый третий понимает ООП по-своему.

раскрыть ветку 1
0
Не, тут скорее особенности реализации )
+3
Комментарий удален. Причина: данный аккаунт был удалён
раскрыть ветку 1
+3

По-моему, он угрожал.

И, по-моему, угроза подействовала.

+2
Иллюстрация к комментарию
+1

Не... полиморфизм это скорее как "вот ручка, она может писать и чернилами и кровью".

+1

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

+88

Странно, что с таким ответом он прошел собеседование.

Не в плане адекватности примера, а то что он не описал полиморфизм совсем.

На примере ручки... Выделить действие - "писать". Берём набор любых предметов, обладающих данным свойством и совершаем с ними действие, предписанное "контрактом".

Карандаш, мелок, маркер - с любым из этих объектов мы можем гарантированно производить действие "писать" не задумываясь о том, какой из этих объектов мы держим в руке.

раскрыть ветку 4
+100
Будешь умничать и тебе ручка в глаз прилетит.
раскрыть ветку 1
+3
Так он и прошел собеседование.
+22
Просто, когда ему задали этот вопрос он сказал, что воткнет им ручку в глаз. Больше его ни о чем не спрашивали.
-3
Но ведь никто не говорил о динамическом полиморфизме
+32
Странно. Более корректный пример - ручка которая может писать синим, а может красным цветом, например. Один интерфейс - множество реализаций, епта. Или я не прав?
раскрыть ветку 15
+11
Неа, тут наследование от абстрактной ручки с бесцветными чернилами.
раскрыть ветку 13
+10
Эм ну да. Есть абстрактная ручка с методом "писать". Наследуясь от нее получаем красную ручку в которой тот же самый метод "писать" реализован с помощью красных чернил. Полиморфизм? Полиморфизм.
раскрыть ветку 12
+3
Цвет просто свойство, а не метод.
+26

походу он бывший сишник


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

раскрыть ветку 7
-1
В шарпе нет множественного наследования классов.😊
раскрыть ветку 6
+11
походу он бывший сишник
раскрыть ветку 3
+2
он бывший сишник
0
Через интерфейсы можно реализовать.
+18
Нам преподователь в универе объяснял на таком примере: рыбка плавает, птичка летает, человек ходит, червяк ползает. Все вместе это разная реализация перемещения! По моему очень хороший пример и помогает понять суть)
раскрыть ветку 2
+7
Вот верный пример ! "Один интерфейс - множество реализаций".
+3
Спасибо, отличный пример, возьму на вооружение.
+13

бессмысленное объяснение, вы взяли на работу какогото идиота не понимающего полиморфизм:)))

раскрыть ветку 2
+11
Но он же мог ручку воткнуть в глаз, что еще оставалось делать?
раскрыть ветку 1
0
Надо было соглашаться на другой вариант)
+6

Вот уже и рассылки с хэдхантера расходятся на посты =)

+15

Рекрутер спрашивает про ООП. Что-то тут не так.

раскрыть ветку 10
+1

Был на собеседовании всего раз, потому интересуюсь: что не так? Вопрос слишком легкий, или рекрутеры в принципе редко спрашивают по существу специальности?

раскрыть ветку 1
0

Задача рекрутера -- найти кандидата и отфильтровать неадекватов. То что рекрутер присутствует на техническом собеседовании -- ну ок, но тогда он скорее тут для поддержки или чтобы ответить на нетехнические вопросы кандидата. Но то что рекрутер задаёт технические вопросы -- это уже как-то странно. Он сможет адекватно оценить ответ кандидата? Если нет, то почему он задаёт такие вопросы? вот это мне и кажется странным.

+1

На самом деле действительно рекрутеры спрашивают. Эдакий тест на адекватность. Причем спрашивают на предварительной беседе по телефону, еще до того, как тебя зовут в офис на собеседование.

раскрыть ветку 6
+5

а, ну тогда понятно как он прошел - рекрутер сам не знал правильного ответа))

раскрыть ветку 3
+1

Т.е. рекрутера научили какой будет "правильный" ответ на такой вопрос? Но вопрос-то открытый (не просто да/нет) и довольно большой, на него можно сотню правильных ответов придумать.

раскрыть ветку 1
-4

может ректор в этом профиле специалист?)

+6

Помню пытался своей объяснить ООП простыми словами, получилось только на таком шовинистском примере: "вот смотри", говорю, "я тебя попрошу - приготовь мне пожрать, и ты мне что-то как-то приготовишь, я попрошу твою маму приготовить мне что-нибудь, и она приготовит, сказал я одно и то же, а приготовите вы мне что-то разное - это полиморфизм. А почему я могу вас об этом попросить? Потому что вы женщины, и ты, и твоя маман, вот это наследование. А вот как и из чего вы мне будете готовить - мне вообще по барабану. Вот это уже что? Правильно. Инкапсуляция!"

+2

Совершенно неверное объяснение полиморфизма. Если он еще и разрабатывать будет так, я вам не завидую. Хотя бы потому что не знает solid.

+1
Из рассылки Хед Хантера за 20 июля:

"Объяснил на пальцах


Алла Серегина, директор по маркетингу и развитию Penny Lane Personnel: «Однажды мы проводили собеседование с программистом C#. Наш рекрутер попросил кандидата объяснить принцип объектно-ориентированного программирования простым и понятным языком. Кандидат рассказывает, доходит до принципа полиморфизма и приводит пример: «Вот у меня есть ручка. Я могу ей написать свое имя, а могу воткнуть ее вам в глаз. Это и есть принцип полиморфизма».


Собеседование кандидат прошел успешно.

"
+1
Сиреневый Выколиглаз нашел работу?
раскрыть ветку 2
+1

Пурпурный же

раскрыть ветку 1
0

Блин, точно... Надеюсь он меня не найдет.

+1

Но ведь полиморфизм - это совершенно другое.

+1

Такой разновидности полиморфизма, как перегрузка функций, он вообще не коснулся (грубо говоря, есть формовочный пресс для теста, на который можно установить насадку с фигурами в виде зверюшек, звездочек или кружков, при этом пресс остается одним и тем же).

+1

У человека есть метод писать(IЧемПисать чем).


Вот ручка и есть конкретная имплементация интерфейса IЧемПисать. Кроме ручки можно писать кровью, мелками, карандашом, пальцем в воздухе и т.д.


Плюс у самой ручки есть конструктор или сеттер с параметром IСтержень. И пофигу какой стержень туда придёт -- хоть это будет один класс с параметром цвет или семейство классов, но для ручки это похеру и она будет писать.


Конечно кроме случая NullСтержня, когда он есть, но ничего не делает и нужен как заглушка.

раскрыть ветку 2
0

Ну тогда почему пишет ручка, а не стержень, следуя такой логике? У человека скорее есть метод "Использовать предмет", а ручка наследуется от предмета. Представь себе инвентарь в любой игре, и например там есть ручка, думаешь у персонажа есть метод Писать? Он заходит в инвентарь и использует ручку или что-то еще, а в зависимости от реализации конкретный объект что-то делает.

раскрыть ветку 1
0

> Ну тогда почему пишет ручка, а не стержень, следуя такой логике?


Тогда ходит не человек, а его ноги? ))


"Использовать предмет" -- это через чур абстрактно. Хотя для поклонников "Hello World Enterprise Edition" это самое оно ))


https://gist.github.com/lolzballs/2152bc0f31ee0286b722

Иллюстрация к комментарию
0
А я Никита, знаю куда ещё можно вставить ручку
Иллюстрация к комментарию
0
Стратегия какая-то
0

Мне больше нравится вариант с животными :)

Есть животинка и метод подать голос.

А дальше два наследника: котэ и пес со своими "мяу" и "гав"

0
Репост с Хедхантера недельной, а то и больше, давности. Не стыдно, товарищ? И без указания на источник, ай-ай-ай!
раскрыть ветку 1
0
Не все там сидят
0

Цитата из забавной статьи на hh, остальная часть и коменты доставляют не меньше


https://hh.ru/article/301519

0
Увидел C# ,подумал про музыкантов история
0
Странный язык коммуникаций у вас господа!
0

теперь я знаю что такое полиформизм.

раскрыть ветку 2
+2
это когда можешь воткнуть
раскрыть ветку 1
0
Входит, и выходит (с) Ослик Иа
-1

Эта байка стара как мир. Её ещё в газете "статский физкультурник печатали". А если серьёзно, то я её уже не раз слышал, и один раз даже от рекрутёра, и внимание - там он НЕ ПРОШЁЛ. так как они стали опасаться за своё здоровье. Рекрутинговая компания называлась Star Staff

-2

Как быстро эта котолампа по интернетам разлетелась...

-2

в java тоже

-5

Этим кандидатом был Альберт Эйнштейн.

ещё комментарий
Похожие посты
Возможно, вас заинтересуют другие посты по тегам: