Re[3]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 30.05.07 18:46
Оценка:
Здравствуйте, machine3000, Вы писали:
M>Да, общество недооценивает значимость этих людей. Несмотря на их нехватку и не взираю на то, что от спама, вирусов и DDOS атак уже не продохнуть. А кто, как не обиженные программисты устраивает это безобразие.
Я сломаю Ваши детские фантазии. "Вредные" програмисты ИМХО делятся на три категории
1. Молокососы, которые
— прочитали об уязвимости в вынь98 на одном сайте
— скачали программу для атаки этой уязвимости на другом сайте
— взломали соседа Васю
— возомнили себя кул хакерами

2. Бизнесмены.
Для них это бизнес. Читсый бизнес. Трояны пишутся для создание сети зомби машин, которые рассылают спам.

3. Художники.
Написание вирусов ради этого самого написания. Таких очень немного
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[8]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 30.05.07 19:32
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

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


FDS>>Я в шоке... кому и зачем такое может понадобиться?

FDS>>Честно говоря, я бы за такой код кое-кого бы мочканул... и уж точно не пошёл бы работать к тому, кто это спрашивает первым вопросом
LM>Лучше передавать указатель и проверять его на NULL?!

Да, в синтаксисе будет явно видно, что работа ведётся именно с указателем
Re[9]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 30.05.07 19:38
Оценка:
Здравствуйте, FDSC, Вы писали:

LM>>Лучше передавать указатель и проверять его на NULL?!

FDS>Да, в синтаксисе будет явно видно, что работа ведётся именно с указателем
А обязан я его проверять на нулл?
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[11]: Move Constructors
От: Sergey Россия  
Дата: 30.05.07 19:48
Оценка:
Здравствуйте, FDSC, Вы писали:

SC>>Move Constructors


FDS>Спасибо.


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


А про Move Constructors я не спрашиваю Просто если человек не слышал о списках инициализации или тем более о ссылках, то с скорее всего язык он почти не знает и учить его придется очень многому. Если бы цель была, как тут предположили, просто избавиться от соискателя вакансии, я бы задавал совсем другие вопросы. Например такой:

Может ли (согласно стандарту, про реальные компиляторы пока не будем) скомпилироваться такой код:

void Foo::bar(int a = 4, int b)
{
}


И когда соискатель заявит, что не может (это вам в форуме понятно, что раз вопрос задан в качестве коварного, то ясен пень что оно скомпилироваться обязано, а на собеседовании все выглядит совсем по-другому), следом еще один вопрос — что надо написать в декларации класса, чтобы оно скомпилировалось. Вот это я понимаю, и коварно, и бессмысленно — потому что никто в здравом уме такого не напишет. Хуже вопрос только про ++i++ и скобки

А вообще мне у Яндекса очень вопрос нравится, про проблемы в этом кусочке кода:
class Foo
{
public:
    Foo(int j) { i=new int[j]; }
    ~Foo() { delete i; }
private:
    int* i;
};

class Bar: Foo
{
public:
    Bar(int j) { i=new char[j]; }
    ~Bar() { delete i; }
private:
    char* i;
};


void main()
{
    Foo* f=new Foo(100);
    Foo* b=new Bar(200);
    *f=*b;
    delete f;
    delete b;
}


Сразу видно, человек только книжки читал или еще и попрограммировать успел.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[12]: Move Constructors
От: FDSC Россия consp11.github.io блог
Дата: 30.05.07 20:16
Оценка:
Здравствуйте, Sergey, Вы писали:

S>А про Move Constructors я не спрашиваю Просто если человек не слышал о списках инициализации или тем более о ссылках, то с скорее всего язык он почти не знает и учить его придется очень многому. Если бы цель была, как тут предположили, просто избавиться от соискателя вакансии, я бы задавал совсем другие вопросы. Например такой:


Ну дак спрашивать надо про списки инициализации и ссылки как параметры функций. Зачем спрашивать ерунду какую-то... понятное дело, что передачу параметра по ссылке человек вполне может знать, а как там что иницилизируется в конструкторе, да ещё полем.... ну, не знаю...

S>Вот это я понимаю, и коварно, и бессмысленно — потому что никто в здравом уме такого не напишет. Хуже вопрос только про ++i++ и скобки


Однако... и что надо написать?
#define b c = 3



S>А вообще мне у Яндекса очень вопрос нравится, про проблемы в этом кусочке кода:


S>Сразу видно, человек только книжки читал или еще и попрограммировать успел.


А как вы это видите? Т.е. что скажет человек с опытом, и что — без опыта? Ну, не надо всё разбирать, естественно, просто показать различие
Скажем, что они должны сказать про строчки *f=*b и delete i?
Re[10]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 30.05.07 20:21
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

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


LM>>>Лучше передавать указатель и проверять его на NULL?!

FDS>>Да, в синтаксисе будет явно видно, что работа ведётся именно с указателем
LM>А обязан я его проверять на нулл?

Да можно и не надо
Re[4]: что за ....!!! где C++ программисты?
От: DKM_MSFT  
Дата: 30.05.07 21:46
Оценка: 30 (13) +8 -6
Здравствуйте, Sergey, Вы писали:

S>Зато незнание языка много что значит У меня на собеседовании треть кандитатов уходила после того, как не могли ответить на один из первых вопросов — как проинициализировать ссылку-член класса.


Это означает лишь то, что благодаря вашим усилиям, компания, вполне вероятно, лишилась многих хороших программистов.

S>Причем один человек был с шестилетним опытом, работал в крупной компании. Про ссылки не знал ничего. Это ж блин каким любознательным человеком надо быть, чтоб за 6 лет, да...


Наверное, этот случай должен был убедить вас в том, что вы спрашиваете какую-то ерунду, да?

Вообще ваш вопрос — один из самых глупых вопросов для собеседования, которые я когда-либо слышал.

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

Давайте, я вас сейчас спрошу о том, как в функции SetSecurityDescriptorDacl указать, что передаваемый DACL был в явном виде указан пользователем. А может быть, вы даже не знаете, что такое DACL? Это ж, блин, каким любознательным человеком надо быть, чтоб за сколько там у вас лет опыта программирования под Windows, да...

Причем, обратите внимание, неспособность ответить как на мой вопрос, так и ваш, свидетельствует лишь о том, что человек не использовал некоторую конструкцию в силу того, что она ему была не нужна. Ответы на оба вопроса находятся в течение минуты в документации. Однако вы, в отличие от меня, спросили про вещь, использования которой можно избежать всегда. Так если вы считаете мой вопрос глупым, то как вы охарактеризуете ваш?
Re[4]: что за ....!!! где C++ программисты?
От: Anatolix Россия https://www.linkedin.com/in/anatolix/
Дата: 31.05.07 00:23
Оценка: 7 (4)
Здравствуйте, LuciferMoscow, Вы писали:

LM>Я сломаю Ваши детские фантазии. "Вредные" програмисты ИМХО делятся на три категории

LM>1. Молокососы, которые
LM>- прочитали об уязвимости в вынь98 на одном сайте
LM>- скачали программу для атаки этой уязвимости на другом сайте
LM>- взломали соседа Васю
LM>- возомнили себя кул хакерами

LM>2. Бизнесмены.

LM>Для них это бизнес. Читсый бизнес. Трояны пишутся для создание сети зомби машин, которые рассылают спам.

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

P.S. Кстати мысли в тему — для предотвращения от "кулхацкеров" многие эксплойты принято распространять в неработоспособном виде. Помню, когда для циски вышел эксплойт который могу уронить почти любую циску которая роутила IPv4 — ребята цискари попросили меня его собрать. Собрал — не работает. Открываю а там в функции main цикл(с описанием — цикл шлет пакеты такого типа которые никогда не выкидываются из буфера, он засоряется — циске кирдык), и цикл аж от 1 до 4 — афигеть. Поправил на 1M — работает. Что уже позже подумалось — такой простой fix отсекает процентов 95 кулхацкеров которые научились делать "make; make install"
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[11]: что за ....!!! где C++ программисты?
От: LuciferMoscow Россия  
Дата: 31.05.07 04:20
Оценка:
Здравствуйте, FDSC, Вы писали:

LM>>>>Лучше передавать указатель и проверять его на NULL?!

FDS>>>Да, в синтаксисе будет явно видно, что работа ведётся именно с указателем
LM>>А обязан я его проверять на нулл?
FDS>Да можно и не надо
А по русски?
... << RSDN@Home 1.1.4 beta 4 rev. 358>>
Re[6]: что за ....!!! где C++ программисты?
От: alzt  
Дата: 31.05.07 06:23
Оценка:
Здравствуйте, puremind, Вы писали:

P>class A

P>{
P>public:
P> A(const A&, int=0); является ли этот конструктор конструктором копирования??
P>};

Вот теперь буду знать ответ на этот вопрос.
Подобное на собеседовании некорректно.
Но мне не хотелось бы, чтобы я не получил какое-нибудь желаемое место только из-за того, что мне задали подобный вопрос.
Поэтому к совету для работодателей "не задавать кандидатам глупые вопросы" могу добавить совет кандидатам:
запомните все типичные вопросы вроде этого, используется-не используется какая разница, по крайней мере на собеседовании может пригодиться.
Re[6]: что за ....!!! где C++ программисты?
От: CreatorCray  
Дата: 31.05.07 06:39
Оценка:
Здравствуйте, LuciferMoscow, Вы писали:

LM>test (char& a) будет правильнее(код говорит программисту, что нулл сюда совать нельзя)

Ну, про то, чтоб передать ссылку я потом подумал.
А так была мысль что туда передается что то не ссылкой чем потом ссылка в классе инициализируется
передавать и запоминать ссылку как то уж ну совсем бессмысленно...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: что за ....!!! где C++ программисты?
От: CreatorCray  
Дата: 31.05.07 06:39
Оценка: +1
Здравствуйте, DKM_MSFT, Вы писали:

S>>Причем один человек был с шестилетним опытом, работал в крупной компании. Про ссылки не знал ничего. Это ж блин каким любознательным человеком надо быть, чтоб за 6 лет, да...

DKM>Наверное, этот случай должен был убедить вас в том, что вы спрашиваете какую-то ерунду, да?
Ну тут одно только "но": утверждалось что кандидат с "шестилетним опытом, работал в крупной компании. Про ссылки не знал ничего"
Совсем ничего не знать про ссылки это конечно плохо. Не знать как проинитить ссылку член класса — это простительно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[13]: Move Constructors
От: Sergey Россия  
Дата: 31.05.07 07:14
Оценка:
> Ну дак спрашивать надо про списки инициализации и ссылки как параметры функций. Зачем спрашивать ерунду какую-то... понятное дело, что передачу параметра по ссылке человек вполне может знать, а как там что иницилизируется в конструкторе, да ещё полем.... ну, не знаю...
>
> S>Вот это я понимаю, и коварно, и бессмысленно — потому что никто в здравом уме такого не напишет. Хуже вопрос только про ++i++ и скобки
>
> Однако... и что надо написать?
> #define b c = 3
>

Да всего лишь

class Foo
{
    void bar(int a, int b = 0);
};

как ни странно. Пример из 8.3.6.6. Долго ржал, когда впервые прочитал этот пункт стандарта.

>

>
> S>А вообще мне у Яндекса очень вопрос нравится, про проблемы в этом кусочке кода:
>
> S>Сразу видно, человек только книжки читал или еще и попрограммировать успел.
>
> А как вы это видите? Т.е. что скажет человек с опытом, и что — без опыта? Ну, не надо всё разбирать, естественно, просто показать различие

Человек с опытом найдет больше проблем. Штук 5-7, смотря как считать.

> Скажем, что они должны сказать про строчки *f=*b и delete i?


Ну для начала *f=*b не скомпилируется из-за приватного наследования. Потом неплохо бы сказать про то, что совершенно непонятно, что хотели сказать этой строчкой кода — дефолтная семантика копирования в данном случае явно ошибочна, а вот какая нужна — это вопрос. Дальше разговор плавно переходит на подсчет ссылок, передачу владения при копировании, "глубокое копирование" aka клонирование и т.д. Странно, что в Yandex этот вопрос письменно задают — для устного собеседования он на мой взгляд гораздо лучше подходит.
Насчет delete i все проще — это в данном случае UB.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[9]: что за ....!!! где C++ программисты?
От: puremind  
Дата: 31.05.07 07:24
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Здравствуйте, Константин Л., Вы писали:


FDS>>>Я в шоке... кому и зачем такое может понадобиться?


КЛ>>про move semantic слышал?


FDS>Ну дак тогда надо не про ссылки спрашивать, а про этот "move semantic"


FDS>Кстати, не слышал, не гуглится, не википедитсяа


А можно еще структурные паттерны проектирования вспомнить ...
Re[7]: что за ....!!! где C++ программисты?
От: puremind  
Дата: 31.05.07 07:34
Оценка:
Здравствуйте, alzt, Вы писали:

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


P>>class A

P>>{
P>>public:
P>> A(const A&, int=0); является ли этот конструктор конструктором копирования??
P>>};

A>Вот теперь буду знать ответ на этот вопрос.

A>Подобное на собеседовании некорректно.
A>Но мне не хотелось бы, чтобы я не получил какое-нибудь желаемое место только из-за того, что мне задали подобный вопрос.
A>Поэтому к совету для работодателей "не задавать кандидатам глупые вопросы" могу добавить совет кандидатам:
A>запомните все типичные вопросы вроде этого, используется-не используется какая разница, по крайней мере на собеседовании может пригодиться.

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

Но вот человек которые не может сказать сколько у class A {}; конструкторов желаемого места явно не получил бы ...


Опять же есть вопросы такого рода:
1. Неявное преобразование типов
2. Поиск наилучшего матча для шаблонных функций...

готов спорить что без подготовки никто не ответит полно и правильно ... вопрос нужно не нужно оставляю открытым ...
Re[5]: что за ....!!! где C++ программисты?
От: puremind  
Дата: 31.05.07 07:45
Оценка: 2 (2) +1
Здравствуйте, DKM_MSFT, Вы писали:

DKM>Причем, обратите внимание, неспособность ответить как на мой вопрос, так и ваш, свидетельствует лишь о том, что человек не использовал некоторую конструкцию в силу того, что она ему была не нужна. Ответы на оба вопроса находятся в течение минуты в документации. Однако вы, в отличие от меня, спросили про вещь, использования которой можно избежать всегда. Так если вы считаете мой вопрос глупым, то как вы охарактеризуете ваш?


Не надо юродствовать это раз ...

Два, позволю себе с вами не согласится по нескольким пунктам.
Сколько вы в своей жизни провели собеседований?

вопрос про ссылки ЭЛЕМЕНТАРНЫЙ — и если человек не знает, не может догадать или вывести гуся из опыта — это серьезный звонок. И можно воздержаться от бездоказательных утверждений типа — "по вашей вине столько хороших сотрудников" ...

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

сonst int *
int * const

class A
{
void f();
void f() const;
};


А это уже реальный косяк! .. =)

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


А что важно в таком случае??
Re[7]: что за ....!!! где C++ программисты?
От: superman  
Дата: 31.05.07 08:02
Оценка:
Здравствуйте, FDSC, Вы писали:


FDS>Я в шоке... кому и зачем такое может понадобиться?


а потом возникают вопросы о проблемах с понимением молодых програмистов
Re[14]: Move Constructors
От: nrwl  
Дата: 31.05.07 08:29
Оценка:
Здравствуйте, Sergey, Вы писали:

S>Человек с опытом найдет больше проблем. Штук 5-7, смотря как считать.


Вроде бы где-то видел, что в этом куске кода находили больше 10 проблем. ( 12, если не ошибаюсь )
Re[15]: Move Constructors
От: Sergey Россия  
Дата: 31.05.07 08:59
Оценка: +1
> S>Человек с опытом найдет больше проблем. Штук 5-7, смотря как считать.
>
> Вроде бы где-то видел, что в этом куске кода находили больше 10 проблем. ( 12, если не ошибаюсь )

Ну это опять же смотря как считать. Например, отсутствие виртуального деструктора в базовом классе проблемой не является, поскольку наследование приватное. Но, с другой стороны, если вздумается разрешить операцию копирования, это можно сделать в том числе и отказавшись от приватного наследования — тогда в проблемы можно засчитать и виртуальный деструктор. В общем, повторюсь — для полноценной беседы вопрос замечательный.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[5]: что за ....!!! где C++ программисты?
От: pavel_turbin  
Дата: 31.05.07 08:59
Оценка: +1
Здравствуйте, DKM_MSFT, Вы писали:

DKM>Вообще ваш вопрос — один из самых глупых вопросов для собеседования, которые я когда-либо слышал.


про ссылку интересный вопрос, однако.

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


Эту концепцию, должен знать любой c++ программист. Как проверить что человек знает это правило? Во для этого такой вопрос даже ничего, необязательно знать ответ, можно посмотреть ход мысли.

Далее, это правило наталкивает на обсуждения, можно по размышлять что тогда делать с такой конструкцией



struct ABC
{
     int &a;
};


может ли существовать такой тип ABC, вообще? Если программист "с лету" говорит "Да, проблем нет." Тогда что делать с правилом инициализации ссылки? Тут можно многое спросить еще, про дефолтный конструктор, как его генерируют и пр. Такие вопросы нужны что-бы отфильтровать шлак и посмотреть видел ли человек C++ вообще.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.