aruslan: (Default)
[personal profile] aruslan
[livejournal.com profile] kunaifusu сегодня двинул сильно правильную мысль про неадекватные интервью как фермент глобального bozo explosion в индустрии.

А любое интервью - это, очевидно, способ оценить компанию.


Лично меня, например, жутко забавляют гипернавороченные тестовые задания, составленные коварным задротом-иезуитом, который почти дочитал стандарт C++, но еще не приступил к чтению его дефект репортов.

Особенно сильно они забавляют из-за своей полной неприменимости к тому, чем надо будет заниматься. Классика. "Про проблемы реновации оборудования Красноярской ГЭС больше всех рассуждают люди, у которых дома уже год сливной бачок в туалете протекает".

"Сильнее всего прикрывают самое слабое место".
"У вас специальный инструмент, чтобы на модели материалы назначить? Да что вы говорите!"

Спрашивают люди про SFINAE да ADL - а где их применять-то надо будет в реальном коде?
Спрашивают про базовые или высокоуровневые паттерны? Дык значит пытались наспех прооперировать 75 мегабайт легаси кода и неймспейсы туда насажали и по сто одинаковых имен в каждом. И теперь там реальные ужасы творятся, в которых без знания тонкостей ADL вообще не разобраться.

Вам часто приходится декларировать одну и ту же переменную (кстати, что такое "переменная"?) в двух блоках? А вот если вы её, например, externом в двух блоках задекларировали - вам руки за это нужно отпилить или ноги, как сами думаете?

А, скажем, код, на которым все компиляторы кроме Comeau тупо падают или неприличности всякие вытворяют, - такой код вам в профессиональной деятельности нужен регулярно? И разбираться в подобном коде тоже нужно регулярно?

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

Ну а тупые простые (неиезуитские) вопросы - замечательный способ, чтобы тупо отскринить.

Но наиболее осмысленным способом приглядеться к кандидату - было, есть и остается радикальное "Можешь? Сделай!".

Реальная полноценная задача часа на четыре.
Тетрис написать. Или там чтобы танк поехал по земле и объехал что-нибудь.
Имеет смысл даже давать на выполнение задачи заведомо слишком большое количество времени.
С обязательными майлстоунами - типа смотрим что через три часа, а потом в течение недели присылаешь улучшенную версию. Если интересно. Чтобы стресс снять.

Тем самым отсекаются те, кому работа не нужна. Кто неспособен организоваться. Кому времени жаль. Кому тетрис слабо написать.

Ну и те, кто считает, что в геймдеве недостаточно хорошо платят специалистам по C++.

Потому что специалисты по C++ в геймдеве действительно нужны нечасто.
И гораздо чаще - нужны специалисты по разработке игр.

Date: May. 10th, 2007 10:24 (UTC)
From: [identity profile] justy-tylor.livejournal.com
И откуда их взять?

Обычно на собеседованиях смотрю базу (навыки программирования, алгоритмы) и общечеловеческие качества. Если что - тестовое на дом. Не особо сложное само по себе, но на тему, требующую получения новых знаний. Результата уже достаточно для решения брать/не брать. Способность к развитию оказывается ключевой.

Кстати, по плюсам обычно достаточно вопроса про char* и const. :)
From: [personal profile] alll
Кстати "как на интервью оценить нанимающую контору" - тема не раскрытая никем из тех, кого я читал. Хотя имхо в последнее время гораздо более актуальная, чем стандартная "как добиться, чтобы взяли на работу".
From: [identity profile] thereaver.livejournal.com
Помоему по вопросам всегда понятно, насколько адекватна компания в данном направлении и насколько для нее важна позиция, на которую вас принимают на работу.
From: [personal profile] alll
Увы-увы, корреляция видимо есть, но по моему небогатому опыту - иногда вполне разумные вопросы задают довольно, гм, странные люди. И набор вопросов иногда сильно не совпадает с той деятельностью, которой приходится заниматься опосля. Равно как и рассказы об этой деятельности со стороны интервьюирующих.

Date: May. 10th, 2007 10:53 (UTC)
From: [personal profile] alll
И совсем уж редко нужны специалисты и в том и в другом одновременно... :)

Date: May. 10th, 2007 13:16 (UTC)
From: [identity profile] execve.livejournal.com
> Но наиболее осмысленным способом приглядеться к кандидату - было, есть и остается радикальное "Можешь? Сделай!".

Имеет смысл только если компания предлагает заведомо не худшие по сравнению с конкурентами условия.

Иначе можно распугать кандидатов.

Date: May. 14th, 2007 15:05 (UTC)
From: [identity profile] lodoshneg.livejournal.com
не худшие? гораздо лучшие условия надо предлагать! Ибо если давать тесты как небезызвестаня аелита - то потом нечего уддивляться что народ просто отказывается их делать и тупо уходит к другим.

А зачем??? что там, медом намазано?

Date: May. 10th, 2007 13:48 (UTC)
From: [identity profile] ex-alexeych.livejournal.com
Подобные вопросы - замечательная отправная точка для "чисто поболтать".

Хм, я вот на собеседованиях, вопрос 'сколько вы хотите' - задавал два раза.
В начале и в конце. Дык вот, подобные вопросы очень хороший способ вернуть человеку чувство реальности и соотнести свои запросы со способностями. =)

А вообще, ИМХО, собеседование для программера должно начинатьться с относительно простой, маленькой, но хитрой задачи, желательно с несколькими уровнями сложности ошибок/решений. Сильно экономит время на понимание о чём, за чем и на каких условиях разговаривать с кандидатом. Или не разговаривать =)

Date: May. 10th, 2007 14:33 (UTC)
From: [identity profile] rahal.livejournal.com
семён, мой мозг эта идея просто убила. тетрис писать пофиг на чём?
попробую в выходные за 4 часа управиться, посмеюсь.

Date: May. 10th, 2007 16:45 (UTC)
From: [identity profile] neteraser.livejournal.com
>> семён, мой мозг эта идея просто убила.
:)))
комплимент.

Date: May. 11th, 2007 07:24 (UTC)
From: [identity profile] sim0nsays.livejournal.com
А-а-а-а-а-аа-а!!!!!!

Date: May. 11th, 2007 07:48 (UTC)
From: [identity profile] aruslan.livejournal.com
Ыыыыы :)))

Date: May. 10th, 2007 15:08 (UTC)
From: [identity profile] mxax.livejournal.com
Я от многих слышал мысли о том, что C++ -- это фильтр для не очень сообразительных людей и что на C++ легко проверить вменяемость человека\насколько он способен понимать сложные вещи и пользоваться ими. С другой стороны, я знаю очень вменяемого и толкового человека, который на собеседовании не знал что такое виртуальное наследование, но это скорее исключение, чем правило.

На самом же деле знаний мало не бывает... Человек, который разбирается в C++ лучше человека, который знает его кое-как.

Date: May. 10th, 2007 15:10 (UTC)
From: [identity profile] glebedev.livejournal.com
года полтора назад сидел на интерьвьюировании, так как остался один из изначальной команды. вообщем-то так и делали - говорили за жизнь, а потом вместе писали чего-нить "близко к тексту будущего приложения". Самое смешное что я на C# сам только сел и поэтому писали именно вместе с интересом разбираясь что и как :)

Date: May. 10th, 2007 18:01 (UTC)
From: [identity profile] kunaifusu.livejournal.com
Это же вопросы по знанию С++, если оно тебя интересует, а не по общей профпригодности. Если не интересует это знание, то можно и не спрашивать - я видел чувака, который вообще ни на С, ни на С++ не писал то ли принципиально, то ли от общей тупости, а писал чуть ли не на паскале и к нему были приставлены специальные люди, егойный паскаль потом переписывающие.

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

Date: May. 11th, 2007 08:11 (UTC)
From: [identity profile] aruslan.livejournal.com
Это вопросы про знание C++ так, как ты его себе представляешь.
Обоюдоострый меч, очевидно.

Если не говорить (не в живом общении) - грошь им цена.
Потому что можно просто operator new/delete и всё будет хорошо.
И размер, замечу, тебе там не нужен - его underlying subsystem знает.

И переменных в C++ нет.
Про что вопрос - про референсы, про extern, про алиасы?

И ты не даешь возможности адаптироваться. Мы человеки и друг друга поймём. Я догадаюсь о чём ты, ты догадаешься о чём я.

А без этого - многое теряется.
Если миддлварь - пусть напишет парсер простой, микрокалькулятор.
И API придумает.
Но это - замечу - опять про поговорить.

И это правильно.

Date: May. 11th, 2007 08:37 (UTC)
From: [identity profile] kunaifusu.livejournal.com
Ага, именно как я представляю, но из того, что ты позаключал - ничего не верно =) У нас все пишеццо на самом кондовом С с // камментами и никаких Канинг лукапов немае. Если люди на интервью спрашивают про люки, это не значит, что они крышки проебали и кандидату придеццо их вытачивать на токарном станке.

Переменные в С++ есть, variable назывюццо и о них тебе скажет компилятор сообщениями типо "variable defined but not used", а ежели компилятор не афторитет - сам Саттер говорит "Always initialize variables".

Писать какие-то программы на интервью - по-моему непродуктивно. Человек прилетел может быть за тыщщу километров, ебошил с утра в аэропорт, не выспалсо, может быть без работы сейчас и у него куча билов лежит неполаченных, а ему - хуяк, пиши программу как по-настоящему! Особенно фломастером на доске - по твоей теории получаеццо, что в конторе недостаток компьютеров и программки пишут от руки на бумажке? Если он вдруг круто напишет, то это ему, конечно, в плюс, однако если лажу напишет или вообще не напишет - то непонятно почему. Может он дурак. Может он нервничает. Может быть ему в зону нужно войти чтобы писать.

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

Date: May. 11th, 2007 14:42 (UTC)
From: [identity profile] aruslan.livejournal.com
Ых.
Тебе правда интересно почему переменных в C++ нет?
Ну дай мне определение, посмеемся все вместе.

Саттер замечу живой человек.
Ты вот extern int a; как always initialize?

А компиляторы то же самое пишут и про тучу в ступе - это еще не делает ссылки переменными.

Но оно тебе всё надо?
Про школьную программу, замечу, ты загнул.
Ни один из твоих вопросов (так, как они поставлены) в реальной жизни не пригодится, да, но и ответить на них практически невозможно.

Т.е. можно, но для этого надо прикинуть что ты имел ввиду.
"Не живьём" и "прикинуть" - это ты не то проверяешь, опять же.

Date: May. 11th, 2007 15:45 (UTC)
From: [identity profile] kunaifusu.livejournal.com
Саттер - чувак из комитета по стандартизации С++, и извини, конечно, если он целую главу в своей книжке назвает так, а потом кто-то в ЖЖ мне пишет, что переменных нет, то у меня даже палец не пошевелиццо выяснять.

Ни один из твоих вопросов (так, как они поставлены) в реальной жизни не пригодится, да, но и ответить на них практически невозможно.

Кому как.

Т.е. можно, но для этого надо прикинуть что ты имел ввиду.

Ага, и чего Саттер там в своей бердовой книжке понаписал, без поллитры не разберешься.

Date: May. 11th, 2007 16:38 (UTC)
From: [identity profile] aruslan.livejournal.com
Если ты думаешь, что в комитете святые агнцы сидят - ты не вполне в теме. И Саттер, кстати, стандарту цену знает.

И если Саттер говорит "переменная" - то это означает "переменная".
Только не в C++-смысле "а вообще".
А "вообще" - оно всё что угодно может означать.

Ты сам-то ответ на свой первый вопрос готов дать?

Замечу, с определением "переменной" в С++ у тебя видимо случилось слабо ;)

Date: May. 11th, 2007 18:13 (UTC)
From: [identity profile] kunaifusu.livejournal.com
if( int i = f() )
{
// block 1
...
}
else
{
// block 2
...
}

По определениям мне с тобой тереть просто не интересно, если тебе Саттер не авторитет, то о чем говорить?

Date: May. 11th, 2007 18:23 (UTC)
From: [identity profile] http://users.livejournal.com/_winnie/
Любой твой вопрос - это слоёный пирог подвохов. И интервьювируемый класса Саттера или Руслана просто не знает, до какого слоя ты имел ввиду. Поэтому - "только для начала побеседовать".

Date: May. 11th, 2007 18:26 (UTC)
From: [identity profile] aruslan.livejournal.com
Дядя, в блоках 1 и 2 переменную i не декларировали.
А при использовании её тупо находит name lookup.

Если по твоей логике, то можно тупо и проще:
int var;
и дальше любой код.

Во всех блоках кода будет продекларирована var.
Так?

Date: May. 11th, 2007 18:30 (UTC)
From: [identity profile] kunaifusu.livejournal.com
В блоках не декларировали, однако она задекларирована как переменная в каждом блоке и только в них существует. Просто int var нельзя потому что такая переменная существует только в одном блоке (или нэймспейсе) и будет убита только при выходе из него, засоряя нэймспейс без нужды.

Date: May. 11th, 2007 19:16 (UTC)
From: [identity profile] aruslan.livejournal.com
Нет, она существует не в блоках, а в statementе уровнем выше. И exceptions и временные объекты легко могут это показать. И "задекларирована как переменная в каждом блоке" - это неправда.

Она не декларируется в этих блоках, но доступна по name lookup в скопах этих блоков, поскольку оба substatement находятся в скопе if.
И запрещена к редекларации в substatement.

Но декларация - одна.
И если это то, что ты имел ввиду, то я разочарован.
int var не надо в namespace, можно например так:

void foo( int var )
{
{ first block }
{ second block }
}

и тысячью других способов.

А правильный ответ на твой вопрос, на самом деле - это использование extern и using.
Единственно правильный.
Если тебе, конечно, это интересно.

Date: May. 11th, 2007 19:31 (UTC)
From: [identity profile] kunaifusu.livejournal.com
Это переменная которая убьется при завершении любого блока из двух (если тип с деструктором), твоя тысяча способов такого эфекта не дает.

Date: May. 14th, 2007 16:01 (UTC)
From: [identity profile] aruslan.livejournal.com
Почему это не дает? :)

Ну и плюс обращу внимание - "задекларировать в блоке" это таки совсем не то, что ты написал.
Жаль, по определениям тереть не получается - ты их опасаешься.
Ну и name lookup с declaration путаешь.

Date: May. 14th, 2007 17:23 (UTC)
From: [identity profile] kunaifusu.livejournal.com
Да, как вообще можно рассуждать о переменных, которые просто плод больного воображения Саттера и прочих комитетичков?

Date: May. 11th, 2007 17:17 (UTC)
From: [identity profile] neteraser.livejournal.com
>> Тебе правда интересно почему переменных в C++ нет?
мне интересно. подозреваю потому что ее слишком много, поэтому проще считать что ее нет. т.е. проще и правильнее оперировать другими словами.

если бы ты спросил меня что такое переменная - я бы ответил что это имя пары адрес-регистр, вроде того. но это не про С++. :)

потому что если хотя бы появляется типизация - я что такое переменная лучше перестану знать.

а то и правда все вместе посмеются! :)

Date: May. 11th, 2007 18:20 (UTC)
From: [identity profile] http://users.livejournal.com/_winnie/
Попробую угадать. Там не переменные, а object, который region of storage? По мне - схоластика.

Date: May. 11th, 2007 18:28 (UTC)
From: [identity profile] aruslan.livejournal.com
Не, в стандарте тупо:
"A variable is introduced by the declaration of an object."

На этом мысль у стандарта останавливается и начинаются сплошные дефект репорты. Потому что в каждом конкретном случае где написано variable чаще всего требуется конкретное расширение до name или entity или добавление "object or reference" или сужение и т.п.

Date: May. 11th, 2007 18:29 (UTC)
From: [identity profile] aruslan.livejournal.com
Могу отписать в ЖЖ в понедельник.
Хотя про конструкторы там веселее сильно :)

Я исчез до пнд!

Date: May. 11th, 2007 02:46 (UTC)
From: [identity profile] daradiboga.livejournal.com
Тетрис - 2ч с запасом. Это если с абсолютного нуля начинать, т.е. с чистой студии на голой винде. Я проверял.

Date: May. 11th, 2007 07:29 (UTC)
From: [identity profile] sim0nsays.livejournal.com
Мое мнение такое. Дядя [livejournal.com profile] kunaifusu написал хорошие вопросы, которые вполне можно задавать. Задавать кандидату, у которого в резюме написано "C++ mastah". Если сам в С++ понимаешь - чего бы приятно не поговорить. По остальному - можно в Борином стиле спрашивать азбуку, добираясь до его или твоих пределов знаний, whichever comes first.

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

Ну и кодать давать на собеседовании, конечно, обязательно. В геймдеве - вполне можно тетрис, разве что долго получается. В MS дают писать и отлаживать на whiteboard, и кодать часика на пол, несколько раз. В этом смысле, на покодать вполне годятся и задачки. Не которые про люки, разумеется.

Date: May. 11th, 2007 08:03 (UTC)
From: [identity profile] aruslan.livejournal.com
Ну я как раз о том же.
Без живого общения подобные "экзамены" ничего не дают ни одной из сторон.
Я вроде говорил уже про разговорный "можешь - расскажи", который взаимообогащает и как раз про пределы.
Вроде бы у Дамира в его небезызвестной ветке.

А дядя [livejournal.com profile] kunaifusu предлагает метрический тест: знаешь - +1, не знаешь 0. Что лично меня расстраивает.
И спрашивать про то, что "тебе надо", а не про то, "что умеет" - это безысходно. Особенно если оно будет не в живом общении - ибо весь смысл теряется.

Например, я как неспециалист в C++ вопроса про "декларацию переменной в C++" не понимаю. Нет там такого ;)

Про whiteboard в MS я как-то смотрел на channel 9, про палиндром, мне понравилось.

За исключением того, что интервьюирующий не знал, как палиндром пишется.
Но там живое общение, и даже сигнатуру BOOL IsPalendrome(TCAR* tszString) можно пережить.

Date: May. 11th, 2007 09:21 (UTC)
From: [identity profile] kunaifusu.livejournal.com
Тут как раз возможно оценить знания, в отличие от традиционного теста, где задают 50 вопросов одного и того же, среднего, уровня. Представь себе контингент МГУ если бы на вступительном нужно было бы решить 50 квадратных уравнений за час - у кого больше правильных ответов тот и прошел?

Date: May. 11th, 2007 14:21 (UTC)
From: [identity profile] aruslan.livejournal.com
А кто предлагает 50 вопросов среднего уровня?

Я вообще только три вопроса предлагаю.
Про что хочет человек и еще два.
И один тест.
И всё.

Date: May. 11th, 2007 15:48 (UTC)
From: [identity profile] kunaifusu.livejournal.com
А кто предлагает 50 вопросов среднего уровня?

Ну все тесты что я видел с обоих сторон состояли из кучи тупых вопросов на 5 минут каждый.

Date: May. 11th, 2007 16:41 (UTC)
From: [identity profile] aruslan.livejournal.com
Ну тебе не везло, видимо, только и всего.
Точнее так - я видел тесты на много дебильных вопросов, автор которых явно слабо себе представлял разницу между C и C++, но это как раз к вопросу "как интервью позволяет оценить компанию".

Date: May. 12th, 2007 09:18 (UTC)
From: [identity profile] http://users.livejournal.com/_winnie/
А что плохого, скажем не в 50 (не все доберутся до конца), а в 15 тупеших и однозначных вопросов по C(++), с отдельным замечанием в начале что подвохов от оптимизаторов и из стандарта ждать не надо?

Date: May. 12th, 2007 17:19 (UTC)
From: [identity profile] sleepy-drago.livejournal.com
(еще не дочитал). За extern/ноги спасибо. Давно так не смеялся. даже усидеть не сумел - пришлось сделать круг по квартире.
best regards

Profile

aruslan: (Default)
aruslan

January 2014

S M T W T F S
   1234
56789 1011
12131415161718
19202122232425
262728293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 28th, 2025 04:40
Powered by Dreamwidth Studios