Интерфейс уже как-то стало нормальным делать адаптивным под множество языков, а комментарии… Ну для начала их стоит хотя бы вообще писать, на каком языке — уже вопрос «политический». Но вот когда нет комментариев вообще, а именование на смешанной тарабарщине (увы, но очень часто встречается такая ситуация), то задача читающего разобраться что к чему сильно усложняется.
Согласен, со словарями, благо, нынче проблем нет. Мне часто не хватает словарного запаса для именования тех или иных сущностей в коде — всегда держу открытой вкладочку «Яндекс.Словарей» на этот случай.
Так я о том и говорю, что смысл подобного диалога отсутствует.
Если нужен новичок «на вырост», то вероятно серьёзными задачами его мучить не предстоит в ближайшее время, соответственно нет нужды его терзать синтетическими вопросами.
Если же нужен «тяжеловес» на передовую — ну так его распознать будет гораздо проще «по мандату и регалиям», то есть каким-то реальным его работам и результатам, а вот вопросами вроде разницы между версиями PHP мало того что ничего путнего не узнать, так ещё и можно человека просто отпугнуть, а то и просто оскорбить.
— У вас большой опыт работы с PHP?
— Да, очень!
— Ок.
Ну не смешно ли? Если у человека есть большой опыт, то его можно проверить гораздо более эффективными методами, чем такими… «не мягкими» вопросами. А вот как раз блестящие ответы на вопросы о различиях 4 и 5 версии PHP совсем не гарантируют, что человек может хорошо писать код, элегантно решать реальные задачи и попросту не рожать горы говнокода.
И ещё добавлю касательно непосредственно темы топика:
Если специалист проводящий собеседование считает необходимым спросить у конкретного кандидата о понимании различий между 4 и 5 версией PHP, то может ли вообще в этом случае идти речь о найме этого человека на должность разработчика, которому предстоит переписывать архитектуру проекта? По-моему это какая-то абстрактная ситуация, которая при воплощении в жизни говорит, что «что-то не так в королевстве датском».
По собственному опыту: переход с 4 на 5 надо просто сделать один раз волевым решением, а не бесконечно поддерживать эту рухлядь. В реальности оказывается, что необходимо переписать лишь до 10 % кода, но кода влияющего на многие архитектурные решения, однако в дальнейшем этот шаг отразится на проекте только положительным образом.
На всякий случай: я не за то, чтобы отрубать вообще поддержку кода, я за то, чтобы в неё входил обязательный и относительно краткосрочный этап по переносу кода в свежую версию, чтобы в дальнейшем более о старой версии не вспоминать. И, по моим наблюдениям, подавляющее большинство проектов этот шаг осуществили более 3 лет назад.
Если спрашивают всякую фигню — надо задуматься о том, а работа, которая стоит за этим собеседованием не будет ли тоже всякой фигнёй, да ещё и с начальством, которое не парит ни в технических ни в организационных вопросах.
Я сторонник такого подхода: вообще спрашивать ничего подобного не надо. Надо дать человеку какую-то небольшую реальную задачу из области реальной предстоящей практики, посмотреть как он её решит и уже по исходнику можно проводить какой-то разбор полётов.
Что касается собеседования как процесса — это на мой взгляд должен быть диалог, в котором работодатель рассказывает о работе и организации, а работник — о себе, своих приоритетах, пожеланиях, ну и соответственно с обязательным обменом вопросами и ответами на эти темы. Такое собеседование должно проводиться после разбора полётов с вышеобозначенным заданием, а его должен предварять отбор кандидатов по резюме + портфолио.
Да там много вопросов, которые дают ответы на знание каких-то теоретических частностей. Разница между 4 и 5 версией PHP в принципе вопрос конечно ёмкий и важный, но если человеку не предстоит уже писать на 4 версии (а вероятность этого стремится к 100 %), зачем ему знать отличия досконально? С тем же успехом можно спрашивать чем 4 отличается от 3 — может только ради проверки интереса к изучению истории.
Добавлю свои 5 копеек. Был по обе стороны баррикад на собеседованиях на должности PHP-разработчиков.
Сначала в целом о вопросе собеседования в подобном ключе. Если такое собеседование будет проводиться для ребят совсем зелёных, которые из своего «портфолио» ничего не могут показать по одной простой причине — потому что его просто нет, то такое собеседования ещё можно было бы рассматривать как один из этапов и/или методов отсева кандидатов. Но для опытных разработчиков такое собеседование само по себе бессмысленно, и, я бы даже сказал, — оскорбительно.
Теперь о книге и описанных в ней вопросах и ответах… Разберём некоторые пункты этого спорного творения (в соответствии с нумерацией вопросов в оригинале).
1. Какая разница между функциями sort(), asort() и ksort()?
Вопрос на зубрение php manual. Нет, ну понятное дело, что понимать, что эти функции вероятнее всего сортируют массивы было бы очень неплохо, но помнить все функции конкретного языка — какой смысл? Есть же справочник, он нужен как раз для того чтобы не держать всё это в голове.
3. Какими способами можно перенаправить страницу в PHP?
Во-первых «перенаправить страницу» это что за сленг такой кривой? Перенаправить можно и нужно запрос, а страница — документ, который PHP в числе прочих вариантов может отдать в ответ на полученный запрос.
А во-вторых — строго говоря в PHP есть только один способ — посылка заголовков перенаправлений. В ответе же приведён почему-то вариант с отправкой строки с JavaScript, который на клиенте должен будет выполнить перезагрузку указанного URL. Какое отношение этот способ имеет к PHP? А если речь о клиенте, который JavaScript не воспроизводит? Почему не приведён вариант с выводом страницы с HTML-перенаправлением мета-тегом, который, если уж на то пошло, более универсален.
6. Что такое тип данных?
Привел школоло? Причём тут вообще PHP? Давайте спросим у кандидатов ещё о том, что такое переменные, чем целые числа отличаются от дробных, сколько будет 2 + 2?
10. Есть ли разница между self и this в php?
Более идиотского ответа на этот вопрос ещё, честно говоря, не встречал.
Правильный ответ:
$this — это ссылка на сам объект, а self — на текущий класс. Вот и вся разница, и именно исходя из неё эти два идентификатора могут применяться.
11. Что такое конструктор?
Что это за шалупонь в ответе?
Ответ должен содержать прежде всего чёткое определение: «Конструктор — это метод класса вызываемый при создании экземпляра класса (объекта)». Ну для чистоты ответа можно ещё добавить «при помощи ключевого слова new» (чтобы отделить от клонирования).
Всё остальное в ответе лишнее, так как про конструкторы можно много чего ещё рассказать, но вопрос был поставлен так чтобы собеседуемый дал определение.
16. Какая разница между require(), require_once(), include() и include_once()?
«require() включает в страницу заданный файл»
Куда, простите, включает? Что это за странная терминология?
17. Какая разница между функциями echo и print в PHP?
Какой практический смысл этого вопроса?
И так далее и тому пободное. Ну это никуда не годится. Этот список вопросов мог бы вполне употреблять на зачёте или экзамене по курсу обучения языку, но на собеседовании мне кажется очень сомнительным практическая ценность многих вопросов, а также формулировки вопросов и ответов. Я на месте кандидата на собеседовании с таким списком вопросов связался бы с руководством компании-нанимателя и поставил бы перед ним вопрос о служебном соответствии лица, которое проводит такое собеседование или внедрило его в практику процедуры найма, так как квалификация этого лица мне кажется довольно сомнительной.
Кстати латиница удалась значительно лучше кириллицы, и, на мой взгляд, латиница паратайповского шрифта хоть и не безупречена, но уже выигрывает у майкрософтовского.
Я сравнил с MS Courier. Испытываю сложные эмоции — с одной стороны сама гарнитура Паратайпа мне больше нравится, но некоторые буквы (строчные «г», «к» и «я», обе «э», прописные «з» и «с») вызывают много вопросов. При всех закидонах майкрософтовского курьера, он, тем не менее, смотрится ровнее и равномернее.
Рад, что кому-то был пост полезен.
Если нужен новичок «на вырост», то вероятно серьёзными задачами его мучить не предстоит в ближайшее время, соответственно нет нужды его терзать синтетическими вопросами.
Если же нужен «тяжеловес» на передовую — ну так его распознать будет гораздо проще «по мандату и регалиям», то есть каким-то реальным его работам и результатам, а вот вопросами вроде разницы между версиями PHP мало того что ничего путнего не узнать, так ещё и можно человека просто отпугнуть, а то и просто оскорбить.
— У вас большой опыт работы с PHP?
— Да, очень!
— Ок.
Ну не смешно ли? Если у человека есть большой опыт, то его можно проверить гораздо более эффективными методами, чем такими… «не мягкими» вопросами. А вот как раз блестящие ответы на вопросы о различиях 4 и 5 версии PHP совсем не гарантируют, что человек может хорошо писать код, элегантно решать реальные задачи и попросту не рожать горы говнокода.
Если специалист проводящий собеседование считает необходимым спросить у конкретного кандидата о понимании различий между 4 и 5 версией PHP, то может ли вообще в этом случае идти речь о найме этого человека на должность разработчика, которому предстоит переписывать архитектуру проекта? По-моему это какая-то абстрактная ситуация, которая при воплощении в жизни говорит, что «что-то не так в королевстве датском».
На всякий случай: я не за то, чтобы отрубать вообще поддержку кода, я за то, чтобы в неё входил обязательный и относительно краткосрочный этап по переносу кода в свежую версию, чтобы в дальнейшем более о старой версии не вспоминать. И, по моим наблюдениям, подавляющее большинство проектов этот шаг осуществили более 3 лет назад.
«… о том, а какова будет работа, которая стоит за этим собеседованием? Не будет ли она...»
Что касается собеседования как процесса — это на мой взгляд должен быть диалог, в котором работодатель рассказывает о работе и организации, а работник — о себе, своих приоритетах, пожеланиях, ну и соответственно с обязательным обменом вопросами и ответами на эти темы. Такое собеседование должно проводиться после разбора полётов с вышеобозначенным заданием, а его должен предварять отбор кандидатов по резюме + портфолио.
А вот этот «экзамен» не нужен никому из сторон.
Сначала в целом о вопросе собеседования в подобном ключе. Если такое собеседование будет проводиться для ребят совсем зелёных, которые из своего «портфолио» ничего не могут показать по одной простой причине — потому что его просто нет, то такое собеседования ещё можно было бы рассматривать как один из этапов и/или методов отсева кандидатов. Но для опытных разработчиков такое собеседование само по себе бессмысленно, и, я бы даже сказал, — оскорбительно.
Теперь о книге и описанных в ней вопросах и ответах… Разберём некоторые пункты этого спорного творения (в соответствии с нумерацией вопросов в оригинале).
1. Какая разница между функциями sort(), asort() и ksort()?
Вопрос на зубрение php manual. Нет, ну понятное дело, что понимать, что эти функции вероятнее всего сортируют массивы было бы очень неплохо, но помнить все функции конкретного языка — какой смысл? Есть же справочник, он нужен как раз для того чтобы не держать всё это в голове.
3. Какими способами можно перенаправить страницу в PHP?
Во-первых «перенаправить страницу» это что за сленг такой кривой? Перенаправить можно и нужно запрос, а страница — документ, который PHP в числе прочих вариантов может отдать в ответ на полученный запрос.
А во-вторых — строго говоря в PHP есть только один способ — посылка заголовков перенаправлений. В ответе же приведён почему-то вариант с отправкой строки с JavaScript, который на клиенте должен будет выполнить перезагрузку указанного URL. Какое отношение этот способ имеет к PHP? А если речь о клиенте, который JavaScript не воспроизводит? Почему не приведён вариант с выводом страницы с HTML-перенаправлением мета-тегом, который, если уж на то пошло, более универсален.
6. Что такое тип данных?
Привел школоло? Причём тут вообще PHP? Давайте спросим у кандидатов ещё о том, что такое переменные, чем целые числа отличаются от дробных, сколько будет 2 + 2?
10. Есть ли разница между self и this в php?
Более идиотского ответа на этот вопрос ещё, честно говоря, не встречал.
Правильный ответ:
$this — это ссылка на сам объект, а self — на текущий класс. Вот и вся разница, и именно исходя из неё эти два идентификатора могут применяться.
11. Что такое конструктор?
Что это за шалупонь в ответе?
Ответ должен содержать прежде всего чёткое определение: «Конструктор — это метод класса вызываемый при создании экземпляра класса (объекта)». Ну для чистоты ответа можно ещё добавить «при помощи ключевого слова new» (чтобы отделить от клонирования).
Всё остальное в ответе лишнее, так как про конструкторы можно много чего ещё рассказать, но вопрос был поставлен так чтобы собеседуемый дал определение.
16. Какая разница между require(), require_once(), include() и include_once()?
«require() включает в страницу заданный файл»
Куда, простите, включает? Что это за странная терминология?
17. Какая разница между функциями echo и print в PHP?
Какой практический смысл этого вопроса?
И так далее и тому пободное. Ну это никуда не годится. Этот список вопросов мог бы вполне употреблять на зачёте или экзамене по курсу обучения языку, но на собеседовании мне кажется очень сомнительным практическая ценность многих вопросов, а также формулировки вопросов и ответов. Я на месте кандидата на собеседовании с таким списком вопросов связался бы с руководством компании-нанимателя и поставил бы перед ним вопрос о служебном соответствии лица, которое проводит такое собеседование или внедрило его в практику процедуры найма, так как квалификация этого лица мне кажется довольно сомнительной.