Это сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

Огрызки от собеседований

От собеседований, которые я недавно проводил, у меня осталась масса листочков с заковыристыми вопросами. Например, если человек говорил, что знает PHP на 10 из 10, то я ему давал, например, такой тест:

var_dump((bool) print_r(${strrev('SLABOLG')} = 1, $GLOBALS[1]{1} == (unset) b"1") == "00");

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

P.S. Я в Самаре, «Holiday Inn» отличный отель.

18 комментариев
hshhhhh.name 2010

Почему собеседования по пхп? Ты же на питоне был.

hshhhhh.name 2010

забавный тест, не знал что можно делать (unset).
и что значит это чудное b«1»?

nudnik.ru 2010

Очень хорошая задача, реально применимая в реальной жизни!

Дмитрий Фантазеров (Смирнов) (fantaseour.ya.ru) 2010

Комментарий для hshhhhh.name:

Это наш уважаемый автор проникся возможностями приведения типов в 5-ке :)
http://ru2.php.net/manual/en/language.types.type-juggling.php#language.types.typecasting

там есть
(binary) casting and b prefix forward support was added in PHP 5.2.1
$binary = b«binary string»;

и про unset тоже там же
(unset) — cast to NULL (PHP 5)

повозишься с UTF-8, еще не так заговоришь :)

однако на собеседовании такое давать, это круто. это комплекс неполноценности растить в программере -​-​ на 5 знает Б-г, на 4 — преподаватель, остальное в руках студента.

Дмитрий Фантазеров (Смирнов) (fantaseour.ya.ru) 2010

На такое трудно ответить, не поковырявшись минут 5 с мануалом и тестовым скриптом. А так интересная задачка, да. Действительно заставляет задуматься, но в жизни так писать не стоит, и именно по этому она и вызывает затруднение -​-​ так не пишут.

а вот про ’00’ это уже из жизни, поскольку
echo var_dump((bool) «0»); //false
echo var_dump((bool) «00»); //true

и это противный подводный камень, бо строку на пустоту надо проверять явно, а не
if ($myNotEmtyString) ...

$GLOBALS=1 тоже вызвал мысль, неужели так дадут сделать? Но и правда дали. Можно ли у числа воспользоваться устаревшим (deprecated since 5.3) синтаксисом доступа к строке по индексу для числа? Сконвертится ли число в строку? Нет конечно:
Accessing variables of other types (not including arrays or objects implementing the appropriate interfaces) using [] or {} silently returns NULL.

Действительно бездонна глубина мануала, и велика мудрость его.

Евгений Степанищев (bolknote.ru) 2010

Комментарий для nudnik.ru:

Очень хорошая задача, реально применимая в реальной жизни!

Она проверяет знания языка.

Евгений Степанищев (bolknote.ru) 2010

Комментарий для hshhhhh.name:

Почему собеседования по пхп? Ты же на питоне был.

У меня была вакансия со знанием PHP

Евгений Степанищев (bolknote.ru) 2010

Комментарий для fantaseour.ya.ru:

Это наш уважаемый автор проникся возможностями приведения типов в 5-ке :)

Когда я ещё активно следил за языком, я читал changelog каждого релиза, так что я просто в курсе :)

однако на собеседовании такое давать, это круто. это комплекс неполноценности растить в программере -​-​ на 5 знает Б-г, на 4 — преподаватель, остальное в руках студента.

Просто если человек говорит, что знает на 10/10, то это либо правда так (что маловероятно), либо он ощутил, что достиг вершины знаний без повода (что более вероятно).

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

Евгений Степанищев (bolknote.ru) 2010

Комментарий для fantaseour.ya.ru:

Действительно заставляет задуматься, но в жизни так писать не стоит, и именно по этому она и вызывает затруднение -​-​ так не пишут.

В жизни как только не пишут, а затруднение она вызывает, потому что собраны несколько тонких или малоизвестных вещей.

Некоторые штуки могут и случайно получаться, вроде if (!$str) {}, где в $str оказалось сначала «»0«», потом «»00«».

Дмитрий Фантазеров (Смирнов) (fantaseour.ya.ru) 2010

Комментарий для Евгения Степанищева:

про 0 и 00 согласен, место тонкое и надо его знать.

меня тут спросили на собеседовании на сколько я оценю себя. сказал, -​-​ ребят, я пишу на этом 10 лет каждый день и пытаюсь скрупулезно все читать. Тем не менее оценить свои знания затруднюсь, они точно не 100%. Поскольку в баллах не просили, я и не сказал. Себя вообще сложно в баллах оценивать, поскольку ты не знаешь этих 100%. Можешь лишь оценить уровень владения «неуверенный» — «хороший, но осторожный, много еще белых пятен» — «уверенный, если есть белые пятна, легко прочту и разберусь». А вот 100% только про hello world могу сказать.

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

Евгений Степанищев (bolknote.ru) 2010

Комментарий для fantaseour.ya.ru:

А вот 100% только про hello world могу сказать

Вот и я тоже, несмотря на то, что читаю changelog :)

но я вот ощущаю, что от того, что я пытаюсь быть уверенным в себе и читаю все досконально, тормозится моя работа, как программиста

Я обычно это делаю в «минуты отдыха», есть куча запланированных мелочей, которые можно сделать, если выдалась свободная минутка. Например, сейчас она выдалась, вот, я отвечаю на комментарии.

nudnik.ru 2010

Комментарий для fantaseour.ya.ru:

тормозится моя работа, как программиста

Так у них в Яндексе только 20% на работу уходит. Волож разрешил.

Азат Разетдинов (razetdinov.ya.ru) 2010

Комментарий для fantaseour.ya.ru:

Особенностью 00 я время от времени пользуюсь на сайте http://spritegen.website-performance.org/ Там требуют задать отступы, хотя при правильной вёрстке они не нужны. Ввод нулей приводит к сообщению, что обязательные поля не заполнены. 00 работает как надо.

guest 2010

Комментарий для Евгения Степанищева:

Она проверяет знания языка.

Она проверяет с человеком ты говоришь или с интерпретатором

Евгений Степанищев (bolknote.ru) 2010

Комментарий для guest:

Не понял вашей фразы. Если человек утверждает, что знает язык идеально, не грех бы эти знания проверить. Это — способ.

Евгений Степанищев (bolknote.ru) 2010

Комментарий для nudnik.ru:

Так у них в Яндексе только 20% на работу уходит. Волож разрешил.

Вводишь людей в заблуждение :) Они ж твою шутку могут за правду принять :) 20% времени можно использовать на личные проекты или пинание балды.

CTAPbIu_MABP (ctapbiu.mabp.myopenid.com) 2010

вообще не понимаю на собеседовании два типа вопросов

  • поработый компилятором
  • реши задачку на логику

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

по второму — 10-20 собеседований и книжку с задачами можно не покупать ;)

Евгений Степанищев (bolknote.ru) 2011

Комментарий для ctapbiu.mabp.myopenid.com:

вообще не понимаю на собеседовании два типа вопросов
— поработай компилятором

интерпретатором

по певому пункту складывается впечатление что в конторе придется писать в блокноте (нотепаде) и никаких IDE не предусмотрено.

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