В пятницу был в одной очень солидной фирме. Когда шел — меня предупреждали, что собеседование длится по несколько часов. Однако я умудрился его завалить за 10 минут . Как? Очень просто — нервы + забыл элементарную вещь.
Первый вопрос был написать класс и наследуемый от него. Сделал. Второй вопрос — про приведение типов. Ответил. Третий вопрос был фатальным. Угадайте, какой... написать для данного класса конструктор копирования. Ну забыл я, забыл!
Написал дрожащими руками вот такое:
A::A(A a)
{
...
}
Конечно же, виноват и все такое. Но разве так уж важно, что я не могу с ходу написать конструктор копирования? Ведь достаточно потратить 30 сек времени, чтобы узнать, как это записывается. Ведь умение-неумение записать ту или иную конструкцию на языке программирования еще не говорит о том, что я не умею программировать, не умею решать задачи. Потому что синтаксические правила языка узнаются за ничтожное время и, на мой взгляд, гораздо важнее посмотреть, как соискатель будет вести себя при решении каких-либо необычных задач, как у него работает именно мозг, а не память. Каково ваше мнение?
20.01.07 17:53: Перенесено модератором из 'C/C++' — Хитрик Денис
Здравствуйте, Hottabych1, Вы писали:
H>Конечно же, виноват и все такое. Но разве так уж важно, что я не могу с ходу написать конструктор копирования?
Может солидной фирме нужен был специалист по с++ и у нех небыло свободной джунировской позиции.
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Здравствуйте, Hottabych1, Вы писали:
H>В пятницу был в одной очень солидной фирме. Когда шел — меня предупреждали, что собеседование длится по несколько часов. Однако я умудрился его завалить за 10 минут . Как? Очень просто — нервы + забыл элементарную вещь. H>Первый вопрос был написать класс и наследуемый от него. Сделал. Второй вопрос — про приведение типов. Ответил. Третий вопрос был фатальным. Угадайте, какой... написать для данного класса конструктор копирования. Ну забыл я, забыл! H>Написал дрожащими руками вот такое:
H>
H>A::A(A a)
H>{
H>...
H>}
H>
H>Конечно же, виноват и все такое. Но разве так уж важно, что я не могу с ходу написать конструктор копирования? Ведь достаточно потратить 30 сек времени, чтобы узнать, как это записывается. Ведь умение-неумение записать ту или иную конструкцию на языке программирования еще не говорит о том, что я не умею программировать, не умею решать задачи. Потому что синтаксические правила языка узнаются за ничтожное время и, на мой взгляд, гораздо важнее посмотреть, как соискатель будет вести себя при решении каких-либо необычных задач, как у него работает именно мозг, а не память. Каково ваше мнение?
А по-моему, есть вещи, которые нельзя забывать никогда, как таблицу умножения... А еще есть вещи, говорящие о непонимании практически базовых концепций и принципов. И соискатель, может быть, прав в данной ситуации — ему нужно получить наиболее хорошо знающего работника.
Здравствуйте, Hottabych1, Вы писали:
H>В пятницу был в одной очень солидной фирме. Когда шел — меня предупреждали, что собеседование длится по несколько часов. Однако я умудрился его завалить за 10 минут . Как? Очень просто — нервы + забыл элементарную вещь.
H>
H>A::A(A a)
H>{
H>...
H>}
H>
Ты главное сильно не расстраивайся, со всеми бывает
Здравствуйте, 0xd34df00d, Вы писали:
0>Здравствуйте, Hottabych1, Вы писали:
H>>В пятницу был в одной очень солидной фирме. Когда шел — меня предупреждали, что собеседование длится по несколько часов. Однако я умудрился его завалить за 10 минут . Как? Очень просто — нервы + забыл элементарную вещь. H>>Первый вопрос был написать класс и наследуемый от него. Сделал. Второй вопрос — про приведение типов. Ответил. Третий вопрос был фатальным. Угадайте, какой... написать для данного класса конструктор копирования. Ну забыл я, забыл! H>>Написал дрожащими руками вот такое:
H>>
H>>A::A(A a)
H>>{
H>>...
H>>}
H>>
H>>Конечно же, виноват и все такое. Но разве так уж важно, что я не могу с ходу написать конструктор копирования? Ведь достаточно потратить 30 сек времени, чтобы узнать, как это записывается. Ведь умение-неумение записать ту или иную конструкцию на языке программирования еще не говорит о том, что я не умею программировать, не умею решать задачи. Потому что синтаксические правила языка узнаются за ничтожное время и, на мой взгляд, гораздо важнее посмотреть, как соискатель будет вести себя при решении каких-либо необычных задач, как у него работает именно мозг, а не память. Каково ваше мнение?
0>А по-моему, есть вещи, которые нельзя забывать никогда, как таблицу умножения... А еще есть вещи, говорящие о непонимании практически базовых концепций и принципов. И соискатель, может быть, прав в данной ситуации — ему нужно получить наиболее хорошо знающего работника.
Согласен! Просто привык Си++ считать просто инструментом в работе. Например, мне нужно то-то... как там, значит, оно в Си++ делается? И лезу в справочник. После чего на следующий день благополучно это забываю. Насколько оправдан такой подход?
Здравствуйте, Hottabych1, Вы писали:
H>В пятницу был в одной очень солидной фирме. Когда шел — меня предупреждали, что собеседование длится по несколько часов. Однако я умудрился его завалить за 10 минут . Как? Очень просто — нервы + забыл элементарную вещь. H>Первый вопрос был написать класс и наследуемый от него. Сделал. Второй вопрос — про приведение типов. Ответил. Третий вопрос был фатальным. Угадайте, какой... написать для данного класса конструктор копирования. Ну забыл я, забыл! H>Написал дрожащими руками вот такое:
H>
H>A::A(A a)
H>{
H>...
H>}
H>
H>Конечно же, виноват и все такое. Но разве так уж важно, что я не могу с ходу написать конструктор копирования? Ведь достаточно потратить 30 сек времени, чтобы узнать, как это записывается. Ведь умение-неумение записать ту или иную конструкцию на языке программирования еще не говорит о том, что я не умею программировать, не умею решать задачи. Потому что синтаксические правила языка узнаются за ничтожное время и, на мой взгляд, гораздо важнее посмотреть, как соискатель будет вести себя при решении каких-либо необычных задач, как у него работает именно мозг, а не память. Каково ваше мнение?
Здравствуйте, Hottabych1, Вы писали:
H>В пятницу был в одной очень солидной фирме. Когда шел — меня предупреждали, что собеседование длится по несколько часов. Однако я умудрился его завалить за 10 минут .
Не расстраивайся.
H>Потому что синтаксические правила языка узнаются за ничтожное время и, на мой взгляд, гораздо важнее посмотреть, как соискатель будет вести себя при решении каких-либо необычных задач, как у него работает именно мозг, а не память. Каково ваше мнение?
Узнаются может за ничтожное... но вот понимаются. К чему приводит отсутствие конструктора/оператора копирования я понял года через два, после того как узнал об их сущестовании. В течении этих двух лет я, как тот канадский программер, смело сражался с багами
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Здравствуйте, Коваленко Дмитрий, Вы писали:
H>>Потому что синтаксические правила языка узнаются за ничтожное время и, на мой взгляд, гораздо важнее посмотреть, как соискатель будет вести себя при решении каких-либо необычных задач, как у него работает именно мозг, а не память. Каково ваше мнение?
КД>Узнаются может за ничтожное... но вот понимаются. К чему приводит отсутствие конструктора/оператора копирования я понял года через два, после того как узнал об их сущестовании. В течении этих двух лет я, как тот канадский программер, смело сражался с багами
Навеяло... а то, как пишется нормальный оператор копирования, я понял еще через пару лет
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Здравствуйте, MP321, Вы писали:
MP>Здравствуйте, Hottabych1, Вы писали:
H>>В пятницу был в одной очень солидной фирме. Когда шел — меня предупреждали, что собеседование длится по несколько часов. Однако я умудрился его завалить за 10 минут . Как? Очень просто — нервы + забыл элементарную вещь. H>>Первый вопрос был написать класс и наследуемый от него. Сделал. Второй вопрос — про приведение типов. Ответил. Третий вопрос был фатальным. Угадайте, какой... написать для данного класса конструктор копирования. Ну забыл я, забыл! H>>Написал дрожащими руками вот такое:
H>>
H>>A::A(A a)
H>>{
H>>...
H>>}
H>>
H>>Конечно же, виноват и все такое. Но разве так уж важно, что я не могу с ходу написать конструктор копирования? Ведь достаточно потратить 30 сек времени, чтобы узнать, как это записывается. Ведь умение-неумение записать ту или иную конструкцию на языке программирования еще не говорит о том, что я не умею программировать, не умею решать задачи. Потому что синтаксические правила языка узнаются за ничтожное время и, на мой взгляд, гораздо важнее посмотреть, как соискатель будет вести себя при решении каких-либо необычных задач, как у него работает именно мозг, а не память. Каково ваше мнение?
MP>Хм , а они объяснили, как по ихнему правильно?
Намекали... Потому я допер поставить там ссылку, потом намекали на const... а потом сказали, что люди, которые к ним приходят пишут это с ходу, потому "до свидания".
Здравствуйте, Hottabych1, Вы писали:
H>Здравствуйте, 0xd34df00d, Вы писали:
0>>Здравствуйте, Hottabych1, Вы писали:
{} H>>>Конечно же, виноват и все такое. Но разве так уж важно, что я не могу с ходу написать конструктор копирования? Ведь достаточно потратить 30 сек времени, чтобы узнать, как это записывается. Ведь умение-неумение записать ту или иную конструкцию на языке программирования еще не говорит о том, что я не умею программировать, не умею решать задачи. Потому что синтаксические правила языка узнаются за ничтожное время и, на мой взгляд, гораздо важнее посмотреть, как соискатель будет вести себя при решении каких-либо необычных задач, как у него работает именно мозг, а не память. Каково ваше мнение?
0>>А по-моему, есть вещи, которые нельзя забывать никогда, как таблицу умножения... А еще есть вещи, говорящие о непонимании практически базовых концепций и принципов. И соискатель, может быть, прав в данной ситуации — ему нужно получить наиболее хорошо знающего работника.
H>Согласен! Просто привык Си++ считать просто инструментом в работе. Например, мне нужно то-то... как там, значит, оно в Си++ делается? И лезу в справочник. После чего на следующий день благополучно это забываю. Насколько оправдан такой подход?
Имхо если постоянно открывать справочники (пусть даже это будет какое-нибудь контекстно-зависимое окошко в VS) по любому поводу, то очень много времени теряется.
Тут важна граница, ведь учить наизусть библиотеку, скажем, алгоритмов из STL — тоже не очень хорошо )
Здравствуйте, Hottabych1, Вы писали:
H>Согласен! Просто привык Си++ считать просто инструментом в работе. Например, мне нужно то-то... как там, значит, оно в Си++ делается? И лезу в справочник. После чего на следующий день благополучно это забываю. Насколько оправдан такой подход?
Извини, но это базовое знание, за которым не лезут в справочник.
Здравствуйте, 0xd34df00d, Вы писали:
0>А по-моему, есть вещи, которые нельзя забывать никогда, как таблицу умножения... А еще есть вещи, говорящие о непонимании практически базовых концепций и принципов. И соискатель, может быть, прав в данной ситуации — ему нужно получить наиболее хорошо знающего работника.
Любой мог ошибиться. Даже с таблицей умножения.
У нас в институте как то поставили новый курс с новым профессором. Типа большой спец в своей теме, огромный опыт работы да еще и в Европе (Франция, Польша) и все такое. На одном из занятий что-то там преобразовывали и надо было подсчитать длину спектра. Проф "Ну значит 7, а тут 8. Значит 7 на 8. Сколько там получается? О 48."
Дураки они! Они должны были просто и спокойно спросить — "А что при этом произойдет?" — или даже дать комп и попросить проверить. Если уж и в этом случае долго не доходит, только тогда можно делать выводы о безнадежности пациента.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, DerBober, Вы писали:
DB>Здравствуйте, 0xd34df00d, Вы писали:
0>>А по-моему, есть вещи, которые нельзя забывать никогда, как таблицу умножения... А еще есть вещи, говорящие о непонимании практически базовых концепций и принципов. И соискатель, может быть, прав в данной ситуации — ему нужно получить наиболее хорошо знающего работника.
DB>Любой мог ошибиться. Даже с таблицей умножения.
DB>У нас в институте как то поставили новый курс с новым профессором. Типа большой спец в своей теме, огромный опыт работы да еще и в Европе (Франция, Польша) и все такое. На одном из занятий что-то там преобразовывали и надо было подсчитать длину спектра. Проф "Ну значит 7, а тут 8. Значит 7 на 8. Сколько там получается? О 48."
Он уже был профессором. Кому-то что-то прощается. Все зависит от ситуации. Есть моменты, когда ошибаться никак нельзя. Можно тысячу раз неправильно дернуть ручку на эмуляторе самолета, но на реальном — лучше не стоит
Здравствуйте, McSeem2, Вы писали:
MS>Здравствуйте, Hottabych1, Вы писали:
H>>
H>>A::A(A a)
H>>{
H>>...
H>>}
H>>
MS>Дураки они! Они должны были просто и спокойно спросить — "А что при этом произойдет?" — или даже дать комп и попросить проверить. Если уж и в этом случае долго не доходит, только тогда можно делать выводы о безнадежности пациента.
В принципе, они почти так и сделали. После чего я догадался передавать параметр как ссылку, а вот с const ступил.
Здравствуйте, Hottabych1, Вы писали:
H>Здравствуйте, McSeem2, Вы писали:
MS>>Здравствуйте, Hottabych1, Вы писали:
H>>>
H>>>A::A(A a)
H>>>{
H>>>...
H>>>}
H>>>
MS>>Дураки они! Они должны были просто и спокойно спросить — "А что при этом произойдет?" — или даже дать комп и попросить проверить. Если уж и в этом случае долго не доходит, только тогда можно делать выводы о безнадежности пациента. H>В принципе, они почти так и сделали. После чего я догадался передавать параметр как ссылку, а вот с const ступил.
Ну и забей. Как уже было верно отмечено, это не самое важное в жизни Да и вообще, это бесценный опыт и тренировка!
Здравствуйте, 0xd34df00d, Вы писали:
0>А по-моему, есть вещи, которые нельзя забывать никогда, как таблицу умножения...
Такие вещи, как передача по значению в конструкторе копирования надо не запоминать, а логически выводить — почему так делать нельзя. Стоит если хотя бы раз понять — "почему" и уже никогда так не напишешь. И так во всем. А зазубривание немногого стоит.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, McSeem2, Вы писали:
MS>Здравствуйте, 0xd34df00d, Вы писали:
0>>А по-моему, есть вещи, которые нельзя забывать никогда, как таблицу умножения...
MS>Такие вещи, как передача по значению в конструкторе копирования надо не запоминать, а логически выводить — почему так делать нельзя. Стоит если хотя бы раз понять — "почему" и уже никогда так не напишешь. И так во всем. А зазубривание немногого стоит.
А еще у меня была вторая часть высказывания, которая как раз к этому и относилась
Здравствуйте, Hottabych1, Вы писали:
H>Намекали... Потому я допер поставить там ссылку, потом намекали на const...
Про const ты их самих в ответ мог послать.
const необязателен.
Конструктор копирования — это конструктор с одним параметром-ссылкой на тот же самый класс.
Константная это ссылка или нет — не важно.
Ближайший пример конструктора копирования по неконстантной ссылке — std::auto_ptr.