Комментарии 364
вполне тривиальные задачи – никакого rocket science... на zend certified engineer МНОГИМ сложнее, хотя и там в принципе только воздух
0
НЛО прилетело и опубликовало эту надпись здесь
а если я не помню, что делает var_dump – это очень плохо? я к счастью уже не php-программист, но все равно интересно.
оффтопик. а у вас не возникало желания продолжить мастер-классы работы в mac os x? ну там как вы используете OmniFocus, Quicksilver и т.п. Вот лично вы, крайне субъективно. Ваш личный инструментарий. На самом деле не так много информации такого типа, до всего приходится доходить самому. Вы как то писали про GTD в с помощью quicksilver, bbedit и еще чего-то. Было очень интересно, правда.
оффтопик. а у вас не возникало желания продолжить мастер-классы работы в mac os x? ну там как вы используете OmniFocus, Quicksilver и т.п. Вот лично вы, крайне субъективно. Ваш личный инструментарий. На самом деле не так много информации такого типа, до всего приходится доходить самому. Вы как то писали про GTD в с помощью quicksilver, bbedit и еще чего-то. Было очень интересно, правда.
+1
Ну не знаю как насчет таких задачь, я например больше предпочитаю посмотреть код написаный самим програмером, пускай объяснит что да как. :)
+8
т.е. на собеседование вы просите принести часть рабочего проекта, возможно чужого?
0
да хоть чужого, главное чтобы понимал как "оно" работает
+1
Пробовал и такое. Получается в итоге совместный разбор скрипта - "Ты енто панимаищь?"
0
Вот объясните как такое можно было написать:
function getMe($string){
$this->var = $string;
}
Получать me, при это передавая строку и присваивая var эту строку?
Какой-то извращенный и не понятый getter?
Или это пример чужого плохого кода?
function getMe($string){
$this->var = $string;
}
Получать me, при это передавая строку и присваивая var эту строку?
Какой-то извращенный и не понятый getter?
Или это пример чужого плохого кода?
+1
Это - донельзя упрощённая задача на понимание приватов и наследований.
0
Лучше бы уж так:
function setMe($value){
$this->me = $value;
}
А то "кобасит" не по-детски.
function setMe($value){
$this->me = $value;
}
А то "кобасит" не по-детски.
+2
и тем не менее такой финт с именованием может отвлечь кандидата от основной задачи
0
уж извините, но похоже что в объявлении метода вы поменяли его имя, а вот при вызове так и остался getMe(). Такое еще больше сбивает ;)
0
Мне почему-то кажется, что профессиональный программист давным-давно забыл школьные годы и вряд ли ответит на подобного рода вопросы. "Вам шашечки или ехать?" ©
-5
Профессиональные к нам, к сожалению, не ходят=(
0
если профессиональный программист не имеет понятия о том, как хранятся переменные в пхп и как они приводятся к типам, то грош цена его профессионализму
+10
Во!)
0
Не имеет понятия, или забыл в момент собеседования?
Я так понимаю что справочником пользоваться в этот момент нельзя?
Я так понимаю что справочником пользоваться в этот момент нельзя?
-1
есть такая строчка магическая в C, очень хорошо в тестированиях C-программистов можно использовать:
а для PHP… даже не знаю
while (*s++ = *t++);
Кто с ходу вспомнит, что она делает? =)а для PHP… даже не знаю
+1
(str|mem|чтотоеще)cpy?)) если правильно помню (на сях ничего не писал уже давно...) ;) с ходу вспомнил =)
0
Наверное просто строка t присваивается s
0
Null-terminated строку копирует, я думаю. Вообще, если не угадывать, то в этом примере ещё нужно помнить приоритет операторов, чтобы правильно ответить. За n-лет программирования на плюсах я их так и не запомнил, если нужно приходится в MSDN набирать "operator precedence".
+5
да, верно, копирование строки.
0
очень просто, хоть и выглядит некрасиво, я строки так всегда копировал :)
0
Я тоже когда-то гонял программистов всякими подобными тестами. Потом перестал.
Потому что не хочу чтобы в проектах появлялись хитрые куски кода. Я пришел к выводу, что чтобы проект жил, код должен быть ясный, тупой, и написанный как по рельсам ( нет, я не про Rails )
Я пришел к выводу что не нужно никакой локальной сверхэффективности, компактности, скорости. Потому что если что то тормозит, или занимает много места - то оптимизация этого - отдельная задача, которую решать надо стратегически, а не тактически. Например не писать вычислялку чего-то на 10% быстрее, что по мере роста нагрузки все равно окажется бесполезным, а кэшировать или хранить результаты вычислений.
Единственное что оказалось действительно необходимо в реальных разработках - легкость понимания чужого кода. Его ясность. Поэтому я просил показать рабочие примеры или написать тестовое задание. Господи, да какая разница, помнит человек какой-нибудь спецнюанс построения регекспов или нет, в реале он может 10 раз поменять этот регексп, пока он не заработает.
Хуже будет, если весь код будет требовать для понимания знания всех тонкостей языка. Вот это вилы. В какой-то момент может оказаться так, что людей, которые могут его сопровождать, просто не найти.
Еще я бы посоветовал вот что - при собеседовании обязательно обращайте внимания на ощущения от общения с человеком. Вам же с ним работать годы своей жизни, которая не бесконечна.
Потому что не хочу чтобы в проектах появлялись хитрые куски кода. Я пришел к выводу, что чтобы проект жил, код должен быть ясный, тупой, и написанный как по рельсам ( нет, я не про Rails )
Я пришел к выводу что не нужно никакой локальной сверхэффективности, компактности, скорости. Потому что если что то тормозит, или занимает много места - то оптимизация этого - отдельная задача, которую решать надо стратегически, а не тактически. Например не писать вычислялку чего-то на 10% быстрее, что по мере роста нагрузки все равно окажется бесполезным, а кэшировать или хранить результаты вычислений.
Единственное что оказалось действительно необходимо в реальных разработках - легкость понимания чужого кода. Его ясность. Поэтому я просил показать рабочие примеры или написать тестовое задание. Господи, да какая разница, помнит человек какой-нибудь спецнюанс построения регекспов или нет, в реале он может 10 раз поменять этот регексп, пока он не заработает.
Хуже будет, если весь код будет требовать для понимания знания всех тонкостей языка. Вот это вилы. В какой-то момент может оказаться так, что людей, которые могут его сопровождать, просто не найти.
Еще я бы посоветовал вот что - при собеседовании обязательно обращайте внимания на ощущения от общения с человеком. Вам же с ним работать годы своей жизни, которая не бесконечна.
+39
профессиональный программист тем и отличается от новичка, что он простым кодом решает сложные задачи, а не наоборот :)
вроде эта мысль где-то на хабре уже освещалась
вроде эта мысль где-то на хабре уже освещалась
+2
Все правильно! Сам кода-то не прошел собеседование на котором меня завалили вопросами по нюансам php. И прошел следующее же собеседование, где мне нужно было сделать мини задиние по спецификации, а потом внести в него какие-то изменения "на лету".
+2
Согласен на 100% :)
0
В сущности, проще сказать, что важно умение применять теорию на практике, а не знать все нюансы теории, которые все равно в большинстве случаев не понадобятся.
0
НЛО прилетело и опубликовало эту надпись здесь
эээ .. 5 ? правильно ?
0
вот честно это бред, сколько программлю не разу таким не пользовался и не буду.
0
ошибка синтаксическая будет :)
0
а есть еще такая
$a = 1;
$b = 2;
$c = $a+++$b;
+2
Это пи;№"ц, а не задача =) Хоть бы скобки были $c = $a + (++$b);
0
или $c = ($a++) + $b
Неужели вы считаете это действительно полезно задачей?
Неужели вы считаете это действительно полезно задачей?
0
со скобками любой может :)
можно еще к примеру найти способ поменять значения двух переменных местами, без использования третьей переменной.
это для эрудитов. реальной пльзы от занния решения тут нет. всего лишь трюк, не более того.
можно еще к примеру найти способ поменять значения двух переменных местами, без использования третьей переменной.
это для эрудитов. реальной пльзы от занния решения тут нет. всего лишь трюк, не более того.
0
$a += $b;
$b = $a - $b;
$a -= $b;
0
я имел ввиду универсальный способ - который будет работать для любых скалярных переменных
0
Тогда прошу прощения :)
Будет интересно увидеть от Вас решение.
Будет интересно увидеть от Вас решение.
0
list($a, $b) = array($b, $a);
+1
В перле: ($a,$b) = ($b,$a);
А в PHP как обычно...
А в PHP как обычно...
0
Python, если не изменяет память:
a,b=b,a
Кортежи рулят
a,b=b,a
Кортежи рулят
0
НЛО прилетело и опубликовало эту надпись здесь
да из С, там было 5 плюсов. в примере убирал пока не запустится
решение можно узнать только если знаешь как интерпретатор разбирает данное выражение
решение можно узнать только если знаешь как интерпретатор разбирает данное выражение
0
это http://en.wikipedia.org/wiki/Undefined_b… в с++
А вобще приминительно к php это вопрос на кругозор :)
А вобще приминительно к php это вопрос на кругозор :)
0
$c будет равно 3. это все равно что $c = ($a++)+$b;
а если так $c = $a+(++$b); будет 4
а если так $c = $a+(++$b); будет 4
-1
копирует строку ... сходу ...
0
Когда-то я восхитился с++, когда увидел разбор этого примера у Страуструпа.
0
За такую строку надо очень сильно бить того, кто её написал. Это стандартный пример у Страуструпа, и если помните проблему с RPC у Microsoft, то она была у них именно в этой конструкции. А что если этого нуля не будет или t будет больше чем s... Я бы лучше узнавал у кандидата, где здесь потенциальная ошибка безопасности и как её можно исправить.
0
Когда я принимал людей я, в качестве одной из тестовых заданий, давал задачу на построение дерева коментариев + генератор N коментариев и отпускал домой. Когда чел приходил, я увеличивал N на 3 порядка и спрашивал почему тормозит =) В процессе общения выяснялось что это за чел
ЗЫЖ Кстати, я бы не решил бы задачу номер 2 (я смог бы только угадать правильный ответ =) За 6 лет ini_set мне ни разу не пригодилась
ЗЫЖ Кстати, я бы не решил бы задачу номер 2 (я смог бы только угадать правильный ответ =) За 6 лет ini_set мне ни разу не пригодилась
+1
Ну эта задача на понимание глобальных массивов=)
0
Скорее решение этой задачи покажет как чел умеет оптимизировать MySQL (а ему нужно сообразить, что рекурсивно эту задачу делать нельзя и исходя из этого соображения он должен придумать правильную структуру таблицы с коментами) + конечно, он должен придумать как это дерево хранить в массиве и как заполнять этот массив =)
0
имхо хорошая задача.
а пользоваться поиском соискателям даете, или расчитываете что они все помнят?
а пользоваться поиском соискателям даете, или расчитываете что они все помнят?
+1
Что они будут искать?=) Решение плитки?+)
А так - рядом стоит компьютер. Если у человека хватает наглости - он ищет)
А так - рядом стоит компьютер. Если у человека хватает наглости - он ищет)
0
Мне кажется, что если чел не помнит какую-то мелочь (синтаксис или название функции), и знает где и как это найти, то можно считать, что он знает матчасть.
+6
+1
0
НЛО прилетело и опубликовало эту надпись здесь
На листках проводить решения - как раз нормальный подход, но в этом случае нужно смотреть на алгоритмы и/или дизайн, а никак не на тонкости синтаксиса языка...
0
Нет, часть тестирования стоит проводить на листике.
Но это явно должно быть не тестирование знания синтаксиса языка и названий библиотечных функций.
На мой взгляд стоит давать какую либо простую задачу на составление алгоритма, но опять же не стоит требовать от человека точно знать, что такое qsort и писать его на листке!
Но это явно должно быть не тестирование знания синтаксиса языка и названий библиотечных функций.
На мой взгляд стоит давать какую либо простую задачу на составление алгоритма, но опять же не стоит требовать от человека точно знать, что такое qsort и писать его на листке!
0
Да, задачи с деревьями очень показательные - сразу можно понять с малой вероятностью ошибится - работал ли программист с большими проектами. Деревья есть практически в любом веб-проекте, но только в высоконагруженных возникает необходимость их оптимизировать.
Все задачи кроме второй нормальные, но явно не достаточные для определения компетентности и способности испытуемого. Сам тоже даю тест с подобными заданиями на знание пхп, баз данных, безопасности и внимательности.
Все задачи кроме второй нормальные, но явно не достаточные для определения компетентности и способности испытуемого. Сам тоже даю тест с подобными заданиями на знание пхп, баз данных, безопасности и внимательности.
0
И чуваки, конечно же, выдергивали дерево рекурсивно... ;)
0
Кто не знает как это делать кроме рекурсии - тому сюда http://dev.mysql.com/tech-resources/arti…
+1
Давно интересует, кто нужен авторам данных тестов.
Программисты или интерпретаторы?
Программисты или интерпретаторы?
+29
Соглашусь с вами. Тут ищутся интерпретаторы.
0
Не соглашусь, задачи тривиальные и очень часто используемые, sql иньекции, глобальные массивы, ooп (кстати, на этой задаче я засыпался, со 100% гарантией ответ дать не смогу), приведение типов.
Человек который не знает об нъюансах этих вещей творит код содержащий кучи трудноотслеживаемых ошибок. И опять же это вопросы ответы на которые приходят в основном с опытом, когда ты делаешь эти самые ошибки и исправляешь их. Согласитесь мало кто будет хорошо разбираться в безопастности не помучившись всласть с основами, и наоборот, знание безопастности говорит что человек достиг определенного уровня во всей области.
НО. Все эти задачи только на кодинг(ну за исключением ооп). Вам нужны кодеры или профессиональные программисты. Может добавить задачку на проектирование и "отпустить домой"?
Человек который не знает об нъюансах этих вещей творит код содержащий кучи трудноотслеживаемых ошибок. И опять же это вопросы ответы на которые приходят в основном с опытом, когда ты делаешь эти самые ошибки и исправляешь их. Согласитесь мало кто будет хорошо разбираться в безопастности не помучившись всласть с основами, и наоборот, знание безопастности говорит что человек достиг определенного уровня во всей области.
НО. Все эти задачи только на кодинг(ну за исключением ооп). Вам нужны кодеры или профессиональные программисты. Может добавить задачку на проектирование и "отпустить домой"?
0
А человек знающий в идеале эти нюансы творит много трудноотлаживаемого кода :)
Вопросы тянут на соревнования какие-нибудь, а не выявление знаний. Ну кто же будет программировать без справочника, все же не упомнишь.
Вопросы тянут на соревнования какие-нибудь, а не выявление знаний. Ну кто же будет программировать без справочника, все же не упомнишь.
+1
Я думаю, нужно давать две задачки ;)
Для полноты картины, что называется. Иначе за таким спецом самому придется все перепроверять и переписывать.
Для полноты картины, что называется. Иначе за таким спецом самому придется все перепроверять и переписывать.
0
+1 :))) в точку.
-1
Любую задачку из трёх можно легко решить на лету, так сказать. Любой программист - уже немножко интерпретатор.
+1
нужно понимать как работает то, что вы пишите :)
0
великолепный комментарий :)))
0
Задача с SQL инъекцией единственная стоящая.
Я сам не тестировал, но я бы попросил реализовать паттерн Singleton, например. Это актуально и не слишком заумно, а register_globals - это уже устарело, как мне кажется.
А вот как отдать 404 заколовок с ходу я и не вспомню - по-моему, это справочная информация.
Я сам не тестировал, но я бы попросил реализовать паттерн Singleton, например. Это актуально и не слишком заумно, а register_globals - это уже устарело, как мне кажется.
А вот как отдать 404 заколовок с ходу я и не вспомню - по-моему, это справочная информация.
+3
Это - работа с браузером. header('HTTP/1.1 404 Not Found'); - это залог любого SEO как минимум.
Насчет регистер-глобалз - это показательные условия php для исполнения.
Насчет регистер-глобалз - это показательные условия php для исполнения.
0
И что, содержание подобных строчек в уме делает человека хорошим программистом?
+3
Что такое HTTP и его код ответа, какой код ответа указывает отсутствие документа и как HTTP-заголовки устанавливаются в PHP веб-программист знать обязан.
0
Я вот честно не знал как правильно писать эту строчку. Но сейчас ради интереса ввел в гугле "send 404 php" и за полминуты узнал всё что нужно, плюс нашел несколько готовых классов для обработки любых ошибок, что, как мне видится, намного полезнее заученной строчки.
0
обучаемость - несомненно большой плюс.
но обычно в такой ситуации понимаешь что кандидат не имел опыт работы с этим прежде, либо опыт не значительный. Т.е. подводных камней не знает, и начами баги не отлаживал - это еще только предстоит (сразу после того как найдет всю необходимую информацию).
но обычно в такой ситуации понимаешь что кандидат не имел опыт работы с этим прежде, либо опыт не значительный. Т.е. подводных камней не знает, и начами баги не отлаживал - это еще только предстоит (сразу после того как найдет всю необходимую информацию).
0
В такой ситуации понимаешь знает ли он строчку 404 или нет.
0
а почему вы делаете акцент на "заголовок 404", а к примеру не на "отдать заголовок"? :)
найдутся кандидаты которые не знают не только как отдать заголовок, но и зачем. я не в коем случае не защищаю и не ругаю примеры. нужно просто иметь ввиду для какого уровня специалиста это задание. для новичка проверить знает ли он про заголовки — вполне уместно.
найдутся кандидаты которые не знают не только как отдать заголовок, но и зачем. я не в коем случае не защищаю и не ругаю примеры. нужно просто иметь ввиду для какого уровня специалиста это задание. для новичка проверить знает ли он про заголовки — вполне уместно.
0
А еще желательно знать, что PHP может быть установлен, как модули или как CGI, а в CGI нельзя устанавливать код ответа — нужно посылать "Status: 404 Not Found", чтобы апач сам с ним разбирался.
+1
И это, к сожалению, знает так мало народу=)
Помню, как сам в первый раз с этим впёрся - еле нашёл решение, но сам нашёл=)
Помню, как сам в первый раз с этим впёрся - еле нашёл решение, но сам нашёл=)
0
А если я никогда не использовал CGI и не собираюсь, зачем мне это знать?
-1
А хороший программист обычно держит в памяти примерный список функций документации, а такие вещи как в примерах, когда страниц 1000 напишешь с нуля, уже сами в памяти оседают.
К АВТОРУ: может деньги мааленькие предлагаете? Меньше чем за 1500E хорошего программера не найдете :)
К АВТОРУ: может деньги мааленькие предлагаете? Меньше чем за 1500E хорошего программера не найдете :)
0
Нормальные предлагаем=) Нам и не нужен особенно хороший. Скорее кодер нужен - ковыряться в чужих движках.
0
Для ковыряния в чужих движках нужен куда более грамотный (и потому дорогой) программист, чем для писания кода с нуля. Так что извините...
0
Не факт что оседают. Я например никогда не помню последовательность параметров в функциях, и мне это ни разу не помешало. Для этого есть документация и автокомплишн, а лишние сведения засоряют мозг.
+1
да, я-бы тоже порылся в вики, хотя там отдается вроде в header('404/HTTP 1.1')
0
По-моему четвёртая задача вообще не решаемая, т.к. в ней ошибка.
>$query = "SELECT anons,text FROM news WHERE id='".$_GET['x']."'";
>$res = mysql_query($res);
переменная $res не определена ;)
>$query = "SELECT anons,text FROM news WHERE id='".$_GET['x']."'";
>$res = mysql_query($res);
переменная $res не определена ;)
+1
>> я бы попросил реализовать паттерн Singleton
Этот патерн вообще не имеет нормальной реализации для PHP class X extends Singleton{}
$x = X::getInstance();
В PHP 5 с чем-то добавили мега-костыль get_called_class() для того чтобы Singleton::getInstance() получить имя класса экземпляр которого надо создать. Есть люди которые пытались обойти отсутствие этой ф-ции с помощью BackTrace-а %-)
По этому не стал бы я про синглтоны...
Этот патерн вообще не имеет нормальной реализации для PHP class X extends Singleton{}
$x = X::getInstance();
В PHP 5 с чем-то добавили мега-костыль get_called_class() для того чтобы Singleton::getInstance() получить имя класса экземпляр которого надо создать. Есть люди которые пытались обойти отсутствие этой ф-ции с помощью BackTrace-а %-)
По этому не стал бы я про синглтоны...
0
К сожалению часть текста съелась:
Этот патерн вообще не имеет нормальной реализации для PHP < = 5.2. Если кто-то владеет секретным кодом, поделитесь - буду очень благодарен.
Под "нормальной" реализацией я понимаю такой варриант:
...
Этот патерн вообще не имеет нормальной реализации для PHP < = 5.2. Если кто-то владеет секретным кодом, поделитесь - буду очень благодарен.
Под "нормальной" реализацией я понимаю такой варриант:
...
0
зачем тебе синглетон как класс? сделай его через метод, всегда хватало такого способа
0
Потому что это в некоторой степени противоречит концепции ООП, т.к. это приводит к дублированию кода.
В итоге мы получим множество одинаковых методов, которые, если их захочется модифицировать, придётся менять все.
Например, банально, мне захотелось получить статистику используемости классов и в методе создания синглтона я мог бы добавить метод записи в лог.
Пример два: у меня есть множество классов для работы с таблицами БД. Каждый подобный класс наследуется от одного потомка. Поняв, что эти классы создаются слишком часто я мог бы преобразовать их в синглтоны простым наследованием базового класса от класса Singleton, а тут мне придётся делать синглтон из каждого класса. Опять же я не смогу произвести наследование от этих классов, т.к. они после этого перестанут быть синглтонами, если я не перегружу в них метод getInstance().
Я в результате пришел к достаточно некрасивому решению, но который исправляет указанные недостатки. Вместо
new ClassName() я пишу XXX::getInstanceOf('ClassName'), где XXX - глаобальный статический класс который отвечает за создание синглтонов...
Во общем, по этому, я бы не стал просить на собеседовании изобретать синглтоны
В итоге мы получим множество одинаковых методов, которые, если их захочется модифицировать, придётся менять все.
Например, банально, мне захотелось получить статистику используемости классов и в методе создания синглтона я мог бы добавить метод записи в лог.
Пример два: у меня есть множество классов для работы с таблицами БД. Каждый подобный класс наследуется от одного потомка. Поняв, что эти классы создаются слишком часто я мог бы преобразовать их в синглтоны простым наследованием базового класса от класса Singleton, а тут мне придётся делать синглтон из каждого класса. Опять же я не смогу произвести наследование от этих классов, т.к. они после этого перестанут быть синглтонами, если я не перегружу в них метод getInstance().
Я в результате пришел к достаточно некрасивому решению, но который исправляет указанные недостатки. Вместо
new ClassName() я пишу XXX::getInstanceOf('ClassName'), где XXX - глаобальный статический класс который отвечает за создание синглтонов...
Во общем, по этому, я бы не стал просить на собеседовании изобретать синглтоны
+1
Если еще не читали, рекомендую посмотреть статью Джоэла о проведении собеседования. Очень полезно! :)
+6
собственно, рекомендую тест для программистов от мамбы (очень хорош):
http://www.corp.mamba.ru/test/index.phtml
а еще можно поискать различные он-лайн сертификации, и если оной у человека нет - дать комп и заставить пройти.
http://www.corp.mamba.ru/test/index.phtml
а еще можно поискать различные он-лайн сертификации, и если оной у человека нет - дать комп и заставить пройти.
+2
я не минусовал, но ответить все таки решил. Тест от Мамбы не очень хорош. Я работаю в linux, но такие мелочи, как dd dt df и прочее просто не запоминаю. Если мне что-то надо сделать - я нахожу ответ, использую, и почти тут же забываю (это не относится к работе, линукс вопросы и свн подковырки больше на другую специализацию тянут. работать надо, а не выеживаться знанием короткого варианта svn checkout).
0
Он слишком заумный и шибко много в нём не ахти как нужного, по сути.
0
Спасибо, потешил эго)
0
Я как-то давно уже проходил этот тест. Он мне наименование "крутой PHP программист", поставив 378 баллов. Судя по вопросам, там нужен программист на PHP, который в будет в команде (вот зачем нам SVN) работать над каким-то заточенным под Linux проектом =)
0
Там мало SQL, зато много Линукс консоли
0
Я ради интереса заставил жену этот тест пройти) Она ничего не смыслит в линуксе и программировании, она отвечала исходя из логики дизайнера:) Немного не дотянула до хорошего программиста, набрав 116 балов
0
1.Задача номер раз.
$x == '1' да
$x == true да
(bool)$x === true да
$x === true нет
(int)$x === true нет, === есть равно с проверкой типа. а $x - инт
не считаю вопрос интересным, хотя лично я долгое время оператора === не знал. В сях его нету.
2.Задача номер два
Оторвать руки тому кто писал код. Регистер глобалс\ини сет - ЗЛО.
Вы б еще бы magic_quotes \ sybase врубили и спросили.. а что происходит то?
3.Задача номер три
Опять же зло, но правильное зло.
Что будет в каких версиях php не знаю. Что будет в сях - в крови и спином мозге.
4.Задача номер четыре
http://site.ru/?x=1' AND 1 ? :)
Решение брать $_GET['x'] через addslashes( для текстовых значений ) или intVal лично я считаю не правильным
у меня это бы выглядело бы как
$res = MQp("i","SELECT anons,text FROM news WHERE id=?",$_GET['x']);
Уж сколько лет живет(цветет и пахнет!) mysql_i а люди все торозят.
Вердикт : уважаемый - берите на работу Си программистов. В Сях препаред статемтами пользоваться часто удобнее чем собранными запросами, и чертовски быстрее они работают. И люди привыкают к правильному решению.
$x == '1' да
$x == true да
(bool)$x === true да
$x === true нет
(int)$x === true нет, === есть равно с проверкой типа. а $x - инт
не считаю вопрос интересным, хотя лично я долгое время оператора === не знал. В сях его нету.
2.Задача номер два
Оторвать руки тому кто писал код. Регистер глобалс\ини сет - ЗЛО.
Вы б еще бы magic_quotes \ sybase врубили и спросили.. а что происходит то?
3.Задача номер три
Опять же зло, но правильное зло.
Что будет в каких версиях php не знаю. Что будет в сях - в крови и спином мозге.
4.Задача номер четыре
http://site.ru/?x=1' AND 1 ? :)
Решение брать $_GET['x'] через addslashes( для текстовых значений ) или intVal лично я считаю не правильным
у меня это бы выглядело бы как
$res = MQp("i","SELECT anons,text FROM news WHERE id=?",$_GET['x']);
Уж сколько лет живет(цветет и пахнет!) mysql_i а люди все торозят.
Вердикт : уважаемый - берите на работу Си программистов. В Сях препаред статемтами пользоваться часто удобнее чем собранными запросами, и чертовски быстрее они работают. И люди привыкают к правильному решению.
-2
думаю что ваша инъекция не сработает. Нужно не AND, а OR
0
http://site.ru/?".x=1' OR 1;DELETE FROM news;
Некоторые враперы правильно воспримут `;` как разделитель двух команд и будет бяка.
Если табличка называется не так.. ну можно попробовать инжекнуть SHOW TABLES :)
Некоторые враперы правильно воспримут `;` как разделитель двух команд и будет бяка.
Если табличка называется не так.. ну можно попробовать инжекнуть SHOW TABLES :)
-2
насчет номера три - такое, если я ничего не путаю, ввели в php5 - если человек писал с использованием ООП - ответит сразу+)
Всё остальное правильно, кроме AND=)
Всё остальное правильно, кроме AND=)
-1
Както мой препод задался интересной задачей.
class A
{
float value;
}
class B:public A
{
double value;
}
C=new B;
какую переменую вы получите по C->value;
а по (float)C->value ?
Всеже таких вот неоднозначностей надо избегать, и никогда не использовать пересекающиеся имена переменных.. ну кроме как для private.
Или вот еще один хитрый пример
void main()
{
for(int i=0;i<....){ do}
for(int i=0;i<....){ do}
}
в каких компиляторах будет еррор(или тама варинг.. не помню) на второй цикл. Какой и почему :)
class A
{
float value;
}
class B:public A
{
double value;
}
C=new B;
какую переменую вы получите по C->value;
а по (float)C->value ?
Всеже таких вот неоднозначностей надо избегать, и никогда не использовать пересекающиеся имена переменных.. ну кроме как для private.
Или вот еще один хитрый пример
void main()
{
for(int i=0;i<....){ do}
for(int i=0;i<....){ do}
}
в каких компиляторах будет еррор(или тама варинг.. не помню) на второй цикл. Какой и почему :)
0
C->value даст double, а насчет (float)C->value... будет cast double к value? потому что область видимости float value перекрыта double. Правильно?
0
А вот тут правильный ответ - как повезет :)
Вы же явно просите флоат.. И у него есть этот флоат.. Ну почему вы хорошему человеку не дать?
Что такое overloaded функции вы знаете?
А вот "кое-кто" гдето в ядре компилятора думал и о overloaded переменных.
В частности MSVS и Borland * будут выдавать разные значения.
Эх помню я магические конструкции lua_bind(boost driven) - там пока фактом работу не проверишь - и не поверишь что работает.
Господа пишите код яснее и четче!
А то люди осmминоги, потому и пробки.(bottlenecks)
Вы же явно просите флоат.. И у него есть этот флоат.. Ну почему вы хорошему человеку не дать?
Что такое overloaded функции вы знаете?
А вот "кое-кто" гдето в ядре компилятора думал и о overloaded переменных.
В частности MSVS и Borland * будут выдавать разные значения.
Эх помню я магические конструкции lua_bind(boost driven) - там пока фактом работу не проверишь - и не поверишь что работает.
Господа пишите код яснее и четче!
А то люди осmминоги, потому и пробки.(bottlenecks)
0
знаю-знаю =)
ну мы же о C сейчас? там по идее все неопределенности известны, т.к. есть четкий стандарт, в котором иногда и возникают неопределенности. нужно смотреть что в стандарте. кстати про overloaded переменные, как термин, в первый раз слышу. я думал, что термин скрытие области видимости полностью раскрывает такие случаи.
ну мы же о C сейчас? там по идее все неопределенности известны, т.к. есть четкий стандарт, в котором иногда и возникают неопределенности. нужно смотреть что в стандарте. кстати про overloaded переменные, как термин, в первый раз слышу. я думал, что термин скрытие области видимости полностью раскрывает такие случаи.
0
> А вот тут правильный ответ - как повезет :)
Бред... Он выдаст именно то, что сказал wpm1. Хочешь float от A - приведи сначала к типу A. Матчасть учить нужно. ;)
Бред... Он выдаст именно то, что сказал wpm1. Хочешь float от A - приведи сначала к типу A. Матчасть учить нужно. ;)
0
Задачи первого типа никада не любил и не понимал, ибо это не пример хорошего программирования, а вот со вторым случаем сталкивался помоему будет именно ошибка на втором цикле, следующая: переменная i уже объявлена, потому что область видимости объявления int i = 0 в первом цикле не ограничивается телом этого цикла, а вот компилятор не вспомню, но вроде GCC
0
Подобное несоответствие стандартам (то есть когда объявленная в заголовке цикла переменная имеет большее время жизни чем сам цикл) показывает визуал студия 98 года (это которая шестая). GCC же наоборот к этому относится ревностно и ограничивает время жизни переменной только циклом где она объявлена.
0
А напишите решение с sql инъекцией. Именно выполнение инъекции, а не защита от нее.
Мне что-то с ходу в голову не приходит как это сделать.
Мне что-то с ходу в голову не приходит как это сделать.
0
http://site.ru/?x=' OR '1
0
Кажется допетрил :)
0
А как вы относитесь к тестам на сообразительность? Сам то такие собеседования не проходил, но читал на rsdn что есть такая целая часть в интервью.
0
Помоему - это слишком для тестовых заданий, кроме инжекта.
Человек не машина. Есть люди с энциклопедической памятью, вот такие может и вспомнят все мелочи, на практике чаще всеравно разработчик уточняет все по спецификациям.
"Дляч какой версии PHP будет работать" лучше игнорировать. Если в проекте будет использоваться ООП, то логично предположить что >5 версии. Я, например не помню точно в какой версии - что добавлялось в php.
Человек не машина. Есть люди с энциклопедической памятью, вот такие может и вспомнят все мелочи, на практике чаще всеравно разработчик уточняет все по спецификациям.
"Дляч какой версии PHP будет работать" лучше игнорировать. Если в проекте будет использоваться ООП, то логично предположить что >5 версии. Я, например не помню точно в какой версии - что добавлялось в php.
0
Я думаю обычный человек( не энциклопедическая машина ) ОБЯЗАН это не помнить.
Забывать мусор, оставляя место под главное - это главное :)
Забывать мусор, оставляя место под главное - это главное :)
+5
А что будет не слишком для тестовых заданий? Не каждый принесёт свой код на просмотр.
В данных конкретных задачах не нужна энциклопедическая память. Среднестатический кодер сталкивается с 80% содержания задач в каждой своей программе.
В данных конкретных задачах не нужна энциклопедическая память. Среднестатический кодер сталкивается с 80% содержания задач в каждой своей программе.
0
"Не слишком" будет просто портфолио. И желание человека развиваться и осваивать новое. Я вообще против стандартных резюме.
Человек должен придти, сказать я вам нужен и доказать это во время испытательного срока. Не доказал, уходи. Просто часто бывает что подобные тесты лишают команду хорошего человека, который будет двигать весь процесс работы. Может он не мега Гуру в php, но будет подавать интересные идеи и просто хорошо реализововать то, что надо дочитывая то что необходимо.
Человек должен придти, сказать я вам нужен и доказать это во время испытательного срока. Не доказал, уходи. Просто часто бывает что подобные тесты лишают команду хорошего человека, который будет двигать весь процесс работы. Может он не мега Гуру в php, но будет подавать интересные идеи и просто хорошо реализововать то, что надо дочитывая то что необходимо.
0
А что будет не слишком для тестовых заданий?
<?='Hello World!'?> =))))
0
НЛО прилетело и опубликовало эту надпись здесь
мне кажется хорошо выяснить уровень можно спрашивая, знает ли человек, что такое паттерны, привести пример. потом спросить алгоритмы сортировки, которые знает. спросить про принципы ООП (наследование, полиморфизм, инкапсуляция). а по ответам уже будет видно, какой уровень у человека и стоит ли говорить дальше.
а вообще, возможно, правы те, кто говорят что среди пхпшников много тех, кто программировать совсем не умеет.
а вообще, возможно, правы те, кто говорят что среди пхпшников много тех, кто программировать совсем не умеет.
0
НЛО прилетело и опубликовало эту надпись здесь
паттерны ладно, но тут речь о другом уровне, но алгоритмы сортировки, извините, это бред. в php мне задача ручной сортировки не встречалась ни разу, благо функций для работы с сортировкой навалом, да и вообще такая задача редко возникает.
то же и по ООП. Вам шашечки или ехать. А если человек не помнит определение полиморфизма, что не мешает ему проектировать сложные системы. На ваш тест хорошо ответит студент отличник без опыта работы но может запросто завалится хороший программист.
то же и по ООП. Вам шашечки или ехать. А если человек не помнит определение полиморфизма, что не мешает ему проектировать сложные системы. На ваш тест хорошо ответит студент отличник без опыта работы но может запросто завалится хороший программист.
0
гм. соглашусь про сортировку, но про ООП не соглашусь. не знать что такое полиморфизм и программить это значит что в голове каша =) а отвечать можно не определением, а простым примером полиморфизма, если уж определение не помнишь.
0
надо хоть раз про методы сортировки прочитать... я тут на ZDE собираюсь сдавать - вдруг спросят :)
0
что-то удивительно-простое, но позволяющее понять уровень человека?
Один из критериев, позволяющих понять уровень человека - это нормальное знание русского языка :)
Один из критериев, позволяющих понять уровень человека - это нормальное знание русского языка :)
0
Я обычно на собеседованиях задавал 3 вопроса
1) напишите регулярное выражение (используя pcre) для удаления из строки всех слешей
2) напишите алгоритм подсчета числа посетителей страницы, а потом начинал издеваться над соискателями, говоря что через 1 IP может ходит целая компания или народ может ходить через dial-up, а куки могут быть отключены
3)
if ($x==1) echo "1";
if ($x==2) echo "2";
if ($x==3) echo "3";
в каком случае на экране я увижу "123"
1) напишите регулярное выражение (используя pcre) для удаления из строки всех слешей
2) напишите алгоритм подсчета числа посетителей страницы, а потом начинал издеваться над соискателями, говоря что через 1 IP может ходит целая компания или народ может ходить через dial-up, а куки могут быть отключены
3)
if ($x==1) echo "1";
if ($x==2) echo "2";
if ($x==3) echo "3";
в каком случае на экране я увижу "123"
0
3) $x = true; ?
0
А ответ на вопрос 3 какой?
0
Кстати, 3-я задачка вполне себе аналог 1-й из поста, но более забавная. Сначала можно в ступор впасть. ;)
+1
3 задача понравилась, красивее аналогичной в посте. Регулярки - да кто ж их помнит кроме тех кто по 10 штук в день пишет, редкая это работа регулярки, чуть что сложное я отдельнь их отлаживаю и в мануал лажу. Думаю не я один.
2 - если вы отлично разбираетесь в теме, по моему очень неплохой способ выяснить уровень, только нужно разрешить пользоваться интернетом и не спешить, заодно и умение искать информацию определите.
2 - если вы отлично разбираетесь в теме, по моему очень неплохой способ выяснить уровень, только нужно разрешить пользоваться интернетом и не спешить, заодно и умение искать информацию определите.
+1
издеваться не хорошо :) подсчитать количество пользователей невозможно, можно лишь прикинуть группируя хиты по косвенным вещам таким как ip, forwarded_for, cookie, user agent, координаты и размеры окна обозревателя.
0
Все «справочные собеседования» по-моему не дают объективной картины. Если бы мне нужен был человек, я бы спрашивал какие у него есть рабочие проекты в сети, какие нагрузки они выдерживают и какое участие в них он принимал. Согласен что должны быть основные знания у человека, но вряд ли кто пишет такой код:
error_reporting(E_ALL);И потом в нем пытается разобраться.
ini_set('error_reporting','1');
ini_set('register_globals','on');
var_dump($x);
unset($x);
ini_set('register_globals','off');
+1
всегда ненавидел тесты на знание тонкостей. Не пробовали давать какое-нибудь простое задание перед собеседованием и смотреть как оно выполнено? В конце концов наличие мозга значительно важнее знания всех тонкостей.
0
так а проблема-то в чем? надо больше чем двое? или те двое что проходят тесты - не проходят фейс-контроль? %)))
0
Если просят код то принесите что-нибудь вроде этого и думаю вопросов у собеседователя заметно убавится :))
int a=10000,b,c=2800,d,e,f[2801],g;main(){for(;b-c;)f[b++]=a/5; for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)for(b=c;d+=f[b]*a, f[b]=d%--g,d/=g--,--b;d*=b);}
int a=10000,b,c=2800,d,e,f[2801],g;main(){for(;b-c;)f[b++]=a/5; for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)for(b=c;d+=f[b]*a, f[b]=d%--g,d/=g--,--b;d*=b);}
0
За код $query = "SELECT anons,text FROM news WHERE id='".$_GET['x']."'"; нужно отрывать руки.
Как же проверка приходящих данных? Типизация.. Если id строго intовое значение - intval($_GET['x']) :-) причем еще есть вариант, что параметра нет в урл'е. Поэтому нужно проверять еще isset и, по желанию, empty.
А так задачки простые, вполне.
Как же проверка приходящих данных? Типизация.. Если id строго intовое значение - intval($_GET['x']) :-) причем еще есть вариант, что параметра нет в урл'е. Поэтому нужно проверять еще isset и, по желанию, empty.
А так задачки простые, вполне.
-3
Вы условие задачи внимательно читали? Такой запрос там специально!
0
Читал. Поэтому и говорю, что если брать программиста и давать ему такие задачи - он не увидит в них ничего плохого, новичок. Натасканный программист прокомментирует, что код ужасен и прикрепит к этому достаточное количество доводов. Давайте задачи посложнее и у самих претендентов на работу будет хорошее впечатление о месте работы.
0
А, вообще, вопрос надо по другому ставить "Перепишите этот код с учетом всех правил безопасности".
0
спасибо за формулировку)
Вы не поверите, что люди выдают!
Из последнего -
$_GET['x'] = $_GET['x']+0;
или
if(intval($_GET['x'])){....
=)
Вы не поверите, что люди выдают!
Из последнего -
$_GET['x'] = $_GET['x']+0;
или
if(intval($_GET['x'])){....
=)
0
хех, попытался выпендриться, а в результате сел в лужу
-2
Сел в лужу - это когда НЛО прилетает или комментарий раскрывать приходится.
Я не выпендривался - просто задачи кажутся мне глупыми и я это могу вполне логично обосновать. Они слишком простые для поиска профессионалов.
А насчет минусов - меня система жизни на Хабре забавляет. Верхний минус поставил Вам я и что теперь, вы в луже? :-)
Я не выпендривался - просто задачи кажутся мне глупыми и я это могу вполне логично обосновать. Они слишком простые для поиска профессионалов.
А насчет минусов - меня система жизни на Хабре забавляет. Верхний минус поставил Вам я и что теперь, вы в луже? :-)
+1
Программеры разного уровня бывают и соответственно тесты разные. Приведенный пример мне кажется для начинающего.
0
Я против теста на собеседовании. На мой взгляд, это не эффективный метод. Во время интервью у человека и так возникает стресс, так еще и нужно вспоминать то, что я всегда смотрю в мане, а помнить просто не считаю необходимым.
Когда мы принимали программиста на работу сперва рассматривалось резюме. Часть желающих отпадала на этом этапе. (рассматривали опыт работы, а не образование)
Если человек проходил по резюме, ему предоставлялось простое практическое задание и срок 1 день.
Задание:
1. Написать простую ленту новостей без админки и комментов. Просто вывод данных из таблички :)
2. Написать систему голосования с пресечением накрутки по IP
3. Написать валидатор формы по озвученным условиям (например, проверка на валидность е-маил и т.п)
4. Написать рандомизатор, который выводит из каталога с картинками рандомную картинку :))
Задания простые, так что оценивалось
1. Оформление кода - как желание работать хорошо
2. Оптимизация при решении тривиальных задач - как умение строить простые алгоритмы без нагромождения
А после оценки уже проводили личное собеседование, скорее психологическое. То есть никаких вопросов по PHP конкретно. А вопросы вроде желания работать, личных качеств, поведения в коллективе и тд
Когда мы принимали программиста на работу сперва рассматривалось резюме. Часть желающих отпадала на этом этапе. (рассматривали опыт работы, а не образование)
Если человек проходил по резюме, ему предоставлялось простое практическое задание и срок 1 день.
Задание:
1. Написать простую ленту новостей без админки и комментов. Просто вывод данных из таблички :)
2. Написать систему голосования с пресечением накрутки по IP
3. Написать валидатор формы по озвученным условиям (например, проверка на валидность е-маил и т.п)
4. Написать рандомизатор, который выводит из каталога с картинками рандомную картинку :))
Задания простые, так что оценивалось
1. Оформление кода - как желание работать хорошо
2. Оптимизация при решении тривиальных задач - как умение строить простые алгоритмы без нагромождения
А после оценки уже проводили личное собеседование, скорее психологическое. То есть никаких вопросов по PHP конкретно. А вопросы вроде желания работать, личных качеств, поведения в коллективе и тд
+7
Пара - тройка претендентов и сайт готов.
+2
Одно из самых адекватных заданий. Хотя это можно написать часа за 2-3 более менее разбирающемуся человеку.
0
НЛО прилетело и опубликовало эту надпись здесь
Мое мнение давать задачи на дом не самый хороший вариант. Когда человек решает задачу прямо на собеседовании:
1. Можно посмотреть как человек рассуждает
2. Нет соблазна дать задачу, больше чем на 10-15 минут и 20 строк кода
3. Можно оценить скорость выполнения задачи
Ну и чисто субъективно, я бы не стал решать задачу дома. Я пришел на собеседование, потратил время, силы, нервы, а работодатель не сумел хорошо подготовиться к собеседованию, чтобы проверить мои знания, и фактически предлагает мне на него по-работать дома.
1. Можно посмотреть как человек рассуждает
2. Нет соблазна дать задачу, больше чем на 10-15 минут и 20 строк кода
3. Можно оценить скорость выполнения задачи
Ну и чисто субъективно, я бы не стал решать задачу дома. Я пришел на собеседование, потратил время, силы, нервы, а работодатель не сумел хорошо подготовиться к собеседованию, чтобы проверить мои знания, и фактически предлагает мне на него по-работать дома.
+1
Позволю себе не согласиться. Человек придя на собеедование (особенно если мы берем новичка) - нервничает. Т.е. мы или видим % 60-80 от реального кпд которое он покажет при работе или человек пытается показать то, чего он незнает. Т.е существует реальный шанс упустить хорошего но "тихого" специалиста или напротив, взять того кто не "шарит". Давая задания на дом - человек сидит в привычной обстановке, и делает это так, как он это привык. Как следствие - человек решает поставленную тобой задачу любыми доступными ему средствами. =>Мы видим реальное качество человека. Тут уже можно смотреть на качестов оформления кода, на его читабельность и т.д. Плюс на выдор работодателя можно давать не примитив, а если например вам нужна "Супер-звезда" - вопросы с подковыркой.
+1
В случае, если мы ищем новичка на вырост и нам важнее оценить потенциал, чем реальный опыт, которого мало или совсем нет - согласен. Тут не нужно оценивать знания и опыт, их нет. Можно давать задачи в стиле "вывести ленту новостей", где больше кода, чем алгоритма. Задача на дом дополнительная возможность проявить себя для кандидата и дает "предмет разговора" на втором туре.
А если нужна "супер-звезда" - опытный, сообразительный сотрудник, то собеседование в разы интенсивнее, и время на решение "подковыристых" задач уже лимитировано. Тут уже варианты "расслабиться и посмотреть алгоритм в справочнике, по-гуглить" не прокатывают, если человек не готов решить несколько задач (минимум кода, максимум идеи) в течении часа - он не "супер-звезда". И фактор "обиды" для "супер-звезды" уже значительно сильнее.
Например, я проводя собеседование часто прошу написать программу переворота строки (на php). Решить такую задачу дома - элементарно. Но с человеком, который даже идеи решения не может предложить (а таких >80%, и это на позицию опытного разработчика) продолжать собеседование - трата времени.
А если нужна "супер-звезда" - опытный, сообразительный сотрудник, то собеседование в разы интенсивнее, и время на решение "подковыристых" задач уже лимитировано. Тут уже варианты "расслабиться и посмотреть алгоритм в справочнике, по-гуглить" не прокатывают, если человек не готов решить несколько задач (минимум кода, максимум идеи) в течении часа - он не "супер-звезда". И фактор "обиды" для "супер-звезды" уже значительно сильнее.
Например, я проводя собеседование часто прошу написать программу переворота строки (на php). Решить такую задачу дома - элементарно. Но с человеком, который даже идеи решения не может предложить (а таких >80%, и это на позицию опытного разработчика) продолжать собеседование - трата времени.
0
Задачи не слишком сложные. Сталкивался с подобной ситуацией при поиске верстальщика. Круг из 10 вопросов в стиле «Зачем нужен тэг такой-то, как он выводится браузерами?» (ну и иногда уточняющая специфика) успешно прошло от силы человека три. Еще от отчаяния ввел «золотые вопросы» чуть более сложного порядка: ответит человек вразумительно беру, несмотря ни на что. Остальному всё равно научу. Так что вы думаете даже будучи предупреждены о шансах таких вопросов, люди в ответ на них мямлили совсем что-то уж бессмысленное.
Болезнь отрасли. Народ просто валит в надежде «нахаляву», не ворочая мешков, срубить большого бабла. Ценных кадров так просто не приманишь, да и цену сами себе они знают и денег тоже хотят очень немало чуть продешевишь, и до свидания, даже на собеседование не придет.
Болезнь отрасли. Народ просто валит в надежде «нахаляву», не ворочая мешков, срубить большого бабла. Ценных кадров так просто не приманишь, да и цену сами себе они знают и денег тоже хотят очень немало чуть продешевишь, и до свидания, даже на собеседование не придет.
+1
Опечатка?
$res = mysql_query($res);
$res = mysql_query($res);
0
можно делать отличные сайты не зная об ===
и наоборот.
и наоборот.
+1
весьма спорное заявление
не зная основ синтаксиса - вообще сложно делать хоть что-то ;)
не зная основ синтаксиса - вообще сложно делать хоть что-то ;)
0
Неоднократно подтверждено практикой (особенно вторая часть :) )
0
Я знал что значит "===" с самого начала изучения PHP но за несколько лет, мне это ни разу не пригодилось... Хотя это уже другой вопрос)
0
в html, css и даже в javascript оператора === нет.
А с помощью них можно сделать отличный сайт :)
А с помощью них можно сделать отличный сайт :)
0
с одной стороны, это очень простые тесты, и если вы ищете php-кодеров - ваш косяк тогда в том, что тратите время на собеседоание людей, которые не в состоянии на эти вопросы ответить.
с другой стороны, если вам нужны не кодеры а девелоперы - ничего шибко мудреного в синтаксисе php нет, и такими вопросами можно отпугнуть хороших программистов, специализирующихся, скажем, на perl или python (притом что изучение php для них займет от силы месяц). тут я бы только вопрос №4 оставил
с другой стороны, если вам нужны не кодеры а девелоперы - ничего шибко мудреного в синтаксисе php нет, и такими вопросами можно отпугнуть хороших программистов, специализирующихся, скажем, на perl или python (притом что изучение php для них займет от силы месяц). тут я бы только вопрос №4 оставил
+1
ИМХО. Тестировать нужно как работает у человека мозг, а не как он знает конкретный язык. Если у человека есть мозг, то он разберется с любым языком и протоколом. А если мозга нет, то даже знание как отдать заголовок 404 - не поможет. Советую давать задания на теорию алгоритмов - решение конкретной задачи, возможно с условием - наименьший расход памяти или наилучшее быстродействие.
ps. Это конечно, если вам нужен именно программист, а не скриптописатель-кулхацкер.
ps. Это конечно, если вам нужен именно программист, а не скриптописатель-кулхацкер.
+5
Теперь я поддерживаю Вас. Гораздо большую ценность представляет человек, который может придумать реализуемую логику, а не тот, кто потом по расписанному до пункта ТЗ будет писать код.
+1
Поэтому есть понятие "программист", а есть понятие "кодер") Вспомнить тех же индусов)
0
Про "кодеров" нужно знать только один факт: их на фирме не нужно. Ни одного. Лучше заплатите вдвое больше но возьмите программиста и дайте ему месяц на то чтобы выучить язык.
+1
Если не нанимать уборщиц, то полы будут мыть менеджеры по работе с клиентами?
0
Вы, наверное, не представляете себе что такое на самом деле большие нагрузки;)
Кодеры, конечно, не нужны, если фирма занимается просто изготовлением сайтов - не больше трёх в месяц, к примеру.
Кодеры, конечно, не нужны, если фирма занимается просто изготовлением сайтов - не больше трёх в месяц, к примеру.
0
Я считаю, на вакансию php-программиста должен приниматься человек, который реально в жизни изучал и работал только с php и достиг в нем реального уровня. Тогда с самого начала он понял как должен выглядеть php код, что бы быть читаемым, как правильно формировать и оптимизировать SQL-запросы и как правильно фильтровать данные, что бы не только нельзя было сделать SQL-инъекцию, но и защититься от XSS. Что бы такой человек знал что многоуровневый if () работает медленнее switch (). А самое главное, что бы он не считал, что если он писал программы на C, то какой-то там PHP это сущий пустяк, который можно освоить за пару вечеров. Ибо из-за таких и реализуются SQL-инъекции и XSS атаки.
Еще мне кажется, что нужно давать небольшое, но разносторонне тестовое задание, а потом смотреть код и давать оценку данному программисту.
Еще мне кажется, что нужно давать небольшое, но разносторонне тестовое задание, а потом смотреть код и давать оценку данному программисту.
+1
И какое же задание давать?+)
0
надо придумывать такое задание, что бы можно было оценить знание программиста, в каждой области языка: в стиле написания, знание SQL, знание в сфере безопасности веб-приложений, умение находить оптимальное решение задачи и тд.
0
Мы в свое время искали программиста, я дал ему такое задание:
Обойти структуру папок на диске, сохранить в базе, которую нужно самому спроектировать, опять взять из базы и построить дерево на html. Верстку требовал валидную, семантическую.
Вот тут и рекурсии и sql и верстка. Я задание на дом давал. А потом по коду сразу все видно. Не прошел у нас никто такой тест пока я там работал :)
Обойти структуру папок на диске, сохранить в базе, которую нужно самому спроектировать, опять взять из базы и построить дерево на html. Верстку требовал валидную, семантическую.
Вот тут и рекурсии и sql и верстка. Я задание на дом давал. А потом по коду сразу все видно. Не прошел у нас никто такой тест пока я там работал :)
0
А что, SQL инъекции и XSS атаки возможны только в PHP?
+1
PHP - это такой специальный язык где из каждого оператора норовит выскочить XSS или SQL-injection.
Просто по большому счёту не годится PHP для написания серъёзных задач - но если у вас уже куча кода на PHP, то что вам остаётся делать ?
Просто по большому счёту не годится PHP для написания серъёзных задач - но если у вас уже куча кода на PHP, то что вам остаётся делать ?
-1
НЛО прилетело и опубликовало эту надпись здесь
нет. SQL инъекции от лени и не знания, а никак не от знания C.
+1
а если надо баг в php исправить? или модуль написать?
0
Довольно забавный тест. Я не новичок в РНР, но сходу есть моменты на которые я бы не ответил, т.к. они просто на автомате пишутся и я уже не думаю, что могло быть по другому... Мне кажется, что реально лучше просить показать код или выполнить тестовое задание, т.к. этим ты минимум сможешь решить ряд вопросов:
1. Скорость написания
2. Качество кода (стилистика + алгоритмизация)
3. ... ну и наверное получить ответы на выше преведённые задачи :)
1. Скорость написания
2. Качество кода (стилистика + алгоритмизация)
3. ... ну и наверное получить ответы на выше преведённые задачи :)
-1
А может, тестовое задание формулировать: «напишите код, который сделает...», а не так?
И пишут пусть на бумажке прямо при вас, можно будет многое о кандидате понять.
И пишут пусть на бумажке прямо при вас, можно будет многое о кандидате понять.
0
я написал на PHP не мало кода и реализовал не один проект, но если вы скажете мне написать код на бумажке я могу просто не вспомнить как правильно пишется некоторые специфичные функции. Объяснение этому простое - я использую среду разработки Zend Studio, которая за меня знает все функции языка:)
Человек должен сначала все обдумать и взвесить, а потом писать код. А когда вы скажите пиши код и будете стоять над душой, врятле получится адекватная оценка
Человек должен сначала все обдумать и взвесить, а потом писать код. А когда вы скажите пиши код и будете стоять над душой, врятле получится адекватная оценка
+2
Тут не в том дело.
Вы формулируете задачу и следите за ходом мысли конкурсанта. За рассуждениями.
То есть даже и код может быть не правильным, главное-то всё равно пресловутый «программистский склад ума» :)
Вы формулируете задачу и следите за ходом мысли конкурсанта. За рассуждениями.
То есть даже и код может быть не правильным, главное-то всё равно пресловутый «программистский склад ума» :)
0
Задачек мало. Я считаю должно быть минимум 10. И хотя бы одна с рекурсией.
0
Я программирую на php с 2002 года, практически каждый день решаю те или иные задачи. Но меня бы вы на работу не приняли я не смог решить ни одной задачи. Имею в виду, что не смог решить, имея в руках лист бумаги и ручку, как на экзамене по математике в институте. Скорее всего, автору будет интересен мой случай, и ему решать брать на работу такого "кодера" или нет. Я могу запросто решить все эти задачи, сидя перед моим компьютером в спокойном состоянии, без стресса. Когда рядом есть документация по php, несколько моих любимых книг. Разумеется, я назубок знаю, что нельзя писать код типа $query = "SELECT anons,text FROM news WHERE id='".$_GET['x']."'"; Но самостоятельно написать инъекцию на листе бумаги я не смогу. Задачу номер три я вообще не понял, даже с документацией. Спасибо автору за пищу для размышлений.
-6
Значит плохо решаешь... Извини, но это действительно очень легкие задачи для более-менее нормального программиста на PHP. Первая задача - как сравниваются значения разных типов, вторая - как работают некоторые настройки PHP, 3-я - тест на ООП, 4-я - вообще, ИМХО, на логику - как получить все значения из таблицы? - сделать условие WHERE равным true. обычная логика: * | true == true. Значит запихиваем в $x "1' OR '1".
+1
Я бы даже сказал, что они все на логику=)
0
Первые три задачи - из разряда "как не нужно делать". Решение у них простое: найти человека, который такое положил в VCS и уволить. Всё. Что выдаёт PHP в этом случае - дело 10е: такого кода в проекте просто быть не должно.
1. Не нужно сравнивать значения разных типов в грамотно написанной программе. Просто не нужно.
2. Не нужно использовать register_globals('on'). Просто не нужно.
3. Не нужно устраивать коллизии имён и потом с ними разбираться - нужно их устранять.
Четвёртая задачка - единственная разумная...
1. Не нужно сравнивать значения разных типов в грамотно написанной программе. Просто не нужно.
2. Не нужно использовать register_globals('on'). Просто не нужно.
3. Не нужно устраивать коллизии имён и потом с ними разбираться - нужно их устранять.
Четвёртая задачка - единственная разумная...
-1
1. Нужно. Даже в C++ бывает сравнивается float и double и даже float и int. В PHP так тем более - есть функции которые возвращают int в общем случае и false в особом случае. С каким типом результат сравнивать нужно? :) Причем это стандартные функции PHP. Галимый ячзы, вообще. :) Python лучше.
2. Бред :) PHP программисть должен знать, что это такое и как оно работает. Хотя бы для того, чтобы этого избегать. ;)
3. Это где написано? :) Я-то в принципе согласен. Но такого ни в каких книгах по ООП написано не будет.
2. Бред :) PHP программисть должен знать, что это такое и как оно работает. Хотя бы для того, чтобы этого избегать. ;)
3. Это где написано? :) Я-то в принципе согласен. Но такого ни в каких книгах по ООП написано не будет.
0
1. Наличие чего-то в стандартной библиотеке вовсе не значит что это что-то нужно использовать. Вон в стандартной библиотеке C есть getwd(3) - это же не значит что её нужно использовать ?
2. Давайте теперь ещё потребуем от программиста на C++ умения управлять памятью в конструкторе (a-la CFront 1.0). По безопасности и полезности в реальной работе - это сравнимые умения.
3. Если у человека не всё в порядка со зравым смыслом - то ему никакая книга про ООП не поможет...
Умение работать с взрывоопасными конструкциями и умение их избегать - разные умения. На практике - полезнее второе. Конечно если у вас код не испещрён подобным ужасом - но в этом случае вас никакие, даже самые гениальные программисты не спасут...
2. Давайте теперь ещё потребуем от программиста на C++ умения управлять памятью в конструкторе (a-la CFront 1.0). По безопасности и полезности в реальной работе - это сравнимые умения.
3. Если у человека не всё в порядка со зравым смыслом - то ему никакая книга про ООП не поможет...
Умение работать с взрывоопасными конструкциями и умение их избегать - разные умения. На практике - полезнее второе. Конечно если у вас код не испещрён подобным ужасом - но в этом случае вас никакие, даже самые гениальные программисты не спасут...
0
1. Это к тому, что использовать приходится. А раз приходиться - нужно знать, как.
2. А причем тут вообще..? Язык создан. Программист должен знать его таким какой он есть.
3. Как ни странно, но такие случаи (коллизии имен переменных) вполне встречаются. Особенно в том случае, который был приведен раньше. Про private переменную наследник вообще ничего не знает - её для него нет. Так что в новом классе я вполне могу использовать переменную с таким же именем.
А что, разве для того, чтобы избегать, не нужно иметь представление об этой конструкции? Она же вполне может быть взрывоопасна, а я могу об этом не знать.
2. А причем тут вообще..? Язык создан. Программист должен знать его таким какой он есть.
3. Как ни странно, но такие случаи (коллизии имен переменных) вполне встречаются. Особенно в том случае, который был приведен раньше. Про private переменную наследник вообще ничего не знает - её для него нет. Так что в новом классе я вполне могу использовать переменную с таким же именем.
А что, разве для того, чтобы избегать, не нужно иметь представление об этой конструкции? Она же вполне может быть взрывоопасна, а я могу об этом не знать.
0
Впрочем готов признать что половина от первого вопроса (про 'c' и 'd') таки нужны для любого PHP-программиста... В безтиповых языках без аналога === иногда бывает тяжко...
0
задачки решаются, если не думать о самом коде, прямо в процессе чтения статьи. увидел код, спросил себя - и ответ готов.
0
Ну это хотя бы честно =)
0
Вот хорошая цитата из Джоэля
"Вот вам, смеха ради, отвратительный вопрос для интервью: «В чем разница между varchar и varchar2 в Oracle 8i?» Задавать такой вопрос совершенно бессмысленно: между людьми, знающими эту бесполезную мелочь, и людьми, действительно нужными нашей компании, нет ни малейшей корреляции. Кого волнует, в чем эта разница? Ответ ищется в Интернете за 15 секунд!"
"Вот вам, смеха ради, отвратительный вопрос для интервью: «В чем разница между varchar и varchar2 в Oracle 8i?» Задавать такой вопрос совершенно бессмысленно: между людьми, знающими эту бесполезную мелочь, и людьми, действительно нужными нашей компании, нет ни малейшей корреляции. Кого волнует, в чем эта разница? Ответ ищется в Интернете за 15 секунд!"
+1
Не совсем понятно, кто, собственно, нужен: бот-писатель скриптов или человек, способный создавать серьёзные проекты. Глядя на задачи, думается, что предмет поиска - бот.
0
Хорошее адекватное задание на знание языка. Вот есть только одна проблема - знание языка не дает права называться программистом. Необходимо уметь грамонтно составить алгоритм, написать код, решать возникающие проблемы, разбираться в паттернах, чтобы не изобретать велосипед.
P.S.: А задачи эти решаются за 3 с полвиной минуты, из которых полторы уходят на то, чтобы въехать "а че же от нас хотят?" :)
P.S.: А задачи эти решаются за 3 с полвиной минуты, из которых полторы уходят на то, чтобы въехать "а че же от нас хотят?" :)
+3
Со всем кроме первого предложения согласен. :)
Вообще, ИМХО, собеседование должно состоять из двух частей - устной и письменной. В письменной должны быть разнообразные задачи по алгоритмам и проектированию (если такое понадобиться в работе). Причем отвечать на них нужно именно на том языке, на который тебя на работу берут. Убиваем двух зайцев - оцениваем качество алгоритмов и владение (более-менее) языком. В устной части - обычная беседа про ООП, паттерны, обсуждение самого языка.
Только после такого собеседования можно (совсем чуть-чуть) судить об уровне программиста.
Вообще, ИМХО, собеседование должно состоять из двух частей - устной и письменной. В письменной должны быть разнообразные задачи по алгоритмам и проектированию (если такое понадобиться в работе). Причем отвечать на них нужно именно на том языке, на который тебя на работу берут. Убиваем двух зайцев - оцениваем качество алгоритмов и владение (более-менее) языком. В устной части - обычная беседа про ООП, паттерны, обсуждение самого языка.
Только после такого собеседования можно (совсем чуть-чуть) судить об уровне программиста.
0
Вот как всегда написал правду и получил минус. Надо было сказать, что круто, парень! Тест легкий, делай сложнее, это даже первоклассник решит. Бейте, други, за правду не обидно
0
НЛО прилетело и опубликовало эту надпись здесь
'register_globals' ужас какой!!! Я бы вторую задачку не решил, хотя программирован на PHP около полу года.
Вообще, вопрос в том, кого вы ищете, программиста или кодировальщика. Второй вопрос точно для кодировальщика энциклопедиста.
Посдений вопрос действительно хороший. Особенно интересно поговорить про PDO и про то как же там указание типов при биндинге параметров работает и можно ли ему доверять :)
Правда, когдмы мы проводили собеседования никогда до такого не доходили. Идеальный критерий был такой: человек должен уметь программировать на каком-нибудь OOP языке, понимать принципы OOP (на это задавались задачки из серии, а вот какие классы у вас будут, как они будут связаны или как вот поступать с тем-то и там-то) и уметь думать :) на проверку последнего задавались задачки различные, большая часть правда их плохо решала, так что до более сложных и интересных никто не доходил.
Мне кстати очень нравится вопрос: скажите, а что Вам нравится и не нравится в языке (решении и т.п.), которым Вы пользуетесь.
После этого ответа очень многое понятно и про знания и про уровень человека.
Вообще, вопрос в том, кого вы ищете, программиста или кодировальщика. Второй вопрос точно для кодировальщика энциклопедиста.
Посдений вопрос действительно хороший. Особенно интересно поговорить про PDO и про то как же там указание типов при биндинге параметров работает и можно ли ему доверять :)
Правда, когдмы мы проводили собеседования никогда до такого не доходили. Идеальный критерий был такой: человек должен уметь программировать на каком-нибудь OOP языке, понимать принципы OOP (на это задавались задачки из серии, а вот какие классы у вас будут, как они будут связаны или как вот поступать с тем-то и там-то) и уметь думать :) на проверку последнего задавались задачки различные, большая часть правда их плохо решала, так что до более сложных и интересных никто не доходил.
Мне кстати очень нравится вопрос: скажите, а что Вам нравится и не нравится в языке (решении и т.п.), которым Вы пользуетесь.
После этого ответа очень многое понятно и про знания и про уровень человека.
+3
Если кому интересно, вот еще пост в тему PHP: Собеседование
0
Есть идея для собеседующего:
Во избежание большого числа народа, который нифига не умеет, ввести каптчу до собеседования. Суть идеи элементарна. Ставим на дверь кодовый замок, и рядом бумажку: несложный код на php, который что-то должен вывести (естесственно, с несложными заморочками по синтаксису). Если у человека голова на плечах есть, то он введет код правильно и попадет на второй этап собеседования, если нет - вы не будете тратить время на такого программиста и выяснение его навыков синтаксиса и прочей элементарщины. Кстати, это сложит мнение о вашей компании у людей, как о компании, которая любит нетривиальные задачи, а работа требует изобретательности и интересна.
Во избежание большого числа народа, который нифига не умеет, ввести каптчу до собеседования. Суть идеи элементарна. Ставим на дверь кодовый замок, и рядом бумажку: несложный код на php, который что-то должен вывести (естесственно, с несложными заморочками по синтаксису). Если у человека голова на плечах есть, то он введет код правильно и попадет на второй этап собеседования, если нет - вы не будете тратить время на такого программиста и выяснение его навыков синтаксиса и прочей элементарщины. Кстати, это сложит мнение о вашей компании у людей, как о компании, которая любит нетривиальные задачи, а работа требует изобретательности и интересна.
0
Тут как посмотреть. Можно прорваться на второй этап собеседования при помощи простого лома. Я бы такого сразу же взял :)
0
>Кстати, это сложит мнение о вашей компании у людей, как о компании, которая любит нетривиальные задачи, а работа требует изобретательности и интересна.
А у смекалистых парней-любителей злых шуток, желание написать такую инъекцию к этой капче, чтобы дверь заглохла и отрезала выход всем внутри. :)
А у смекалистых парней-любителей злых шуток, желание написать такую инъекцию к этой капче, чтобы дверь заглохла и отрезала выход всем внутри. :)
0
Фигня это все, по этой теме как-то Алексей Рыбак прожег очень жоско (никак не могу найти, может кто помнит?)
0
Я, со своим пятилетныим опытом программирования на пхп и текущей должностью "ведущий разработчик веб систем и сайтов", допустил-таки одну ошибочку в ваших тестах...
0
Поддерживаю мнение тех кто говорит о допустимости манов. Из десяти задач на собеседовании таких должно быть не больше трех, имхо.
По теме - я давал такое задание: написать функцию print_row(n), которая например для n=15 выведет следующий ряд (вместе с цифрами) -
1
2*
3+
4*
5
6+*
7
8*
9+
10*
11
12+*
13
14+
15*
уж очень она мне почему-то понравилась :)
По теме - я давал такое задание: написать функцию print_row(n), которая например для n=15 выведет следующий ряд (вместе с цифрами) -
1
2*
3+
4*
5
6+*
7
8*
9+
10*
11
12+*
13
14+
15*
уж очень она мне почему-то понравилась :)
0
function print_row($n){
for($i=1;$i<=$n;$i++){
echo $i;
if(!($i%2)) echo '*';
if(!($i%3)) echo '+';
echo "\n";
}
}
если 14+ и 15* просто опечатка.
for($i=1;$i<=$n;$i++){
echo $i;
if(!($i%2)) echo '*';
if(!($i%3)) echo '+';
echo "\n";
}
}
если 14+ и 15* просто опечатка.
0
угу, опечатка :) извиняюсь.
А код, конечно, тот, который хотелось бы видеть от всех и с первого раза.
А код, конечно, тот, который хотелось бы видеть от всех и с первого раза.
0
Алгоритм, конечно, правильный. Но с точки зрения кода...
По-моему ничего хорошего в функции делающей много echo нет. Лучше писать (и требовать писать) нечто возвращающее строки, а не выводяшее их. С таким тестом вы возьмете на работу "спагетти-стайл" пэхапэшника. Ну или даете понять, что вы занимаетесь спагетти-кодингом.
По-моему ничего хорошего в функции делающей много echo нет. Лучше писать (и требовать писать) нечто возвращающее строки, а не выводяшее их. С таким тестом вы возьмете на работу "спагетти-стайл" пэхапэшника. Ну или даете понять, что вы занимаетесь спагетти-кодингом.
0
В том то и дело, что меня не интересует конкретно знание php. Я взываю к логике и наблюдательности :) Считаю, что человека с мозгами и желанием можно за месяц подтянуть до того уровня, когда он будет способен делать нужные вещи и от него появиться реальная польза для команды :)
Поэтому и давал возможность писать не обязательно на php, а на любом другом языке.
Поэтому и давал возможность писать не обязательно на php, а на любом другом языке.
0
НЛО прилетело и опубликовало эту надпись здесь
1.upto(15){|i| puts %(#{i}#{'+' if (i%3).zero?}#{'*' if (i%2).zero?}) }
0
:) я предлагал соискателям написать функцию на любом доступном языке, но этот похоже мне неизвестен )
0
если память не изменила, то это ruby
PS: Вы проводите тестирования? ;)
PS: Вы проводите тестирования? ;)
0
ruby... красиво ) Но я бы отдал предпочтение варианту ув. twi .
Про тестирование - общаюсь с теми, кого приглашаем к себе в команду (стартапчик ;) )
Про тестирование - общаюсь с теми, кого приглашаем к себе в команду (стартапчик ;) )
0
у Вас есть стартапчик? ;)
0
Да тут просто код без функции. Я когда запостил только вспомнил, что функция нужна :). с функцией было бы def print_row(n) код end
0
print$_.($_%3?"":"+").($_%2?"":"*")."\n"for 1..15
0
function print_row($n){ for($i=1;$i<=$n;$i++) echo $i.(($i%2)?'':'*').(($i%3)?'':'+')."\n"; }
иногда мне кажется, что основной целью создания ruby было создать язык с максимально отличным от php синтаксисом (:
иногда мне кажется, что основной целью создания ruby было создать язык с максимально отличным от php синтаксисом (:
0
Мне кажется, тест должен выявлять всестороннее развитие человека. Простейшие вопросы (один-два), на знание основ php, потом вопрос на знание особенностей (например, вопрос на глобал/статик и небольшой подводный камень со ссылками в этой области), потом ООП - вопросы на понимание принципров - инкапсуляция, наследование, полиморфизм -понимание на уровне "зачем это нужно и когда", а не "что это такое".
Вопрос на чтение небольшого фрагмента чужого кода, возможно, найти ошибку в нем, либо переделать кусок так, как должен выглядеть идеальный код (назвать нормально переменные, добавить комментарии, раскрыть цикл, может быть что-то еще).
Вопросы понимания процесса разработки ПО, чем отличается проектирование и конструирование. Общее понимание принципов хорошего программирования (см. Совершенный код).
Умение писать код, спосоный работать в highload.
SQL, вообще и применительно к паре-другой БД (например мускул и постгре).
Администрирование, апач, нджинкс, мемкешд, тонкая настройка под разные задачи. Понимание принципов работы.
HTML. Умение верстать хотя бы легкие вещи. Понимание стандартов. Знание возможностей разных браузеров, и, что еще важнее, их недостатков.
Умение находить информацию по проблеме, читать документацию. Гуглить эффективно :)
JavaScript, AJAX. Знание особенностей построения пользовательских интерфейсов, основ юзабилити.
Вопрос на чтение небольшого фрагмента чужого кода, возможно, найти ошибку в нем, либо переделать кусок так, как должен выглядеть идеальный код (назвать нормально переменные, добавить комментарии, раскрыть цикл, может быть что-то еще).
Вопросы понимания процесса разработки ПО, чем отличается проектирование и конструирование. Общее понимание принципов хорошего программирования (см. Совершенный код).
Умение писать код, спосоный работать в highload.
SQL, вообще и применительно к паре-другой БД (например мускул и постгре).
Администрирование, апач, нджинкс, мемкешд, тонкая настройка под разные задачи. Понимание принципов работы.
HTML. Умение верстать хотя бы легкие вещи. Понимание стандартов. Знание возможностей разных браузеров, и, что еще важнее, их недостатков.
Умение находить информацию по проблеме, читать документацию. Гуглить эффективно :)
JavaScript, AJAX. Знание особенностей построения пользовательских интерфейсов, основ юзабилити.
0
Прочитал, вспомнился анекдот.
===================
Если бы при приеме на работу к водителям относились так же, как к
программистам:
Вакансия: водитель.
Требования: профессиональные навыки управлении легковыми и грузовыми
автомобилями, троллейбусами, трамваями, поездами метрополитена и
фуникулера, экскаваторами и бульдозерами, спецмашинами на гусеничном
ходу, боевыми машинами пехоты и современными легкими/средними танками,
находящимися на вооружении стран СНГ и НАТО. Навыки раллийского и
экстремального вождения - обязательны, опыт управления болидами F1 -
приветствуется. Знания и опыт ремонта поршневых и роторных двигателей,
автоматических и ручных трансмиссий, систем зажигания, бортовых
компьютеров, антиблокировочных систем, навигационных систем (GPS) и
автомобильных аудиосистем ведущих производителей - обязательны. Опыт
проведения кузовных и окрасочных работ приветствуется. Претенденты
должны иметь сертификаты Mercedes, BMW, General Motors, а также справки
об участии в крупных международных ралли не более чем двухлетней
давности. Зарплата 1500-2500 руб., определяется по результатам
собеседования.
ЗЫ: А кто-нибудь может сказать, почему то, что положительно воспринимают коллеги, часто минусуют на хабре (например посты в блоги и комментарии)? Или тут так принято :)
===================
Если бы при приеме на работу к водителям относились так же, как к
программистам:
Вакансия: водитель.
Требования: профессиональные навыки управлении легковыми и грузовыми
автомобилями, троллейбусами, трамваями, поездами метрополитена и
фуникулера, экскаваторами и бульдозерами, спецмашинами на гусеничном
ходу, боевыми машинами пехоты и современными легкими/средними танками,
находящимися на вооружении стран СНГ и НАТО. Навыки раллийского и
экстремального вождения - обязательны, опыт управления болидами F1 -
приветствуется. Знания и опыт ремонта поршневых и роторных двигателей,
автоматических и ручных трансмиссий, систем зажигания, бортовых
компьютеров, антиблокировочных систем, навигационных систем (GPS) и
автомобильных аудиосистем ведущих производителей - обязательны. Опыт
проведения кузовных и окрасочных работ приветствуется. Претенденты
должны иметь сертификаты Mercedes, BMW, General Motors, а также справки
об участии в крупных международных ралли не более чем двухлетней
давности. Зарплата 1500-2500 руб., определяется по результатам
собеседования.
ЗЫ: А кто-нибудь может сказать, почему то, что положительно воспринимают коллеги, часто минусуют на хабре (например посты в блоги и комментарии)? Или тут так принято :)
0
Все комменты не читала, так что если что простите.
Задачки просмотрела... Мое личное мнение - в них нет смысла при проверке кандидата на собеседовании.
Был опыт принятия на работу парочки людей. В том числе и программера. Дальше высакжу мои личные соображения по этому поводу.
1. Вы должны определиться какого уровня вам нужен кандидат.
2. Определиться что именно Вам нужно, чтобы он знал - регулярки, ООП на высоком уровне, паттерны проектирования, может базовые знания Юникс-подобных систем и т.п. Уже по этому списку далее составляете по несколько вопросиков общего характера - может какие-то определения (причем я предпочитаю метод "объясни своими словами", т.е. видно же когда человек понимает что он говорит, даже если не совсем правильно - может он волнуется, а может он скорее практик, чем теоретик).
3. Почему я считаю, что в Ваших задачах нет смысла? Да потому что они мелочные. Вы должны проверить не текущие знания кандидата, а его способность к обучению.
Здесь нужно узнать умеет ли он пользоваться манами, документацией, как он вообще узнает ответы на свои вопросы (спрашивает у кого-то или ищет сначала ответ на вопрос сам, второе предпочтительнее). Конечно, здесь в большей степени можно полагаться на правдивость кандидата =)
Можно дать ему какую-то общую задачу и спросить каким путем он будет ее решать. Если Вас интересуют паттерны, можете спросить какие паттерны он бы использовал.
4. Составьте пару реальных, но несложных задач. Но не за листик его посадите, а за комп. Заодно и посмотрите как он ищет ответы на вопросы. Пусть пользуется Гуглом, справкой - чем хочет. Так вы только увидите его способность найти ответ. А Вам нужно именно это, а не то, насколько он досконально помнит каждый пункт теории.
Я, если честно, на эти ваши задачки 100% ответа и не дам, хотя программлю на пхп уже года 3. Почему? Да потому что я такими вопросами никогда не задавалась. Если мне нужно будет, я этот вопрос найду за минуту - потому что знаю где искать.
Ведь главная суть учебы состоит в том, чтоб научиться учиться =)
Буду рада в общем-то услышать возражения на мой пост. Может чему умному научусь.
Задачки просмотрела... Мое личное мнение - в них нет смысла при проверке кандидата на собеседовании.
Был опыт принятия на работу парочки людей. В том числе и программера. Дальше высакжу мои личные соображения по этому поводу.
1. Вы должны определиться какого уровня вам нужен кандидат.
2. Определиться что именно Вам нужно, чтобы он знал - регулярки, ООП на высоком уровне, паттерны проектирования, может базовые знания Юникс-подобных систем и т.п. Уже по этому списку далее составляете по несколько вопросиков общего характера - может какие-то определения (причем я предпочитаю метод "объясни своими словами", т.е. видно же когда человек понимает что он говорит, даже если не совсем правильно - может он волнуется, а может он скорее практик, чем теоретик).
3. Почему я считаю, что в Ваших задачах нет смысла? Да потому что они мелочные. Вы должны проверить не текущие знания кандидата, а его способность к обучению.
Здесь нужно узнать умеет ли он пользоваться манами, документацией, как он вообще узнает ответы на свои вопросы (спрашивает у кого-то или ищет сначала ответ на вопрос сам, второе предпочтительнее). Конечно, здесь в большей степени можно полагаться на правдивость кандидата =)
Можно дать ему какую-то общую задачу и спросить каким путем он будет ее решать. Если Вас интересуют паттерны, можете спросить какие паттерны он бы использовал.
4. Составьте пару реальных, но несложных задач. Но не за листик его посадите, а за комп. Заодно и посмотрите как он ищет ответы на вопросы. Пусть пользуется Гуглом, справкой - чем хочет. Так вы только увидите его способность найти ответ. А Вам нужно именно это, а не то, насколько он досконально помнит каждый пункт теории.
Я, если честно, на эти ваши задачки 100% ответа и не дам, хотя программлю на пхп уже года 3. Почему? Да потому что я такими вопросами никогда не задавалась. Если мне нужно будет, я этот вопрос найду за минуту - потому что знаю где искать.
Ведь главная суть учебы состоит в том, чтоб научиться учиться =)
Буду рада в общем-то услышать возражения на мой пост. Может чему умному научусь.
+2
Будет не возражение, а дополнение. Задачки 1-3 у любого нормального программиста на любом нормальном языке вызовут отвращение и желание такой код выбросить, а написавшего его программиста уволить. Задачка 4 - единственная сколько-нибудь разумная, да и то - придирки. Возможно у программистов на PHP особый склад ума и им доставляет удовольствие писать и читать грязный код, но работать в контору где такое попадает в VCS, а не то что на боевые сервера я бы просто не пошёл.
0
Сразу возникает вопрос, а что вы понимаете под "идеальными условиями сервера?"
И еще, на сколько я знаю не корректно менять register_globals во время работы скрипта, переменные уже будут объявлены (или не объявлены) и директива ничего не даст.
То же про третий вопрос - по PHP4
Зачем кандидату знать как писать неправильно? На старых ЯП (пхп4 с января, вроде, не поддерживается официально).
Первая и последняя задачи - вполне подходят.
Вы ищете гуру с большим стажем? Или обучаемых сотрудников?
И еще, на сколько я знаю не корректно менять register_globals во время работы скрипта, переменные уже будут объявлены (или не объявлены) и директива ничего не даст.
То же про третий вопрос - по PHP4
Зачем кандидату знать как писать неправильно? На старых ЯП (пхп4 с января, вроде, не поддерживается официально).
Первая и последняя задачи - вполне подходят.
Вы ищете гуру с большим стажем? Или обучаемых сотрудников?
0
Посмотрел на комментарии. Похоже народ про ООП задачку не решил или решил не верно:
>Для какой версии PHP будет работать этот скрипт?
Правильный ответ: Ни для какой, в любой версии работать не будет
>Что выведет этот скрипт?
Правильный ответ: Ошибку.
Вы такой ответ ожидаете, что ли?
>Для какой версии PHP будет работать этот скрипт?
Правильный ответ: Ни для какой, в любой версии работать не будет
>Что выведет этот скрипт?
Правильный ответ: Ошибку.
Вы такой ответ ожидаете, что ли?
0
НЛО прилетело и опубликовало эту надпись здесь
Ммм
Лишь раз натыкался на вот такое собеседование, с задачками
Решил всё удачно, но на предложение поработать послал на йух, ибо понял, что ищут не Разработчика, а быдлокодера.
Я достаточно компетентен, чтобы понять насколько человек разумный, без всяких тупых задач.
Я достаточно компетентен, чтобы понять насколько человек разумный, без всяких тупых задач.
+1
Очень хорошие задачи. Когда меня в следующий раз попросят обосновать "php гадость", дам ссылку на этот пост.
Искренне сочувствую программистам на пхп, в особенности тем, кто успешно прошел это собеседование.
Искренне сочувствую программистам на пхп, в особенности тем, кто успешно прошел это собеседование.
0
PHP нормальный язык, пока на нём не начинают выпендриваться. На практике вся эта лажа сверху практически не применяется.
+1
То, что на этом языке можно такое написать уже существенно.
0
Такое (или подобное) можно написать почти что на любом языке. Парочка примеров:
C++:
int test(int x) {
static int y = test(x+1) * 2;
return x + y;
}
int main() {
std::cout << test(42) << std::endl;
}
До какой версии GCC это будет работать ? Что выведет эта программа ?
Java:
class testA {
final static int A = testB.B + 42;
}
class testB {
final static int B = testA.A + 42;
}
class main {
public static void main(String args[]) {
System.out.println(testA.A);
System.out.println(testB.B);
}
}
Что выведет эта программа ? Насколько безопасно использовать подобный код в многопоточной программе ?
Ну и какие сведения о кандидате вам дадут ответы на подобные вопросы ? Правильно: никаких. Хорошой кандидат честно ответит: не знаю и будет прав - незачем ему засорять мозги всякими извращениями. Если такие чудеся встретятся в реальном коде - этот код надо переписать и всё.
Но почему-то от PHP-кодера за три копейки ждут грамотного обсуждения подобных тонкостей.
C++:
int test(int x) {
static int y = test(x+1) * 2;
return x + y;
}
int main() {
std::cout << test(42) << std::endl;
}
До какой версии GCC это будет работать ? Что выведет эта программа ?
Java:
class testA {
final static int A = testB.B + 42;
}
class testB {
final static int B = testA.A + 42;
}
class main {
public static void main(String args[]) {
System.out.println(testA.A);
System.out.println(testB.B);
}
}
Что выведет эта программа ? Насколько безопасно использовать подобный код в многопоточной программе ?
Ну и какие сведения о кандидате вам дадут ответы на подобные вопросы ? Правильно: никаких. Хорошой кандидат честно ответит: не знаю и будет прав - незачем ему засорять мозги всякими извращениями. Если такие чудеся встретятся в реальном коде - этот код надо переписать и всё.
Но почему-то от PHP-кодера за три копейки ждут грамотного обсуждения подобных тонкостей.
0
НЛО прилетело и опубликовало эту надпись здесь
Независимо от языка программирования, стараюсь давать более или менее одинаковые тесты.
Обычно кандидат сажается за комп, подключенный к интернету. Очень желательно, чтобы на компе стояла какая-нибудь экзотическая среда разработки, кандидату незнакомая, но с хелпами и прочим.
Дается задание. Например, написать класс или набор методов для работы с псевдо файловой системой. Методы:
- Создать файл
- Создать каталог
- Удалить файл
- Удалить каталог
- Распечатать содержимое каталога
При этом не надо никакой работы с диском, с содержимым файлов. Фактически, задача на понимание устройства дерева каталогов и файлов, что является общим знанием.
На все дается час. Через час работа останавливается, независимо от степени готовности.
Так вот, опыт показывает, что грамотно написать это задание за отведенный срок оказываются способны отнюдь не те люди, которые точно помнят последовательность параметров функции fwrite или корифеи SQL-иньекций.
Обычно кандидат сажается за комп, подключенный к интернету. Очень желательно, чтобы на компе стояла какая-нибудь экзотическая среда разработки, кандидату незнакомая, но с хелпами и прочим.
Дается задание. Например, написать класс или набор методов для работы с псевдо файловой системой. Методы:
- Создать файл
- Создать каталог
- Удалить файл
- Удалить каталог
- Распечатать содержимое каталога
При этом не надо никакой работы с диском, с содержимым файлов. Фактически, задача на понимание устройства дерева каталогов и файлов, что является общим знанием.
На все дается час. Через час работа останавливается, независимо от степени готовности.
Так вот, опыт показывает, что грамотно написать это задание за отведенный срок оказываются способны отнюдь не те люди, которые точно помнят последовательность параметров функции fwrite или корифеи SQL-иньекций.
+1
НЛО прилетело и опубликовало эту надпись здесь
а никто не сказал, что проходным требованием является завершенный и отлаженный код. и вот тут сразу видно, у кого какие приоритеты.
Иногда действительно - через час у человека только структура базовая описана и ничего более. Но и по этому часто видно, что это "наш клиент" или наоборот - сразу нафиг.
За всю практику видел только трех или четырех кандидатов, которые через час выдали работающий код.
Кроме того, вдумайтесь - а надо ли разбираться в текстовом редакторе, какой бы среде он ни принадлежал? Естественно, если это не vi и не emacs, а нечто CUA-подобное.
Иногда действительно - через час у человека только структура базовая описана и ничего более. Но и по этому часто видно, что это "наш клиент" или наоборот - сразу нафиг.
За всю практику видел только трех или четырех кандидатов, которые через час выдали работающий код.
Кроме того, вдумайтесь - а надо ли разбираться в текстовом редакторе, какой бы среде он ни принадлежал? Естественно, если это не vi и не emacs, а нечто CUA-подобное.
+1
ваша задача любого кто знает устройство настоящих фс, особенно с userspace кодом, а не целиком "ядрёные" (fuse конечно же) - введёт в такой безумный ступор что он попросту развернётся и уйдёт сразу. По крайней мере я бы так сделал.
Уж если и давать задачи - то сколько-нибудь полезные самому кандидату. Любой адекватный человек не будет в восторге тратить время на вылеты проверяющего "а сделай ка мне классик который будет срать в окошко".
Уж если и давать задачи - то сколько-нибудь полезные самому кандидату. Любой адекватный человек не будет в восторге тратить время на вылеты проверяющего "а сделай ка мне классик который будет срать в окошко".
0
Это очень хорошо, что развернется и уйдет. Зачем мне неадекватные сотрудники? :)
0
боитесь нанимать людей умнее вас?
0
Отнюдь. Впрочем, давайте разберем ваш первый ответ.
Во-первых, в моей задаче речь идет о ПСЕВДО файловой системе, и утверждение, что это введет в ступор любого знатока реализации конкретных ФС явно конфликтует со здравым смыслом. Если человек имеет столь глубокое представление о предмете, то уж какие-то псевдо-функции для него вообще проблемы не представляют.
Ну и вторая часть - давать полезные кандидату задачи. Простите, но у меня не курсы повышения квалификации, а собеседование на хорошо оплачиваемую должность. Причем тут польза для кандидата?
Складываю ваши два и два и получаю ответ - клиент неадекватен. Это, разумеется, мое сугубо субъективное мнение.
А вообще мне довольно хорошо знаком подобный тип личностей. Они приходят на собеседование, на любой простейший вопрос уходят на полчаса в теорию численных методов, воспоминания о том, как писали ring-0 драйвера для электронной мухобойки и о влиянии космоса на результаты вычислений. В быту неприменимы.
Во-первых, в моей задаче речь идет о ПСЕВДО файловой системе, и утверждение, что это введет в ступор любого знатока реализации конкретных ФС явно конфликтует со здравым смыслом. Если человек имеет столь глубокое представление о предмете, то уж какие-то псевдо-функции для него вообще проблемы не представляют.
Ну и вторая часть - давать полезные кандидату задачи. Простите, но у меня не курсы повышения квалификации, а собеседование на хорошо оплачиваемую должность. Причем тут польза для кандидата?
Складываю ваши два и два и получаю ответ - клиент неадекватен. Это, разумеется, мое сугубо субъективное мнение.
А вообще мне довольно хорошо знаком подобный тип личностей. Они приходят на собеседование, на любой простейший вопрос уходят на полчаса в теорию численных методов, воспоминания о том, как писали ring-0 драйвера для электронной мухобойки и о влиянии космоса на результаты вычислений. В быту неприменимы.
0
да просто фс не пишут _ТАК_, вложенность классов недопустима для файловых систем ;). Сами подумайте почему. Реализация же действительно полезной фс потребует уймы времени на описание таблиц сущностей и прочие метаданные, даже несмотря на отсутствие какого-либо IO и, как следствие, слоя данных в целом.
По поводу ring-0 не передёргивайте. Вы даёте таск который в 99% случаев реализуется на компилируемом низкоуровневом языке программирования. И все принципы построения подобных вещей к нему должны быть применимы. Хотя проще называть вещи своими именами. Это пропросту никакая не "псевдо файловая система".
Вообще золотых сотрудников намного меньше чем золотых компаний. Как следствие - действительно полезных людей компании не выбирают из толпы. Вместо этого они выбирают компании. И вот такой вот диковатый вопрос про фс явно будет не в вашу пользу.
Я ниже писал уже - какой смысл в задачах, которые расчитаны на выявление малейших признаков программиста, которые гораздо проще выявить буквально за пару минут разговора?
По поводу ring-0 не передёргивайте. Вы даёте таск который в 99% случаев реализуется на компилируемом низкоуровневом языке программирования. И все принципы построения подобных вещей к нему должны быть применимы. Хотя проще называть вещи своими именами. Это пропросту никакая не "псевдо файловая система".
Вообще золотых сотрудников намного меньше чем золотых компаний. Как следствие - действительно полезных людей компании не выбирают из толпы. Вместо этого они выбирают компании. И вот такой вот диковатый вопрос про фс явно будет не в вашу пользу.
Я ниже писал уже - какой смысл в задачах, которые расчитаны на выявление малейших признаков программиста, которые гораздо проще выявить буквально за пару минут разговора?
0
А никто и не пытается заставить кандидата написать функциональную ФС. Все что требуется - понять поставленную ТЕСТОВУЮ задачу и ее выполнить. И нужный мне кандидат поймет, что от него хотят, и не будет пытаться создать "действительно полезную фс" за час времени.
На мой взгляд, умение делать простые вещи просто - необходимое качество программиста.
Что до "золотых сотрудников", то мое мнение таково. Программист - это ремесло в большей степени, чем искусство. К сожалению, после гениальных творцов клавиатуры остается несопровождаемый код.
С вашим постом внизу я скорее согласен, чем нет, но, тем не менее, считаю в ряде случаев необходимым после подобного устного собеседования предложить кандидату показать свои навыки в "боевой обстановке".
На мой взгляд, умение делать простые вещи просто - необходимое качество программиста.
Что до "золотых сотрудников", то мое мнение таково. Программист - это ремесло в большей степени, чем искусство. К сожалению, после гениальных творцов клавиатуры остается несопровождаемый код.
С вашим постом внизу я скорее согласен, чем нет, но, тем не менее, считаю в ряде случаев необходимым после подобного устного собеседования предложить кандидату показать свои навыки в "боевой обстановке".
0
Похоже, что вы человека на должность интерпретатора (или парсера) нанимаете :)
Комментировать не буду, так как людей никогда не нанимал и, как нанимать, не знаю, читал только статьи Джоела Спольски на эту тему.
Про то, что в России с кадрами полная Ж, наслышан, сочувствую. А я пока по другую сторону баррикад сам наёмный работник. При приёме на работу задачек мне никогда не давали, спрашивали больше на отвлечённые темы, типа хобби и т.п., т.е. пытались выяснить, какой я человек, как я понял, а не могу ли я в уме парсить код :)
Комментировать не буду, так как людей никогда не нанимал и, как нанимать, не знаю, читал только статьи Джоела Спольски на эту тему.
Про то, что в России с кадрами полная Ж, наслышан, сочувствую. А я пока по другую сторону баррикад сам наёмный работник. При приёме на работу задачек мне никогда не давали, спрашивали больше на отвлечённые темы, типа хобби и т.п., т.е. пытались выяснить, какой я человек, как я понял, а не могу ли я в уме парсить код :)
0
прочитал статью Джоэла о проведении собеседования
http://local.joelonsoftware.com/mediawiki/index.php/%D0%98%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%B2%D1%8C%D1%8E
и очень обрадовался, что я все-таки понимаю как работают указатели! =) и меня не огорчило даже то, что я не смог сразу решить данные здесь задачи, потому что опыта использования этих вещей у меня мало. а не писать такой быдлокод мне помогает гугл, чего считаю достаточным.
http://local.joelonsoftware.com/mediawiki/index.php/%D0%98%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%B2%D1%8C%D1%8E
и очень обрадовался, что я все-таки понимаю как работают указатели! =) и меня не огорчило даже то, что я не смог сразу решить данные здесь задачи, потому что опыта использования этих вещей у меня мало. а не писать такой быдлокод мне помогает гугл, чего считаю достаточным.
0
А у мну задание стандартное. Написать классег для парса гугля :) Времени - неделя.
Здесь в принципе все. И регекспы в минимальных объемах, и курл в минимальных объемах, и умение ковыряться до победного опупения.
По большому счету это + БД это и все нетривиальное, чем приходится заниматься реальному вебдевелоперу.
PS: Если есть жесткое чувство, что писал не соискатель - прошу переделать под яндекс )
Здесь в принципе все. И регекспы в минимальных объемах, и курл в минимальных объемах, и умение ковыряться до победного опупения.
По большому счету это + БД это и все нетривиальное, чем приходится заниматься реальному вебдевелоперу.
PS: Если есть жесткое чувство, что писал не соискатель - прошу переделать под яндекс )
0
>PS: Если есть жесткое чувство, что писал не соискатель - прошу переделать под яндекс )
Погуглит :)
Погуглит :)
0
я бы не стал тратить столько времени на тестовое задание. даже данные здесь задачи могут показать понимает человек, что он пишет или нет.
0
На мой взгляд эти задачки больше на понимание. Оно, конечно, важно, но ещё есть и логика решения задач. То есть нужно попросить человека решить небольшую задачку при Вас.
Я всегда просил людей сделать какую-нибудь не сложную системку типа новостной ленты с комментариями, а потом смотрел как они эту задачу решили.
Я всегда просил людей сделать какую-нибудь не сложную системку типа новостной ленты с комментариями, а потом смотрел как они эту задачу решили.
0
я вот программирую на PHP чуть ли не c 2000 года - каждый третий раз ошибаюсь в порядке параметров у функции in_array() и почти каждый раз лезу в мануал посмотреть формат sprintf(), про регекспы так совсем лучше промолчу
0
Если честно такие задачи ничерта не показывают профессионализм разработчика. Разве что - насколько давно сталкивался и сталкивался ли вообще он с какими-то конкретными штуками. Я на пхп писал достаточно давно и мне хватало ума не пытаться типизировать данные ( (bool)$for_what_reason?! ) в языке с динамической типизацией. И понять это легко, если подумать нахрена вообще динамическая типизация существует.
Задача на ООП опять же лишена смысла - вам ведь нужно узнать всего лишь понимает ли претендент основные принципы и идею. Да тут проще с глазу на глаз поговорить вообще PHP не затрагивая.
Я на собеседованиях (правда не PHP а Python) всегда только разговаривал лично. Всегда думал (и буду думтаь далее =)) что давать пресловутые задачки-пятиминутки нет смысла. Есть смысл в больших проверочных тасках а-ля "homework".
Да и ещё - я встречал в жизни много уж совсем рассеяных программистов. Им тяжело концентрироваться на чем-то что прямо кувалдой вбивают в их голову. Но спокойно сидя с 8 утра они порой показывают чудеса производительности.
Задача на ООП опять же лишена смысла - вам ведь нужно узнать всего лишь понимает ли претендент основные принципы и идею. Да тут проще с глазу на глаз поговорить вообще PHP не затрагивая.
Я на собеседованиях (правда не PHP а Python) всегда только разговаривал лично. Всегда думал (и буду думтаь далее =)) что давать пресловутые задачки-пятиминутки нет смысла. Есть смысл в больших проверочных тасках а-ля "homework".
Да и ещё - я встречал в жизни много уж совсем рассеяных программистов. Им тяжело концентрироваться на чем-то что прямо кувалдой вбивают в их голову. Но спокойно сидя с 8 утра они порой показывают чудеса производительности.
0
Можно я проверю свои навыки любителя, не читая коменты и не подглядывая в документацию? Поправьте меня, пожалуйста, где ошибусь.
1)abe. Суть исполнения и неисполнения условий зависит от приведения типов в "равенстве"(==) и "эквивалентности"(===)
2) Насколько я помню, ini_set() имеет смысл вызывать только в начале скрипта
Что-то вроде:
(string) x = 'foo'
Error.'x' не установлена.
3) ООП плохо знаю, могу ответить только на первый вопрос - с 5й версии PHP, так как наследование появилось начиная с этой версии.
4)
Инъекция:
http://site.ru/?x=1 or 1=1
Измененный вопрос:
$query = "SELECT anons,text FROM news WHERE id='".mysql_escape_string($_GET['x'])."'";
404 (Не помню, что именно нужно передать в header() для 404 ошибки):
if(mysql_num_rows($res) = 0){
header(...);
exit();
}
1)abe. Суть исполнения и неисполнения условий зависит от приведения типов в "равенстве"(==) и "эквивалентности"(===)
2) Насколько я помню, ini_set() имеет смысл вызывать только в начале скрипта
Что-то вроде:
(string) x = 'foo'
Error.'x' не установлена.
3) ООП плохо знаю, могу ответить только на первый вопрос - с 5й версии PHP, так как наследование появилось начиная с этой версии.
4)
Инъекция:
http://site.ru/?x=1 or 1=1
Измененный вопрос:
$query = "SELECT anons,text FROM news WHERE id='".mysql_escape_string($_GET['x'])."'";
404 (Не помню, что именно нужно передать в header() для 404 ошибки):
if(mysql_num_rows($res) = 0){
header(...);
exit();
}
0
Спасибо за пост.. теперь до собеседования можно сразу посылать в этот топик.
Найди правильный ответ из комментов и докажи почему :-)
Найди правильный ответ из комментов и докажи почему :-)
0
Задачи на собеседовании — от простого к сложному.