Программа на PHP при собеседовании

Ямерт

The Old One
Программа на PHP при собеседовании

Привет!

Составляю вопросы по PHP для кандидатов на работу. Заодно подумал, что было бы нелишним придумать задание, где надо было бы не просто написать/выбрать правильный ответ, или написать своё мнение - а написать маленькую (или не очень) программку.

Хочу спросить совета у умных людей, которые занимались составлением таких тестов для приёма на работу: вы включали туда просьбу написать свой код? Если да, то не могли вы поделиться примерами?
 

Cid

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

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

Антон

Новичок
меня спросили ! один SQL запрос написать. все...

счас сижу без php шной работы - в C# для .NET пишу.
а ведь брали на PHP Developer'a


юмор, да. а мне хоть не плачь.
 

Ямерт

The Old One
Cid - если его берут на должность программиста, то я не вижу ничего оскорбительного. Мы раньше тоже набирали без тестов, теперь набили шишки.
 

confguru

ExAdmin
Команда форума
Тесты на выбор (срок неделя)

1) Регистрация пользователя и изменения его данных
2) Построение всех файлов в каталоге (с вложеностью)
3) Парсинг HTML в другой HTML
 

Кром

Новичок
>(срок неделя)

"Ну вы блин даете!" (с)

На мой взгляд, для проверки знаний достаточно пригласить кандидата, посадить его за компьютер и предложить ему ответить на вопросы из того же specialist.ru.
А дальше - кто больше баллов набрал.
 

IBSN

Новичок
лучше тогда с пользой, отправить его на phpclub в форум профи... вот там и пускай отвечает на темы по выбору работодателя... плюс будет вопросодавателю... заодно и знания проверятся...
 

Cid

...двинутый новичок
На мой взгляд, для проверки знаний достаточно пригласить кандидата, посадить его за компьютер и предложить ему ответить на вопросы из того же specialist.ru.
Ну, знаете ли, в таком случае проверять нужно азы - понимание принципов подходов к программированию, а синтаксис отдельных функций - извините, для этого есть справочники и хэлп.

Вот вы можете навскидку сказать, в чем разница порядка аргументов между mysql_query() и pg_query() ? Вот-вот, и если например это выбирать в качестве теста, то он будет нерелевантен.

Отмечу: речь идет не о том, как отсеивать "лохов", а ровно наоборот - человек который претендует на должность программиста, в случае если в реальных условиях (кстати исп. срок никто не отменял) он облажается будет выглядеть глупо в первую очередь перед самим собой.

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

Что это? Профанация?

Еще (сугубое IMHO) - язык программирования не важен - от C++ через PHP и до VB - главное четко понимать принцип, идеологию, если хотите. А дальше - желание научиться и man. Вот таких претендентов надо набирать (опять же, IMHO), а писать обработчики форм можно и за день научиться. Они окупятся, проверено на собственном опыте =)

Еще раз простите за оффтопик, не баньте :)
 

Buteo

[CDR/DVP]
срок не указываеться, но учитываеться:
нужно сделать: добавление/вывод/удаление магазинов и книг продаваемых в них (ну там сортировка, фильтраци и другие мелочи)
смотрелась работа с ООП и работа с БД...
 

Кром

Новичок
Cid, за некоторым исключением, вопросы на указанном сайте подобраны вполне грамотно.

>Отмечу: речь идет не о том, как отсеивать "лохов", а ровно наоборот

"Лохов" отсеивать все равно придется, потому что на моей практике, они составляют большинство. В первую очередь это связано с тем, что в городе где я живу найти работу такого рода очень проблематично. На место рядового PHP-программиста обычно претендует более 50 человек (и это при том что достаточно подать одно обьявление).
Просматривать тонны кода, который напишут такие горе-программеры, как рекомендует admin, смысла нет.
Это применимо только в том случае, когда прошел предварительный отсев и осталось 4-5 кандидатов. С ними уже може поговорить ведущий программист, и все станет ясно.
 

Макс

Старожил PHPClub
1. пример обработки небольшой формы с записью данных в БД.
2. код для авторизации юзера.

такие скрипты можно написать быстро (максимум пол-часа, ну или 40 минут, если учесть что кандидат волнуется) и ИМХО они могут говорить об опытности кандидата.

+ можно дать какой-нибудь заведомо нерабочий код и попросить отладить его
 

confguru

ExAdmin
Команда форума
Просматривать тонны кода, который напишут такие горе-программеры, как рекомендует admin, смысла нет.
Где там тонны? 18к от силы..
Смотрится стиль кодирования.
Способность претендента правильно оценивать и
решать задачи
Задаются вопросы:
почему написано так а не иначе
что будет если слово с качычкой и т.д.
Еще важный вопрос - способность к адаптации
и кодирования в едином стиле принятом в компании

P.S. Про хохмы на собеседовании я уже расказывал...
про поиск пароля по LIKe, то что куки нельзя подделать..
 

Ямерт

The Old One
человек который претендует на должность программиста, в случае если в реальных условиях (кстати исп. срок никто не отменял) он облажается будет выглядеть глупо в первую очередь перед самим собой.
Да, будет. А кто ему виноват? Злые дядьки-наниматели? ;)
Тесты при приёме на работу - нормальная практика.

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

admin - на неделю не надо. Надо задание минут на 15-20. Быстро пишется, быстро проверяется.

Спасибо всем, особенно Максиму Матюхину!
 

fisher

накатила суть
Cid: Вам оскорбительно, что манагер хочет понять, способны ли Вы быть адекватным уровню разработчиков в его конторе?.. А то, что Вас приглашают в гости а не едут к Вам - Вам тоже оскорбительно?... Портфолио Ваше нужно чтоб люди решили-таки с Вами поговорить. всё. дальше Ваше портфолио никого не интересует - интересует только профессиональные качества, кои либо есть, либо одно из двух. Они проверяются в беседе.

имхо, наиболее правильной стратегией с учетом ограниченного времени является следующая. код кандидат предоставляет сам - какой ему нравится. вы смотрите его стиль и тд и решаете звать/не звать. на интервью берется два-три срипта/куска кода/SQL/whatever. и для них конкретно сотавляются вопросы: что делает, что будет если поменть "это" на "это", и что надо добавить чтобы "то". а большое "домашнее" задание имеет смысл для соотв. должности, когда у человека будет соответствующая мотивация.

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

zahhar

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

Хорошую методику, на мой взгляд, использует Студия Артемия Лебедева, Яндекс и др. компании. Они просят претендента прислать своё резюме и портфолио вместе с решенным тестовым заданием и ответами на ситуационные управжнения.

Что касается самих заданий, то я бы предложил

а) прислать код класса или ф-ции (любой - никаких критериев, кроме минимального/максимального размера кода в строках, например 50-100 строк). Это поможет узнать, как программист относится к своему коду. Сможете ли вы понять, что делает этот код? Достаточно ли он комментирован? Прослеживается ли логика в названии переменных? Эффективно ли используются синтаксические конструкции, характерные для данного ЯП? Причем не нужно заранее говорить, какой именно код прислать и как его офромить. Пусть над этим думает сам кандидат. Попросив прислать код, вы его ничем не обидете, не создадите дополнительного стресса и позволите приявить собственную инициативу.

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

в) Представть алгоритм решения оперделенной задачи или составить структуру базы данных. Вариация - оптимизировать имеющийся алгоритм или структуру БД. Естественным языком описывается задача (например, защитить регистрационную форму от роботов - и подробно описать все нюансы гипотетической системы, для которой нужна эта форма) и ставится проблема (есть шиномонтажная мастерская, в которой нужно организовать учет произведенных работ - далее описать предметнубю область - виды работ, персонал мастерской, что нужно хранить и какие отчеты хочет видеть гипотетическое начальство). Затам просится нарисовать блок-схему решения задачи (составить алгоритм решения на формальном языке, но не на реальном ЯП), в блок-схеме указать, с помощью каких механизмов конкретного ЯП будут решены те или иные подзадачи (тут - снссиями, тут можно в кукисах передать, а тут используется md5). Для БД - нарисовть сущность-связь или просто структуру БД с основными полями, попросить прокомментировать, какие индексы/ключи и какие типы полей кандидат предложил бы использовать, если бы СУБД для данной задачи была конкрутная СУБД.

г) попросить ответить на общие вопросы из своей практики: приходилось ли работать в команде, как разделялись роли, как решалить споры, какие средства разработки и тестирования использовались, верит ли в торжество ООП на фронте вебдева на PHP, как относится к нетрадиционной медицине, верит лив Бога и жизнь после смерти, случалось ли наблюдать НЛО.

Вот примерно так я себе представляю отбор кандитдатов.
 

Screjet

Новичок
На одного кандидата будет затрачено слишком много драгоценного времени спеца.. Не рентабельно.
 

neko

tеam neko
код надо давать писать ОБЯЗАТЕЛЬНО
причем чтобы человек писал сразуже
и желательно на бумаге, а не на доске
чтобы стереть было трудно

просить что-то прислать это никого не отсеет, наоброт
увеличит количество школьников-дебилов, которым вся семья помогает уроки делать

что касается яндекса вы давно не были на яндексе

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

Screjet

Новичок
Вобщем както делал так:

Давал потенциальному сотруднику модуль(скрипт) с заведомо логической ошибкой, объяснял, что этот модуль делает, и просил найти и справить ошибку..

А можно чтото типа тестов сделать из готовых скриптов с разным уровнем сложности.
 

Cid

...двинутый новичок
если у тебя есть опыт ты функции помнишь без мана
причем эта память прямо пропроциональная опыту
Извини, все же не соглашусь - пример: если человек имеет опыт работы с БД типа MySQL, или, там, Postgres, реализовал на них ряд работающих проектов, то можно предположить, что принцип работы с БД он понимает. А придет на собеседование - предложат написать код под работу с Orcale - то же самое, но функции используются другие, а он и не заглядывал в них (ну или только для интереса, посмотреть что они есть, но без запоминания). Что, хочешь сказать, не разберется при необходимости при реальной работе?

P.S.
ты ври, но не завирайся
??! это к чему?
 
Сверху