Огрызки от собеседований
От собеседований, которые я недавно проводил, у меня осталась масса листочков с заковыристыми вопросами. Например, если человек говорил, что знает PHP на 10 из 10, то я ему давал, например, такой тест:
var_dump((bool) print_r(${strrev('SLABOLG')} = 1, $GLOBALS[1]{1} == (unset) b"1") == "00");
Сказать есть ли тут ошибки, если нет, то что получим и что вообще тут происходит.
P.S. Я в Самаре, «Holiday Inn» отличный отель.
Почему собеседования по пхп? Ты же на питоне был.
забавный тест, не знал что можно делать (unset).
и что значит это чудное b«1»?
Очень хорошая задача, реально применимая в реальной жизни!
Комментарий для 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 — преподаватель, остальное в руках студента.
На такое трудно ответить, не поковырявшись минут 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.
Действительно бездонна глубина мануала, и велика мудрость его.
Комментарий для nudnik.ru:
Она проверяет знания языка.
Комментарий для hshhhhh.name:
У меня была вакансия со знанием PHP
Комментарий для fantaseour.ya.ru:
Когда я ещё активно следил за языком, я читал changelog каждого релиза, так что я просто в курсе :)
Просто если человек говорит, что знает на 10/10, то это либо правда так (что маловероятно), либо он ощутил, что достиг вершины знаний без повода (что более вероятно).
Во втором случае мне всё-таки хотелось бы вернуть человека на землю, чтобы понять почему он ещё не там и чем это может грозить в будущем.
Комментарий для fantaseour.ya.ru:
В жизни как только не пишут, а затруднение она вызывает, потому что собраны несколько тонких или малоизвестных вещей.
Некоторые штуки могут и случайно получаться, вроде if (!$str) {}, где в $str оказалось сначала «»0«», потом «»00«».
Комментарий для Евгения Степанищева:
про 0 и 00 согласен, место тонкое и надо его знать.
меня тут спросили на собеседовании на сколько я оценю себя. сказал, -- ребят, я пишу на этом 10 лет каждый день и пытаюсь скрупулезно все читать. Тем не менее оценить свои знания затруднюсь, они точно не 100%. Поскольку в баллах не просили, я и не сказал. Себя вообще сложно в баллах оценивать, поскольку ты не знаешь этих 100%. Можешь лишь оценить уровень владения «неуверенный» — «хороший, но осторожный, много еще белых пятен» — «уверенный, если есть белые пятна, легко прочту и разберусь». А вот 100% только про hello world могу сказать.
ченьдж-логи это конечно правильно, но я вот ощущаю, что от того, что я пытаюсь быть уверенным в себе и читаю все досконально, тормозится моя работа, как программиста. Т. е. надо как-то балансировать чтение и производственную деятельность.
Комментарий для fantaseour.ya.ru:
Вот и я тоже, несмотря на то, что читаю changelog :)
Я обычно это делаю в «минуты отдыха», есть куча запланированных мелочей, которые можно сделать, если выдалась свободная минутка. Например, сейчас она выдалась, вот, я отвечаю на комментарии.
Комментарий для fantaseour.ya.ru:
Так у них в Яндексе только 20% на работу уходит. Волож разрешил.
Комментарий для fantaseour.ya.ru:
Особенностью 00 я время от времени пользуюсь на сайте http://spritegen.website-performance.org/ Там требуют задать отступы, хотя при правильной вёрстке они не нужны. Ввод нулей приводит к сообщению, что обязательные поля не заполнены. 00 работает как надо.
Комментарий для Евгения Степанищева:
Она проверяет с человеком ты говоришь или с интерпретатором
Комментарий для guest:
Не понял вашей фразы. Если человек утверждает, что знает язык идеально, не грех бы эти знания проверить. Это — способ.
Комментарий для nudnik.ru:
Вводишь людей в заблуждение :) Они ж твою шутку могут за правду принять :) 20% времени можно использовать на личные проекты или пинание балды.
вообще не понимаю на собеседовании два типа вопросов
по певому пункту складываеться впечатление что в конторе придеться писать в блокноте (нотпаде) и никаких IDE не предусмотрено. что работа состоит в том чтобы писать сразу обфусцированый код который никто не поймет и поддерживать не будет, потому что если на проекте есть куски такого кода то можно смела вешаться. а так же что все работающие там писатели такого кода дикие задроты и ботаны (гики и нерды)
по второму — 10-20 собеседований и книжку с задачами можно не покупать ;)
Комментарий для ctapbiu.mabp.myopenid.com:
интерпретатором
Странная точка зрения. Должно было сложиться впечатление, что придётся читать много кода.