Экзамен интервьюирующим
May. 10th, 2007 12:11А любое интервью - это, очевидно, способ оценить компанию.
Лично меня, например, жутко забавляют гипернавороченные тестовые задания, составленные коварным
Особенно сильно они забавляют из-за своей полной неприменимости к тому, чем надо будет заниматься. Классика. "Про проблемы реновации оборудования Красноярской ГЭС больше всех рассуждают люди, у которых дома уже год сливной бачок в туалете протекает".
"Сильнее всего прикрывают самое слабое место".
"У вас специальный инструмент, чтобы на модели материалы назначить? Да что вы говорите!"
Спрашивают люди про SFINAE да ADL - а где их применять-то надо будет в реальном коде?
Спрашивают про базовые или высокоуровневые паттерны? Дык значит пытались наспех прооперировать 75 мегабайт легаси кода и неймспейсы туда насажали и по сто одинаковых имен в каждом. И теперь там реальные ужасы творятся, в которых без знания тонкостей ADL вообще не разобраться.
Вам часто приходится декларировать одну и ту же переменную (кстати, что такое "переменная"?) в двух блоках? А вот если вы её, например, externом в двух блоках задекларировали - вам руки за это нужно отпилить или ноги, как сами думаете?
А, скажем, код, на которым все компиляторы кроме Comeau тупо падают или неприличности всякие вытворяют, - такой код вам в профессиональной деятельности нужен регулярно? И разбираться в подобном коде тоже нужно регулярно?
Подобные вопросы - замечательная отправная точка для "чисто поболтать".
Рассмотреть кандидата, и дать ему возможность рассмотреть вас.
Ну а тупые простые (неиезуитские) вопросы - замечательный способ, чтобы тупо отскринить.
Но наиболее осмысленным способом приглядеться к кандидату - было, есть и остается радикальное "Можешь? Сделай!".
Реальная полноценная задача часа на четыре.
Тетрис написать. Или там чтобы танк поехал по земле и объехал что-нибудь.
Имеет смысл даже давать на выполнение задачи заведомо слишком большое количество времени.
С обязательными майлстоунами - типа смотрим что через три часа, а потом в течение недели присылаешь улучшенную версию. Если интересно. Чтобы стресс снять.
Тем самым отсекаются те, кому работа не нужна. Кто неспособен организоваться. Кому времени жаль. Кому тетрис слабо написать.
Ну и те, кто считает, что в геймдеве недостаточно хорошо платят специалистам по C++.
Потому что специалисты по C++ в геймдеве действительно нужны нечасто.
И гораздо чаще - нужны специалисты по разработке игр.
no subject
Date: May. 11th, 2007 14:42 (UTC)Тебе правда интересно почему переменных в C++ нет?
Ну дай мне определение, посмеемся все вместе.
Саттер замечу живой человек.
Ты вот extern int a; как always initialize?
А компиляторы то же самое пишут и про тучу в ступе - это еще не делает ссылки переменными.
Но оно тебе всё надо?
Про школьную программу, замечу, ты загнул.
Ни один из твоих вопросов (так, как они поставлены) в реальной жизни не пригодится, да, но и ответить на них практически невозможно.
Т.е. можно, но для этого надо прикинуть что ты имел ввиду.
"Не живьём" и "прикинуть" - это ты не то проверяешь, опять же.
no subject
Date: May. 11th, 2007 15:45 (UTC)Кому как.
Ага, и чего Саттер там в своей бердовой книжке понаписал, без поллитры не разберешься.
no subject
Date: May. 11th, 2007 16:38 (UTC)И если Саттер говорит "переменная" - то это означает "переменная".
Только не в C++-смысле "а вообще".
А "вообще" - оно всё что угодно может означать.
Ты сам-то ответ на свой первый вопрос готов дать?
Замечу, с определением "переменной" в С++ у тебя видимо случилось слабо ;)
no subject
Date: May. 11th, 2007 18:13 (UTC){
// block 1
...
}
else
{
// block 2
...
}
По определениям мне с тобой тереть просто не интересно, если тебе Саттер не авторитет, то о чем говорить?
no subject
Date: May. 11th, 2007 18:23 (UTC)no subject
Date: May. 11th, 2007 18:26 (UTC)А при использовании её тупо находит name lookup.
Если по твоей логике, то можно тупо и проще:
int var;
и дальше любой код.
Во всех блоках кода будет продекларирована var.
Так?
no subject
Date: May. 11th, 2007 18:30 (UTC)no subject
Date: May. 11th, 2007 19:16 (UTC)Она не декларируется в этих блоках, но доступна по name lookup в скопах этих блоков, поскольку оба substatement находятся в скопе if.
И запрещена к редекларации в substatement.
Но декларация - одна.
И если это то, что ты имел ввиду, то я разочарован.
int var не надо в namespace, можно например так:
void foo( int var )
{
{ first block }
{ second block }
}
и тысячью других способов.
А правильный ответ на твой вопрос, на самом деле - это использование extern и using.
Единственно правильный.
Если тебе, конечно, это интересно.
no subject
Date: May. 11th, 2007 19:31 (UTC)no subject
Date: May. 14th, 2007 16:01 (UTC)Ну и плюс обращу внимание - "задекларировать в блоке" это таки совсем не то, что ты написал.
Жаль, по определениям тереть не получается - ты их опасаешься.
Ну и name lookup с declaration путаешь.
no subject
Date: May. 14th, 2007 17:23 (UTC)no subject
Date: May. 11th, 2007 17:17 (UTC)мне интересно. подозреваю потому что ее слишком много, поэтому проще считать что ее нет. т.е. проще и правильнее оперировать другими словами.
если бы ты спросил меня что такое переменная - я бы ответил что это имя пары адрес-регистр, вроде того. но это не про С++. :)
потому что если хотя бы появляется типизация - я что такое переменная лучше перестану знать.
а то и правда все вместе посмеются! :)
no subject
Date: May. 11th, 2007 18:20 (UTC)no subject
Date: May. 11th, 2007 18:28 (UTC)"A variable is introduced by the declaration of an object."
На этом мысль у стандарта останавливается и начинаются сплошные дефект репорты. Потому что в каждом конкретном случае где написано variable чаще всего требуется конкретное расширение до name или entity или добавление "object or reference" или сужение и т.п.
no subject
Date: May. 11th, 2007 18:29 (UTC)Хотя про конструкторы там веселее сильно :)
Я исчез до пнд!