Re[7]: Как я выгнал человека с собеседования
От: jazzer Россия Skype: enerjazzer
Дата: 24.01.07 17:58
Оценка: 4 (2) +2
Здравствуйте, Hottabych1, Вы писали:

H>Все эти базовые вещи проходятся в ВУЗе на первом курсе или в школе в 10м классе, потом за ненадобностью благополучно забываются. Не забудутся только если их использовать в работе, а на работу не возьмут, если ты их не использовал.

Э-э-э...
Ну что я могу сказать...
Если ты работал программистом на С++ и при этом у тебя const забылся "за ненадобностью", потому что "ты их не использовал" — я бы тебя не взял на работу хотя бы потому, что твой предыдущий опыт работы развил в тебе плохие привычки программирования, с которыми мне же потом и придется сражаться. В этом плане действительно лучше брать зеленых выпускников, которые еще не успели набраться всякой дряни, и выращивать из них нормальных программистов. Но это при условии что на рынке нет профессионалов, что в России далеко не так.

H>Если человек еще студент, но с желанием учиться и развиваться дальше, то следует ему в этом помочь — в конце концов это инвестиция фирмы.

Поставь себя на место владельца фирмы и подумай, в кого выгоднее инвестировать — в новичка или в профессионала.

H>Или, может, Вы родились, уже зная Си++ и STL?

Конечно же, нет. Я работал на part-time за $350 в месяц. И ни в какие конторы уровня Яндекса или Google не лез. Потому что отлично осознавал свой тогдашний уровень.



P.S. Ты зря упорствуешь и ставишь форум на уши. Ничего страшного не произошло. Тебе указали на конкретные пробелы в твоих знаниях — закрывай их. В конце концов, твоя цель ведь — стать высокооплачиваемым профессионалом, а не просто числиться в Яндексе. Я знаю нескольких человек, которым было отказано на собеседованиях в те фирмы, в которые они мечтали устроиться, но они не пошли плакаться на форум, а пошли учиться, и сейчас они повторные интервью в те же самые конторы проходят без напрягов.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[18]: Как я завалил собеседование
От: jazzer Россия Skype: enerjazzer
Дата: 24.01.07 18:01
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Здравствуйте, jazzer, Вы писали:


J>>Здравствуйте, minorlogic, Вы писали:


M>>>Ну наконецто вы озвучили то что я пытался сказать , для применения описанного трюка , все участвующие классы должны нести соответствующую нагрузку. И данный трюк не подходит для general случая.


J>>подходит, если ты свой общий случай будешь хранить не по значению, а по указателю

J>>swap указателей — операция безболезненная

M>В общем случае нам придется свести все к частному случаю без обид .. звучит прикольно.


на том стоим
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[18]: Как я завалил собеседование
От: jazzer Россия Skype: enerjazzer
Дата: 24.01.07 18:02
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Здравствуйте, jazzer, Вы писали:


M>>>Ну наконецто вы озвучили то что я пытался сказать , для применения описанного трюка , все участвующие классы должны нести соответствующую нагрузку. И данный трюк не подходит для general случая.


J>>подходит, если ты свой общий случай будешь хранить не по значению, а по указателю

J>>swap указателей — операция безболезненная

КД>При монопольном доступе к обоим указателям


КД>Бугагага


сорри, не понял, расшифруй свою мысль
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[7]: Как я выгнал человека с собеседования
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 24.01.07 18:10
Оценка:
Здравствуйте, Hottabych1, Вы писали:

H>Все эти базовые вещи проходятся в ВУЗе на первом курсе или в школе в 10м классе, потом за ненадобностью благополучно забываются. Не забудутся только если их использовать в работе, а на работу не возьмут, если ты их не использовал.


Хотабыч открыл Америку!

H>Если человек еще студент, но с желанием учиться и развиваться дальше, то следует ему в этом помочь — в конце концов это инвестиция фирмы.


Лучшие инвестиции это те, которые ты сам для себя сделал

А, типа, "господа, вкладывайте в меня бабки и я стану умным ... ну и так далее" — это убого.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[19]: Как я завалил собеседование
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 24.01.07 18:16
Оценка:
Здравствуйте, jazzer, Вы писали:

J>>>swap указателей — операция безболезненная


КД>>При монопольном доступе к обоим указателям


КД>>Бугагага


J>сорри, не понял, расшифруй свою мысль


Ну я в контексте мысли "что может свалить то, что свалить нельзя".

Если (тупой) объект используется в разных потоках, то вполне можем переместить недействительный указатель.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[20]: Как я завалил собеседование
От: jazzer Россия Skype: enerjazzer
Дата: 24.01.07 19:09
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>Если (тупой) объект используется в разных потоках, то вполне можем переместить недействительный указатель.


Ну это к swap прямого отношения не имеет.
Ты ту же самую проблему получишь, используя pimpl
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[7]: Как я выгнал человека с собеседования
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 24.01.07 19:22
Оценка:
Здравствуйте, Hottabych1, Вы писали:

H>Все эти базовые вещи проходятся в ВУЗе на первом курсе или в школе в 10м классе, потом за ненадобностью благополучно забываются. Не забудутся только если их использовать в работе, а на работу не возьмут, если ты их не использовал.


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

Да и работа — штука относительная. Я вот когда пришёл на собеседование, уже представлял себе, что такое const в C++, хотя мне это было не надо, т.к. пишем всё на C#. А всё потому, что до этого я сам мучил C++. Книжки читал, понимал, зачем нужна эта концепция и т.д. Ведь если ты понимаешь, зачем вообще в C++ был введён const, то ты вряд ли забудешь, как он используется. Потом ещё для себя задачки интересные придумывал, реализовывал.

Кстати, небольшой оффтоп — сейчас пишу на C# и тяжело приходится без const — приходится явно писать интерфейс вида IConstXXX и наследовать от него IXXX. Хотя, const тоже пораждает немало граблей. Так что, может оно и к лучшему.

H>Если человек еще студент, но с желанием учиться и развиваться дальше, то следует ему в этом помочь — в конце концов это инвестиция фирмы. Или, может, Вы родились, уже зная Си++ и STL?


Если у человека действительно есть желание учиться и развиваться, он возьмёт и будет развиваться. И не надо уповать на злых дядек, которые тебе в этом мешают.
... << RSDN@Home 1.2.0 alpha rev. 672>>
Re[7]: Как я выгнал человека с собеседования
От: Hottabych1  
Дата: 24.01.07 19:34
Оценка: -1
Я никого ни в чем не обвиняю. Изначально просто интересовало мнение публики, насколько, по вашему мнению, важно знание именно синтаксиса языка Си++, конструкций языка. И совершенно при этом не снимаю с себя ответственности за убитое интервью. Потому что в каждой компании есть те или иные требования к кандидатам формального характера. Меня лишь интересует, насколько верен такой подход вообще, в целом, во всей индустрии. И какой способ отбора кандидатов является наиболее объективным. Все эти консты и конструкторы копирования лишь частности.
Re[8]: Как я выгнал человека с собеседования
От: jazzer Россия Skype: enerjazzer
Дата: 24.01.07 19:53
Оценка:
Здравствуйте, Hottabych1, Вы писали:

H>Я никого ни в чем не обвиняю. Изначально просто интересовало мнение публики, насколько, по вашему мнению, важно знание именно синтаксиса языка Си++, конструкций языка. И совершенно при этом не снимаю с себя ответственности за убитое интервью. Потому что в каждой компании есть те или иные требования к кандидатам формального характера. Меня лишь интересует, насколько верен такой подход вообще, в целом, во всей индустрии. И какой способ отбора кандидатов является наиболее объективным. Все эти консты и конструкторы копирования лишь частности.


Речь не о синтаксисе/конструкциях, а об идеологии, идеях и идиомах.
Т.е. если бы ты не стал писать, а сказал словами: "конструтор копирования принимает константную ссылку на А" — вряд ли стали бы обязательно проверять, можешь ли ты это записать без ошибок на бумаге, по крайней мере, вес неправильно записанного был бы намного ниже.

А если человек не знаком с идиомами и общими приемами — он еще не профессионал, ему еще стоит подучиться, вот и все.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[8]: Как я выгнал человека с собеседования
От: Flay  
Дата: 24.01.07 20:01
Оценка: 1 (1)
H>Я никого ни в чем не обвиняю. Изначально просто интересовало мнение публики, насколько, по вашему мнению, важно знание именно синтаксиса языка Си++, конструкций языка. И совершенно при этом не снимаю с себя ответственности за убитое интервью. Потому что в каждой компании есть те или иные требования к кандидатам формального характера. Меня лишь интересует, насколько верен такой подход вообще, в целом, во всей индустрии. И какой способ отбора кандидатов является наиболее объективным. Все эти консты и конструкторы копирования лишь частности.

Я вообще не понимаю, как это — верен в индустрии???

У компании есть необходимость в специалисте, она сама по собственному усмотрению
устраивает собеседования и решает подходит он ей или нет. И пофиг этой компании как
вся остальная индустрия решает этот вобщем-то интимный вопрос.
Re[8]: Как я выгнал человека с собеседования
От: superman  
Дата: 25.01.07 09:38
Оценка:
Здравствуйте, Hottabych1, Вы писали:

H> Меня лишь интересует, насколько верен такой подход вообще, в целом, во всей индустрии. И какой способ отбора кандидатов является наиболее объективным. Все эти консты и конструкторы копирования лишь частности.


О боже.. в последний раз Ответ:

ИМХО Для того что бы заниматься профессиональным програмированием на С++ необходимо знать что такое конструктор копирования, какова его сигнатура и понимать почему у него константный параметр! Это необходимое условие, но никак не достаточное . Это знать необходимо. Все возможные исключения либо специфика кадровой политики данной конкретной компании, либо исключения подтверждающие правило.
Re[8]: Как я выгнал человека с собеседования
От: greenrat  
Дата: 25.01.07 11:19
Оценка:
Здравствуйте, Hottabych1, Вы писали:

H>Я никого ни в чем не обвиняю. Изначально просто интересовало мнение публики, насколько, по вашему мнению, важно знание именно синтаксиса языка Си++, конструкций языка. И совершенно при этом не снимаю с себя ответственности за убитое интервью. Потому что в каждой компании есть те или иные требования к кандидатам формального характера. Меня лишь интересует, насколько верен такой подход вообще, в целом, во всей индустрии. И какой способ отбора кандидатов является наиболее объективным. Все эти консты и конструкторы копирования лишь частности.


Вот читаю форум и не совсем понимаю. На собеседованиях проверяют знания. Разные. Например, на яндексе проверяют как человек реально знает C++. В MS проверяют (из языка) главным образом только алгоритмы и те простые (правда заставляют писать на бумажке, что сложнее).

Что конкретно ты знаешь? С++ — вроде нет пока. Алгоритмы — вроде тоже нет. Как ты хочешь, чтобы работодатель предпочел тебя другим? По каким параметрам? Что светлая голова — имхо не понимаю — это же тоже нужно как-то доказать. Например я прежде чем пойти устраиваться в первую контору проштудировал страуструпа, сдал brainbench > 4.6. Пописал собственные проекты. И примерно представлял (хоть как-то) что такое конструктор копирования, зачем нужен const и т.д. И могу сказать, что это не совсем 10 сек посмотрел и уже понял. Некоторые темы приходилось прорубать...

И вот уже >6 лет постоянно читаю книжки, изучаю алгоритмы и постоянно в C++(!) открываю все новые и новые возможности и более чем уверен, что их еще ну просто очень много. Я уж не говорю, что boost просто не смотрел (все равно начальство не даст добро ).

С уважением,
greenrat
Re[8]: Как я выгнал человека с собеседования
От: Anatolix Россия https://www.linkedin.com/in/anatolix/
Дата: 25.01.07 16:20
Оценка:
Здравствуйте, Hottabych1, Вы писали:

H>Я никого ни в чем не обвиняю. Изначально просто интересовало мнение публики, насколько, по вашему мнению, важно знание именно синтаксиса языка Си++, конструкций языка.


Еще раз повторяю: нет не нужно. тебя не взяли не за это.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[10]: Как я завалил собеседование
От: jazzer Россия Skype: enerjazzer
Дата: 25.01.07 17:12
Оценка:
Здравствуйте, minorlogic, Вы писали:

КД>>

КД>>Правда в последнее время, мне в голову все чаще и чаще приходя мысли, что проектировать классы нужно так, чтобы у них вообще не было реализаций конструкторов и операторов копирования.


M>Очень здравая мысль. Я считаю что такие весчи необходимо делать только в очень маленьком к-ве случаев , например смартпоинтер.


M>Для тривиальных , небиблиотечных классов — это дурной тон.


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

Это в небиблиотечном коде сплошь и рядом и вполне тривиально.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[11]: Как я завалил собеседование
От: sraider http://dvinogradov.blogspot.com
Дата: 25.01.07 17:45
Оценка: +1
J>Достаточно просто положить в класс ссылочный член с семантикой владения (например, указатель).
J>И придется писать конструкторы и операторы, никуда не денешься — генерящийся по умолчанию тебя не устроит.

Другой вопрос — часто ли это нужно в обычной жизни? Вот мне в классе Foo нужен указатель X с семантикой владения. Допустим он владеет целой пачкой объектов типа Y:

class Foo
{
  std::vector<Y> X;
};

Нужно этому классу написать конструктор копирования? Или оператор присваивания? Или пусть компилятор сгенерит?

Мой совет: забудьте про конструкторы копирования и операторы присваивания, изучите умные указатели из стандартной библиотеки и буста (если не хватает — допишите еще парочку специфичных для вас). Жизнь облегчает значительно.
Re[12]: Как я завалил собеседование
От: jazzer Россия Skype: enerjazzer
Дата: 25.01.07 18:02
Оценка:
Здравствуйте, sraider, Вы писали:

J>>Достаточно просто положить в класс ссылочный член с семантикой владения (например, указатель).

J>>И придется писать конструкторы и операторы, никуда не денешься — генерящийся по умолчанию тебя не устроит.

S>Другой вопрос — часто ли это нужно в обычной жизни? Вот мне в классе Foo нужен указатель X с семантикой владения. Допустим он владеет целой пачкой объектов типа Y:


S>
class Foo
S>{
S>  std::vector<Y> X;
S>};


И где указатель? Здесь владение по значению. А я говорил об указателе. Да и ты тоже, вроде, поначалу.

S>Нужно этому классу написать конструктор копирования? Или оператор присваивания? Или пусть компилятор сгенерит?


Этому — не нужно. Нехай генерит

S>Мой совет: забудьте про конструкторы копирования и операторы присваивания, изучите умные указатели из стандартной библиотеки и буста (если не хватает — допишите еще парочку специфичных для вас). Жизнь облегчает значительно.


Спасибо, обязательно загляну! А что такое буст?
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[11]: Как я завалил собеседование
От: minorlogic Украина  
Дата: 25.01.07 18:33
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Здравствуйте, minorlogic, Вы писали:


КД>>>

КД>>>Правда в последнее время, мне в голову все чаще и чаще приходя мысли, что проектировать классы нужно так, чтобы у них вообще не было реализаций конструкторов и операторов копирования.


M>>Очень здравая мысль. Я считаю что такие весчи необходимо делать только в очень маленьком к-ве случаев , например смартпоинтер.


M>>Для тривиальных , небиблиотечных классов — это дурной тон.


J>Достаточно просто положить в класс ссылочный член с семантикой владения (например, указатель).

J>И придется писать конструкторы и операторы, никуда не денешься — генерящийся по умолчанию тебя не устроит.
J>А если у тебя там будет ссылка, а не указатель — так у тебя по умолчанию ничего и не сгенерится даже — сразу будет ошибка компиляции при попытке вызова.

J>Это в небиблиотечном коде сплошь и рядом и вполне тривиально.


Не знаю что есть "ссылочный член с семантикой владения " , но про указатель я писал , достаточно умный указатель использовать.
Если же вы предролагаете копировать и данные по указателю , тогда возникает вопрос , а почему там указатель а не агрегированный мембер ?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[13]: Как я завалил собеседование
От: sraider http://dvinogradov.blogspot.com
Дата: 25.01.07 18:33
Оценка:
S>>
class Foo
S>>{
S>>  std::vector<Y> X;
S>>};

J>И где указатель? Здесь владение по значению. А я говорил об указателе. Да и ты тоже, вроде, поначалу.

X — это и есть тот самый [умный] указатель. Указывает на массив объектов, хранящихся где-то (например, на куче). И при копировании он сам копирует объекты, которыми он владеет. На то он и умный.

PS. Я полагаю тебе не нужно объяснять, что std::vector<> из себя представляет внутри ;)
Re[8]: Как я выгнал человека с собеседования
От: LuciferMoscow Россия  
Дата: 25.01.07 18:46
Оценка:
Здравствуйте, jazzer, Вы писали:

H>>Или, может, Вы родились, уже зная Си++ и STL?

J>Конечно же, нет. Я работал на part-time за $350 в месяц. И ни в какие конторы уровня Яндекса или Google не лез. Потому что отлично осознавал свой тогдашний уровень.
Буржуин! Я с 200 начинал
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[14]: Как я завалил собеседование
От: jazzer Россия Skype: enerjazzer
Дата: 25.01.07 19:09
Оценка: +1
Здравствуйте, sraider, Вы писали:

вектор знает тип хранимого объекта.

короче, о чем я, собственно, речь веду:
struct BaseClass {...} // все сплошь абстрактное и виртульное
struct DerivedClass1 : BaseClass {...}
struct DerivedClass2 : BaseClass {...}
struct DerivedClass3 : BaseClass {...}

BaseClass* CoolFactory(....); // Фабрика

class A
{
   BaseClass* p;

public:
   A(BaseClass* b) : p(b) {}
   ~A() { delete p; }
};

int main(argc, argv)
{
   A a1( CoolFactory(argc, argv) );
   A a2(a1);
}


Даже если ты заменишь голый указатель на любой умный по твоему выбору, избавившись от деструктора — тебе все равно придется что-то делать с копированием и присваиванием (напоминаю, нам нужна семантика владения и, соответственно, глубокого копирования).

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

Например, BaseClass может предоставлять операцию clone, тогда копирование будет просто:
A::A(const A& rhs)
{
   p = rhs.p->clone();
}


Или же он может предоставлять еще какую-нть информацию, которой может воспользоватсья фабрика, тогда код будет такой:
A::A(const A& rhs)
{
   p = CoolFactory( rhs.p->get_info_for_copy_making() );
}


Или же он может отдавать другой объект-прототип, из которого он сам был создан:
A::A(const A& rhs)
{
   p = rhs.p->get_prototype()->make_new_clone();
}


Или же вообще будет специальная функция копирования а ля strcpy:
A::A(const A& rhs)
{
   base_class_cpy(p, rhs.p);
}



Иными словами, тебе в любом случае придется писать явно копирование и присваивание, просто ты это можешь сделать на разных уровнях — либо в классе A, либо создавая еще один уровень косвенности и реализуя явно присваивание и копирование для этих промежуточных классов.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.