Экзамен интервьюирующим
May. 10th, 2007 12:11А любое интервью - это, очевидно, способ оценить компанию.
Лично меня, например, жутко забавляют гипернавороченные тестовые задания, составленные коварным
Особенно сильно они забавляют из-за своей полной неприменимости к тому, чем надо будет заниматься. Классика. "Про проблемы реновации оборудования Красноярской ГЭС больше всех рассуждают люди, у которых дома уже год сливной бачок в туалете протекает".
"Сильнее всего прикрывают самое слабое место".
"У вас специальный инструмент, чтобы на модели материалы назначить? Да что вы говорите!"
Спрашивают люди про SFINAE да ADL - а где их применять-то надо будет в реальном коде?
Спрашивают про базовые или высокоуровневые паттерны? Дык значит пытались наспех прооперировать 75 мегабайт легаси кода и неймспейсы туда насажали и по сто одинаковых имен в каждом. И теперь там реальные ужасы творятся, в которых без знания тонкостей ADL вообще не разобраться.
Вам часто приходится декларировать одну и ту же переменную (кстати, что такое "переменная"?) в двух блоках? А вот если вы её, например, externом в двух блоках задекларировали - вам руки за это нужно отпилить или ноги, как сами думаете?
А, скажем, код, на которым все компиляторы кроме Comeau тупо падают или неприличности всякие вытворяют, - такой код вам в профессиональной деятельности нужен регулярно? И разбираться в подобном коде тоже нужно регулярно?
Подобные вопросы - замечательная отправная точка для "чисто поболтать".
Рассмотреть кандидата, и дать ему возможность рассмотреть вас.
Ну а тупые простые (неиезуитские) вопросы - замечательный способ, чтобы тупо отскринить.
Но наиболее осмысленным способом приглядеться к кандидату - было, есть и остается радикальное "Можешь? Сделай!".
Реальная полноценная задача часа на четыре.
Тетрис написать. Или там чтобы танк поехал по земле и объехал что-нибудь.
Имеет смысл даже давать на выполнение задачи заведомо слишком большое количество времени.
С обязательными майлстоунами - типа смотрим что через три часа, а потом в течение недели присылаешь улучшенную версию. Если интересно. Чтобы стресс снять.
Тем самым отсекаются те, кому работа не нужна. Кто неспособен организоваться. Кому времени жаль. Кому тетрис слабо написать.
Ну и те, кто считает, что в геймдеве недостаточно хорошо платят специалистам по C++.
Потому что специалисты по C++ в геймдеве действительно нужны нечасто.
И гораздо чаще - нужны специалисты по разработке игр.
no subject
Date: May. 10th, 2007 10:24 (UTC)Обычно на собеседованиях смотрю базу (навыки программирования, алгоритмы) и общечеловеческие качества. Если что - тестовое на дом. Не особо сложное само по себе, но на тему, требующую получения новых знаний. Результата уже достаточно для решения брать/не брать. Способность к развитию оказывается ключевой.
Кстати, по плюсам обычно достаточно вопроса про char* и const. :)
Re: Рассмотреть кандидата, и дать ему возможность рассм
Date: May. 10th, 2007 10:52 (UTC)Re: Рассмотреть кандидата, и дать ему возможность рассм
Date: May. 10th, 2007 11:27 (UTC)Re: Рассмотреть кандидата, и дать ему возможность рассм
Date: May. 10th, 2007 11:36 (UTC)Re: Рассмотреть кандидата, и дать ему возможность рассм
Date: May. 10th, 2007 11:54 (UTC)работать только будет негде.
Re: Рассмотреть кандидата, и дать ему возможность рассм
Date: May. 10th, 2007 11:59 (UTC)no subject
Date: May. 10th, 2007 10:53 (UTC)no subject
Date: May. 10th, 2007 13:16 (UTC)Имеет смысл только если компания предлагает заведомо не худшие по сравнению с конкурентами условия.
Иначе можно распугать кандидатов.
no subject
Date: May. 14th, 2007 15:05 (UTC)А зачем??? что там, медом намазано?
no subject
Date: May. 10th, 2007 13:48 (UTC)Хм, я вот на собеседованиях, вопрос 'сколько вы хотите' - задавал два раза.
В начале и в конце. Дык вот, подобные вопросы очень хороший способ вернуть человеку чувство реальности и соотнести свои запросы со способностями. =)
А вообще, ИМХО, собеседование для программера должно начинатьться с относительно простой, маленькой, но хитрой задачи, желательно с несколькими уровнями сложности ошибок/решений. Сильно экономит время на понимание о чём, за чем и на каких условиях разговаривать с кандидатом. Или не разговаривать =)
no subject
Date: May. 10th, 2007 14:33 (UTC)попробую в выходные за 4 часа управиться, посмеюсь.
no subject
Date: May. 10th, 2007 16:45 (UTC):)))
комплимент.
no subject
Date: May. 11th, 2007 07:24 (UTC)no subject
Date: May. 11th, 2007 07:48 (UTC)no subject
Date: May. 10th, 2007 15:08 (UTC)На самом же деле знаний мало не бывает... Человек, который разбирается в C++ лучше человека, который знает его кое-как.
no subject
Date: May. 10th, 2007 15:10 (UTC)no subject
Date: May. 10th, 2007 18:01 (UTC)Опять же, разные степени этого знания нужны для разных позиций - если ты пишешь мидлварь, например, то лучше бы тебе писать хотя бы так, чтобы твой код работал как минимум на двух разных компиляторах, нет? Ну а если танчики двигаешь и твой код никто, кроме танкистов в них не видит - то, действительно, чего тут задрачивать?
no subject
Date: May. 11th, 2007 08:11 (UTC)Обоюдоострый меч, очевидно.
Если не говорить (не в живом общении) - грошь им цена.
Потому что можно просто operator new/delete и всё будет хорошо.
И размер, замечу, тебе там не нужен - его underlying subsystem знает.
И переменных в C++ нет.
Про что вопрос - про референсы, про extern, про алиасы?
И ты не даешь возможности адаптироваться. Мы человеки и друг друга поймём. Я догадаюсь о чём ты, ты догадаешься о чём я.
А без этого - многое теряется.
Если миддлварь - пусть напишет парсер простой, микрокалькулятор.
И API придумает.
Но это - замечу - опять про поговорить.
И это правильно.
no subject
Date: May. 11th, 2007 08:37 (UTC)Переменные в С++ есть, variable назывюццо и о них тебе скажет компилятор сообщениями типо "variable defined but not used", а ежели компилятор не афторитет - сам Саттер говорит "Always initialize variables".
Писать какие-то программы на интервью - по-моему непродуктивно. Человек прилетел может быть за тыщщу километров, ебошил с утра в аэропорт, не выспалсо, может быть без работы сейчас и у него куча билов лежит неполаченных, а ему - хуяк, пиши программу как по-настоящему! Особенно фломастером на доске - по твоей теории получаеццо, что в конторе недостаток компьютеров и программки пишут от руки на бумажке? Если он вдруг круто напишет, то это ему, конечно, в плюс, однако если лажу напишет или вообще не напишет - то непонятно почему. Может он дурак. Может он нервничает. Может быть ему в зону нужно войти чтобы писать.
А базовые знания - не пропьешь. Если знает, то ответит легко. Такой же принцип на вступительных экзаменах - задачи, которые там дают в курсе обучения не встречаются вообще. Да и в будущей работе тоже, это задачи исключительно на знание школьной программы.
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)Хотя про конструкторы там веселее сильно :)
Я исчез до пнд!
no subject
Date: May. 11th, 2007 02:46 (UTC)no subject
Date: May. 11th, 2007 07:29 (UTC)В общем и целом, такие глубокие вопросы задавать не по тому, что тебе надо, а по тому, что есть у человека. Иначе смысла как-то совсем нету.
Ну и кодать давать на собеседовании, конечно, обязательно. В геймдеве - вполне можно тетрис, разве что долго получается. В MS дают писать и отлаживать на whiteboard, и кодать часика на пол, несколько раз. В этом смысле, на покодать вполне годятся и задачки. Не которые про люки, разумеется.
no subject
Date: May. 11th, 2007 08:03 (UTC)Без живого общения подобные "экзамены" ничего не дают ни одной из сторон.
Я вроде говорил уже про разговорный "можешь - расскажи", который взаимообогащает и как раз про пределы.
Вроде бы у Дамира в его небезызвестной ветке.
А дядя
И спрашивать про то, что "тебе надо", а не про то, "что умеет" - это безысходно. Особенно если оно будет не в живом общении - ибо весь смысл теряется.
Например, я как неспециалист в C++ вопроса про "декларацию переменной в C++" не понимаю. Нет там такого ;)
Про whiteboard в MS я как-то смотрел на channel 9, про палиндром, мне понравилось.
За исключением того, что интервьюирующий не знал, как палиндром пишется.
Но там живое общение, и даже сигнатуру BOOL IsPalendrome(TCAR* tszString) можно пережить.
no subject
Date: May. 11th, 2007 09:21 (UTC)no subject
Date: May. 11th, 2007 14:21 (UTC)Я вообще только три вопроса предлагаю.
Про что хочет человек и еще два.
И один тест.
И всё.
no subject
Date: May. 11th, 2007 15:48 (UTC)Ну все тесты что я видел с обоих сторон состояли из кучи тупых вопросов на 5 минут каждый.
no subject
Date: May. 11th, 2007 16:41 (UTC)Точнее так - я видел тесты на много дебильных вопросов, автор которых явно слабо себе представлял разницу между C и C++, но это как раз к вопросу "как интервью позволяет оценить компанию".
no subject
Date: May. 12th, 2007 09:18 (UTC)no subject
Date: May. 12th, 2007 17:19 (UTC)best regards