Теперь по теме.
Ямерт
Думаю, при написании тестов разумнее, с моей стороны, исходить из следующего: если вы берете не студента, а человека, имеющего какой-то опыт работы, то думаю, тема тестирования должна быть напрямую связана с теми задачами, которые ему придется выполнять хотя бы на начальном этапе работы. Таким образом можно "прощупать" кандидата на предмет знаний в определенном направлении (работа с конкретными платформами, БД и т.п.).
Если на работу приходит устраиваться вчерашний студент, но весь из себя "алмаз неограненый" (типа, не работал, но писал для души на тем на сем), то здесь степень доверия, естественно, ниже. Следовательно, тест должен быть более общим (но не громоздким - это важно!). Таким, чтобы понять не только знания относительно тех специализированных областей, с которыми придется работать, но и в состоянии ли кандидат в принципе справится с поставленными задачами.
Краткое резюме: не только уровень кандидата, но и соответствие требований тем задачам, для работы над которыми принимается человек. Хотя, в большинстве случаев PHP-программист - и жрец, и игрец и т.п.
Вообще, к вопросу тестирования надо подходить очень ответственно, и никогда, ни в коем случае не принимать решение, основанное исключительно на формальных его результатах. Как, на мой взгляд, справедливо заметил
zahhar
г) попросить ответить на общие вопросы из своей практики: приходилось ли работать в команде, как разделялись роли, как решалить споры, какие средства разработки и тестирования использовались, верит ли в торжество ООП на фронте вебдева на PHP, как относится к нетрадиционной медицине, верит лив Бога и жизнь после смерти, случалось ли наблюдать НЛО.
Универсальный тест, думаю, написать в принципе невозможно. Можно написать ряд тестов и выбирать их в соответствие с уровнем человека, т.е. применять индивидуальный подход к каждому кандидату. В таком случае результаты тестирования будут оправданными. Т.е. по-хорошему нужна совместная работа профессионального кадровика и составителя тестов.