Re[4]: Тестовое задание C++ win
От: sergey_cheban  
Дата: 17.01.12 12:26
Оценка: :)
_>> 3. Фактически, на каждый из вопросов нас устраивает любой ответ, который в каком-нибудь плане лучше предложенных фрагментов кода, и при этом не создаёт больше проблем, чем решает.
M> Очень многие такие тесты на собеседовании и этот в том числе имеют серьезный недостаток: они даны вне контекста и испытуемому на самом деле предлагается усовершенствовать "сферический код в
M> вакууме." Я бы такой код без дополнительных условий вообще переписывать не стал бы Работает — и хорошо.
Представьте, что вышеуказанные фрагменты кода достались Вам в наследство от программиста, уволенного за профнепригодность, и у Вас есть немного времени на рефакторинг именно этих фрагментов.

M> Как можно говорить, что усовершенствованный код должен решать больше проблем, чем создает, если даже достоверно неясно какого рода проблемы имели место?

Наличие проблем — это часть вопроса. Исправляйте те проблемы, которые видите. Считайте, что Вы — последний человек, который стоит между этими фрагментами кода и реальной эксплуатацией в какой-нибудь life-critical system.

M> А то может первый код вообще хитрый хак чего-то или оптимизирован по быстродействию, а тут уже на форуме напредлагали и boost и смартпоинтеры, которые там возможно уместны как седло у коровы.

M> По второму коду можно сказать, что вообще-то есть библиотечные функции для разбора опций командной строки getopt для Unix или более универсально boost::program_options, а может этого не нужно
M> совсем и тут важно, что внещний результат работы программы может быть одинаковым в случае отсутствия опций и в случае неотображаемого символа в аргументах.
Ради бога. Если Вы считаете, что от использования буста, смартпоинтеров, getopt или чёрта в ступе программа в чём-то выиграет, то пожалуйста, используйте их. Только напишите, в чём программа, по Вашему мнению, выиграла.
Re[9]: Тестовое задание C++ win
От: sergey_cheban  
Дата: 17.01.12 13:05
Оценка:
M>В общем, как я уже написал, на практике без дополнительных не видно смысла что-то с этим делать, тест, строго говоря, некорректный.
А представьте, каково нам. Мы решаем задачу, для которой математически строго доказана невозможность корректного решения: определяем, является ли файл вирусом. Ничего, как-то справляемся.
Re[10]: Тестовое задание C++ win
От: midl  
Дата: 17.01.12 14:07
Оценка: +1 -1 :)
Здравствуйте, sergey_cheban, Вы писали:

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

_>А представьте, каково нам. Мы решаем задачу, для которой математически строго доказана невозможность корректного решения: определяем, является ли файл вирусом. Ничего, как-то справляемся.
Втом то и дело, что "както". Т.е. коекак, с довольно фиговым результатом. Качество современных антивирусов оставляет желать лучшего.
Re[9]: Тестовое задание C++ win
От: Vain Россия google.ru
Дата: 17.01.12 18:16
Оценка:
Здравствуйте, alexander_st, Вы писали:

S>>Нет, для того, чтобы показать что этот буфер изменять не надо.

_>из каких соображений? что будет если его изменить?.... точнее чем изменение буфера хуже его удаления?
Тем что его уже может не существовать в момент изменения, что может повлеч расстрел памяти с продолжением работы. А вот освобождение не выделенной памяти с высокой вероятностью бужет пресечено сразу же.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[7]: Тестовое задание C++ win
От: Erop Россия  
Дата: 18.01.12 08:59
Оценка:
Здравствуйте, SaZ, Вы писали:


SaZ>Признаю, что возможно немного погорячился с оценкой. Цепляться в этом случае или нет, так сказать, человеко-зависимо. Мои преподаватели бы зацепились (на собеседовании, а на экзамене — тем более).


Это очень от целей собеседования/экзамена зависит...

Но, в любом случае, в ответе всякую ересь можно был бы и не писать...

Кстати, проблема может быть и в том, что вообще используется функция fprintf, а не std::cout, например
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: Тестовое задание C++ win
От: TimurSPB Интернет  
Дата: 18.01.12 11:02
Оценка:
V>Странно, что вы не понимаете, что ошибочно отвергнутый на самом деле обходится в сотни тысяч рублей убытка.
*недополученной прибыли
Несколько разные вещи.
Make flame.politics Great Again!
Re[4]: Тестовое задание C++ win
От: TimurSPB Интернет  
Дата: 18.01.12 11:05
Оценка: +1
Опацэ! Ну и обстановочка в этих ваших докторвебах
Элементарная вежливость и та отсутствует.
Make flame.politics Great Again!
Re[3]: Тестовое задание C++ win
От: Eugeny__ Украина  
Дата: 19.01.12 13:47
Оценка: +3
Здравствуйте, sergey_cheban, Вы писали:

_>Приветствую героев, дочитавших эту тему до шестнадцатой страницы.


Извините, что влезаю, но ваш тон сообщений и отношение к кандидатам очень сильно отталкивает. Чисто по-человечески, я бы даже как с коллегой не смог бы с вами работать, но, как я понимаю, вы еще и тимлид или что-то в таком роде — это еще хуже. Я, конечно, не знаю, что там у вас на рынке труда сиплюсплюсников, может их в свободной "продаже" как собак нерезанных(во что я очень плохо верю), но любой нормальный джавист(да и вообще любой из моих знакомых) при таком отношении к нему как к кандидату бежал бы как от огня(я уже не говорю про тестовое задание типа "хочу того, не скажу чего", но опять же, может для плюсов с их вагоном средств для прострела ноги это норма, я хз). Ну, разве что у вас зп в два раза выше рынка — некоторые бы повелись. Но я бы посоветовал вам все-таки спуститься с небес немного.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[3]: Тестовое задание C++ win
От: Eugeny__ Украина  
Дата: 19.01.12 13:53
Оценка:
Здравствуйте, midl, Вы писали:


M>C учетом предлагаемой зарплаты, других кандидатов вы наврятле увидите усебя на собеседовании


Хм. Как-то я пропустил, что это ДрВеб.

А вакансия забавная. Я слабо представляю, кто с указанным набором знаний пошел бы на такую зп вообще. Видимо, надеются, что кто-то пойдет работать "за громкое имя", ну так на это только студенты ведутся.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re: Тестовое задание C++ win
От: ReFlexer  
Дата: 20.01.12 05:04
Оценка:
Бредовые тестовые вопросы составлены человеком, который не умеет собеседовать. В вопросе отсутствует какой либо смысл... что хотел узнать человек, не понятно...
Re[4]: Тестовое задание C++ win
От: sysenter  
Дата: 20.01.12 05:45
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Вот если бы функция была объявлена void g(char*,char*,size_t)throw() — это другое дело... Но она же не объявлена.


На VS throw() ни к чему не обязывает и ничего не гарантирует. Компилятор будет бросать варнинги о том, что это не реализовано, лечиться отключением через #pragma.
Re[7]: Тестовое задание C++ win
От: sysenter  
Дата: 20.01.12 05:51
Оценка:
Здравствуйте, Vamp, Вы писали:

V>Где? В вызывающей функции он есть. Но я вообще-то не считаю, что bad_alloc надо перехватывать, за исключением редких стратегий типа — попросим 10 гиг, не получилось — тогда 5, опять не получилось, тогда 2 Кб. Как правило, программа просит столько памяти, сколько ей надо для работы


В Linux (и в винде вроде тоже) есть спекулятивное выделение памяти т.е. можно запросить и 10 гиг и получить добро от ОС, креш произойдёт потом когда приложение попробует заюзать полностью эти недоступные 10 гиг, oom killer прибъёт.
Re[4]: Тестовое задание C++ win
От: artkarma  
Дата: 20.01.12 06:01
Оценка:
E__>Здравствуйте, Eugeny__, Вы писали:

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



M>>C учетом предлагаемой зарплаты, других кандидатов вы наврятле увидите усебя на собеседовании


E__>Хм. Как-то я пропустил, что это ДрВеб.


E__>А вакансия забавная. Я слабо представляю, кто с указанным набором знаний пошел бы на такую зп вообще. Видимо, надеются, что кто-то пойдет работать "за громкое имя", ну так на это только студенты ведутся.

Ну вообще-то, да! Странная контора?? На моей памяти они уже лет 8 наверно ищут С++ программиста и регулярно несколько раз в месяц постят вакансию на разных сайтах??? Толи они ищут как ищут жену- одну и на всю жизнь, толи они набирают С++ программистов, пока не заполнят вагон, а как заполнят на этап их в Освенцим и потом берут новый вагон.
Re[5]: Тестовое задание C++ win
От: Eugeny__ Украина  
Дата: 20.01.12 11:03
Оценка:
Здравствуйте, artkarma, Вы писали:

E__>>Хм. Как-то я пропустил, что это ДрВеб.


E__>>А вакансия забавная. Я слабо представляю, кто с указанным набором знаний пошел бы на такую зп вообще. Видимо, надеются, что кто-то пойдет работать "за громкое имя", ну так на это только студенты ведутся.

A>Ну вообще-то, да! Странная контора?? На моей памяти они уже лет 8 наверно ищут С++ программиста и регулярно несколько раз в месяц постят вакансию на разных сайтах??? Толи они ищут как ищут жену- одну и на всю жизнь, толи они набирают С++ программистов, пока не заполнят вагон, а как заполнят на этап их в Освенцим и потом берут новый вагон.

Ну, с такими требованиями и зарплатой они будут искать лохов еще долго, трудно, и под смех адекватных людей.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[2]: Тестовое задание C++ win
От: ak_miass Россия  
Дата: 20.01.12 12:17
Оценка:
Здравствуйте, любой, Вы писали:

Л>А меня в таком коде всегда прикалывает, почему два блока нельзя за раз выделить:


Л>char *a = new char[n*2];

Л>char *b = a + n;
Л>g( a, b, n );
Л>delete [] a;

Не забывай про то, что этот код будет потом читаться\переделываться другими. Я бы "споткнулся" об это место при чтении, а читаю чужого кода я довольно много.
Re: Тестовое задание C++ win
От: Visor2004  
Дата: 24.01.12 13:28
Оценка: :)
Здравствуйте, amberovsky, Вы писали:

A>Какие проблемы Вы видите в этих фрагментах кода и как предлагаете их решать?


надо было ответить: гавнакод, того кто написал это выгнать нахер, взять меня и я перепишу вам по людски
Помните!!! ваш говнокод кому-то предстоит разгребать.
Re: Тестовое задание C++ win
От: Stepkh  
Дата: 01.02.12 10:19
Оценка:
Здравствуйте, amberovsky, Вы писали:

A>Здравствуйте.

A>При попытке устроится в одну фирму прислали "удалённое" тестовое задание.



Да абсолютно нормальное задание. Конечно лучше подобное давать тет-а-тет, а не удаленно. Но...

Вот есть мой тестовый кусок кода, который даю кандидатам.
С вопросом: что не нравится, какие есть проблемы и как бы вы решили:


char  * foo (char* c)
{
    char tmp [80];
    strcpy (tmp, c);
    return tmp;
}



Поверьте, из 10 кандидатов, только 2-3 человека могут указать на все проблемы.
Порядка половины может указать на одну или две.

А вот предложить решение, это уже какой-то высший пилотаж...

П.С.

И этот код я скоммуниздил из реального(!) проекта. Естественно я его причесал и выкинул ненужное, но суть та же.


П.П.С.

А вот ЧСВ у многих товарищей соискателей просто зашкаливает. Вы на улицу давно выглядывали, с людьми
общались? или только в мониторы смотрите, да в теплых помещениях сидите?
Re[2]: Тестовое задание C++ win
От: nazavrik Россия  
Дата: 01.02.12 10:58
Оценка:
Здравствуйте, Stepkh, Вы писали:

S>С вопросом: что не нравится, какие есть проблемы и как бы вы решили:



S>
S>char  * foo (char* c)
S>{
S>    char tmp [80];
S>    strcpy (tmp, c);
S>    return tmp;
S>}
S>


Интереса для.

1. Не инициализируется массив. Не критично, но не помешает.
2. Не контролируется размер передаваемых данных при копировании в массив.
3. Возвращается указатель на массив, который был создан в теле функции.

По хорошему нужно передавать в функцию два массива — источник и приемник. Проверять размерности. Использовать strncpy. м?
Re[3]: Тестовое задание C++ win
От: Abyx Россия  
Дата: 01.02.12 12:31
Оценка:
Здравствуйте, nazavrik, Вы писали:

S>>
S>>char  * foo (char* c)
S>>{
S>>    char tmp [80];
S>>    strcpy (tmp, c);
S>>    return tmp;
S>>}
S>>


N>1. Не инициализируется массив. Не критично, но не помешает.

*зачем* его инициализировать?
чтоб подавить предупреждение о неинициализированной переменной?
или чтоб в 99.9% случаев баг с отсутствием нуля на конце строки спрятать?
In Zen We Trust
Re[4]: Тестовое задание C++ win
От: Stepkh  
Дата: 01.02.12 12:35
Оценка:
Здравствуйте, Abyx, Вы писали:

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


S>>>
S>>>char  * foo (char* c)
S>>>{
S>>>    char tmp [80];
S>>>    strcpy (tmp, c);
S>>>    return tmp;
S>>>}
S>>>


N>>1. Не инициализируется массив. Не критично, но не помешает.

A>*зачем* его инициализировать?
A>чтоб подавить предупреждение о неинициализированной переменной?
A>или чтоб в 99.9% случаев баг с отсутствием нуля на конце строки спрятать?

Господа, вы льете просто бальзам на моё сердце
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.