Задачи на собеседовании — от простого к сложному.

    Да, это крик души. Потому что в среднем за неделю я собеседую несколько, которые претендуют на должность php-программиста.

    Крик души, собственно в следующем:
    из, предположим, 10 человек простейшие тесты сдают максимум двое (один — наполовину или на две трети). Вот такая простая статистика.

    Может быть, я задаю слишком сложные вопросы ( несколько видоизмененные вопросы под катом )?

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

    Может быть, кто-то поделится своими задачами, или в комментариях каким-то образом родится что-то удивительно-простое, но позволяющее понять уровень человека?



    Задача номер раз.



    $x = 1;
    if ($x == '1') {
    echo 'a';
    }
    if ($x == true) {
    echo 'b';
    }
    if((bool)$x === true){
    echo 'e';
    }
    if ($x === true) {
    echo 'c';
    }
    if((int)$x === true){
    echo 'd';
    }
    /*
    Какая строчка выведется при исполнении скрипта?
    Почему исполняется или не исполняется каждое из условий?
    */

    Задача номер два



    /*
    Приходящая строка
    site.ru/?x=foo
    */
    error_reporting(E_ALL);
    ini_set('display_errors','1');
    ini_set('register_globals','on');

    var_dump($x);

    unset($x);
    ini_set('register_globals','off');

    var_dump($x);

    /*
    Что выведет скрипт в идеальных условиях сервера?
    */

    Задача номер три



    class Test{
    private $var;
    function setMe($value){
    $this->var = $value;
    }
    }

    class More extends Test{
    public $var;
    }

    $oTest = new Test;
    $oMore = new More;

    echo $oTest->setMe('foo');

    echo $oMore->setMe('foo');

    echo $oMore->var;

    echo $oTest->var;

    /*
    Для какой версии PHP будет работать этот скрипт?
    Что выведет этот скрипт?
    */

    Задача номер четыре



    /*
    Предположим, что входящий URL таков:
    site.ru/?x=1

    Предположим, что у нас есть таблица вида

    --news
    ----id (int,11)
    ----anons (varchar,255)
    ----text (text)

    Существуют записи
    1 анонс текст
    2 анонс1 текст2
    */

    $query = «SELECT anons,text FROM news WHERE id='».$_GET['x']."'";
    $res = mysql_query($query);

    if($res && mysql_num_rows($res)>0){
    while($row = mysql_fetch_assoc($res)){
    echo $row['anons'];
    echo $row['text'];
    }
    }

    /*
    Сделать SQL-иньекцию скрипта, которая выведет все существующие новости.

    Изменить запрос так, чтобы SQL-иньекция не работала.
    Отдать заголовок 404 Not Found в случае, если новости с указанным ID в базе обнаружено не будет.
    */
    Поделиться публикацией

    Комментарии 364

      0
      вполне тривиальные задачи – никакого rocket science... на zend certified engineer МНОГИМ сложнее, хотя и там в принципе только воздух
      • НЛО прилетело и опубликовало эту надпись здесь
          +1
          а если я не помню, что делает var_dump – это очень плохо? я к счастью уже не php-программист, но все равно интересно.

          оффтопик. а у вас не возникало желания продолжить мастер-классы работы в mac os x? ну там как вы используете OmniFocus, Quicksilver и т.п. Вот лично вы, крайне субъективно. Ваш личный инструментарий. На самом деле не так много информации такого типа, до всего приходится доходить самому. Вы как то писали про GTD в с помощью quicksilver, bbedit и еще чего-то. Было очень интересно, правда.
            0
            Программист не должен помнить все функции назубок. Его основное умение - структурирование и "разложение по полочкам". А принцип действия той или иной функции всегда можно узнать из мануалов.
            Так мне говорили мои преподаватели
          +8
          Ну не знаю как насчет таких задачь, я например больше предпочитаю посмотреть код написаный самим програмером, пускай объяснит что да как. :)
            0
            т.е. на собеседование вы просите принести часть рабочего проекта, возможно чужого?
              +1
              да хоть чужого, главное чтобы понимал как "оно" работает
                0
                Пробовал и такое. Получается в итоге совместный разбор скрипта - "Ты енто панимаищь?"
                  +1
                  Вот объясните как такое можно было написать:
                  function getMe($string){
                  $this->var = $string;
                  }
                  Получать me, при это передавая строку и присваивая var эту строку?
                  Какой-то извращенный и не понятый getter?
                  Или это пример чужого плохого кода?
                    0
                    Это - донельзя упрощённая задача на понимание приватов и наследований.
                      +2
                      Лучше бы уж так:
                      function setMe($value){
                      $this->me = $value;
                      }
                      А то "кобасит" не по-детски.
                        0
                        и тем не менее такой финт с именованием может отвлечь кандидата от основной задачи
                          0
                          уж извините, но похоже что в объявлении метода вы поменяли его имя, а вот при вызове так и остался getMe(). Такое еще больше сбивает ;)
                            0
                            Простите, поменял)
                –5
                Мне почему-то кажется, что профессиональный программист давным-давно забыл школьные годы и вряд ли ответит на подобного рода вопросы. "Вам шашечки или ехать?" ©
                  0
                  Профессиональные к нам, к сожалению, не ходят=(
                    0
                    Вероятно, Вам надо денег больше предлагать. Профессионалы есть, но они дорого стоят.
                    +10
                    если профессиональный программист не имеет понятия о том, как хранятся переменные в пхп и как они приводятся к типам, то грош цена его профессионализму
                      0
                      Во!)
                        –1
                        Не имеет понятия, или забыл в момент собеседования?
                        Я так понимаю что справочником пользоваться в этот момент нельзя?
                          0
                          ну это сравни программисту на сях, который не понимает указателей и "*", "&", ".", "->" выясняет подбором :)
                            +2
                            Интернетом наверное тоже, "профессиональный программист" должен знать все наизусть, не пользоваться автокомплитом, и, не дай бог, IDE.
                              0
                              IDE - та ты шо??!!! грязный PHP получится... notepad forever! :)
                                +2
                                Не заставляйте меня опять делать это :)
                                  0
                                  Да вообще надо писать на листочке и распознавать потом в FineReader :-)
                          +1
                          есть такая строчка магическая в C, очень хорошо в тестированиях C-программистов можно использовать:
                          while (*s++ = *t++); Кто с ходу вспомнит, что она делает? =)
                          а для PHP… даже не знаю
                            0
                            (str|mem|чтотоеще)cpy?)) если правильно помню (на сях ничего не писал уже давно...) ;) с ходу вспомнил =)
                              0
                              Наверное просто строка t присваивается s
                                +5
                                Null-terminated строку копирует, я думаю. Вообще, если не угадывать, то в этом примере ещё нужно помнить приоритет операторов, чтобы правильно ответить. За n-лет программирования на плюсах я их так и не запомнил, если нужно приходится в MSDN набирать "operator precedence".
                                  0
                                  да, верно, копирование строки.
                                    0
                                    а можете объяснить почему так? :)
                                    s и t — переменные-указатели, скорее всего char? по *s и *t - наверное будут сами значения.
                                    инкрементом ++ мы сдвигаем указатель на +1, что слева, что справа.
                                    = присваивает значение char справа на левую сторону.
                                    но как срабатывает условие, что бы while завершился?
                                      0
                                      а просто. когда копируется символ с кодом 0, while воспринимает его как false, именно поэтому все комментаторы выше говорили о том, что нулевой символ там быть обязан, иначе не работает.
                                        0
                                        так а s и t - char-ы? Если нет, тот как понять на глаз, что они строковые?
                                  0
                                  очень просто, хоть и выглядит некрасиво, я строки так всегда копировал :)
                                    0
                                    Опасная практика, buffer overflow и всё-такое. Лучше либо использовать что-то типа std::string, либо функции типа strcpy_s или их аналоги.
                                      0
                                      да, если s больше, чем выделенно под t, то будут проблемы
                                        0
                                        сокрее наоборот: если t больше, чем выделенно под s, то будут проблемы
                                        t копируется в s
                                    +39
                                    Я тоже когда-то гонял программистов всякими подобными тестами. Потом перестал.

                                    Потому что не хочу чтобы в проектах появлялись хитрые куски кода. Я пришел к выводу, что чтобы проект жил, код должен быть ясный, тупой, и написанный как по рельсам ( нет, я не про Rails )

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

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

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

                                    Еще я бы посоветовал вот что - при собеседовании обязательно обращайте внимания на ощущения от общения с человеком. Вам же с ним работать годы своей жизни, которая не бесконечна.
                                      +2
                                      профессиональный программист тем и отличается от новичка, что он простым кодом решает сложные задачи, а не наоборот :)
                                      вроде эта мысль где-то на хабре уже освещалась
                                        0
                                        Слышал в формулировке:
                                        Хороший программист пишет гениальные вещи тупым кодом, а не наоборот.
                                        Умно сказанно, считаю.
                                        +2
                                        Все правильно! Сам кода-то не прошел собеседование на котором меня завалили вопросами по нюансам php. И прошел следующее же собеседование, где мне нужно было сделать мини задиние по спецификации, а потом внести в него какие-то изменения "на лету".
                                          0
                                          мне кажется это самый эффективный метод проверки программиста, сначало делает тестовое задание, потом на лету в офисе пару-тройку более мелких изменений в этом задание.
                                          0
                                          Согласен на 100% :)
                                            0
                                            В сущности, проще сказать, что важно умение применять теорию на практике, а не знать все нюансы теории, которые все равно в большинстве случаев не понадобятся.
                                          • НЛО прилетело и опубликовало эту надпись здесь
                                              0
                                              эээ .. 5 ? правильно ?
                                                0
                                                нет, результат инкримента не lvalue, поэтому выражение не скомпилируется
                                                  –1
                                                  не интерпритируется
                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                      0
                                                      не факт. Вполне себе может быть и 5:
                                                      int x = 5;
                                                      int &t = ++x++;
                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                    0
                                                    вот честно это бред, сколько программлю не разу таким не пользовался и не буду.
                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                        +1
                                                        В Си эта конструкция скомпилируется но может запустить баллистическую ракету и отформатировать ваш жёсткий диск: два изменения переменной между "sequence point"'ами...
                                                      0
                                                      ошибка синтаксическая будет :)
                                                      +2
                                                      а есть еще такая
                                                      $a = 1;
                                                      $b = 2;
                                                      $c = $a+++$b;
                                                        0
                                                        Это пи;№"ц, а не задача =) Хоть бы скобки были $c = $a + (++$b);
                                                          0
                                                          или $c = ($a++) + $b

                                                          Неужели вы считаете это действительно полезно задачей?
                                                            0
                                                            со скобками любой может :)

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

                                                            это для эрудитов. реальной пльзы от занния решения тут нет. всего лишь трюк, не более того.
                                                              0

                                                              $a += $b;
                                                              $b = $a - $b;
                                                              $a -= $b;
                                                                0
                                                                я имел ввиду универсальный способ - который будет работать для любых скалярных переменных
                                                                  0
                                                                  Тогда прошу прощения :)
                                                                  Будет интересно увидеть от Вас решение.
                                                                    +1
                                                                    list($a, $b) = array($b, $a);
                                                                      –2
                                                                      $a=$a^$b;
                                                                      $b=$a^$b;
                                                                      $a=$b^$a;
                                                                        0
                                                                        Ну, формально-то новая переменная (массив из b и a) создается, другое дело что имени у неё нет и она является массивом.

                                                                        А в инсте нам давали такую задачку на СИ и решение какраз было в сложении-вычитании (переменные были целыми...).
                                                                        0
                                                                        В перле: ($a,$b) = ($b,$a);
                                                                        А в PHP как обычно...
                                                                    0
                                                                    Python, если не изменяет память:
                                                                    a,b=b,a
                                                                    Кортежи рулят
                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                    0
                                                                    да из С, там было 5 плюсов. в примере убирал пока не запустится
                                                                    решение можно узнать только если знаешь как интерпретатор разбирает данное выражение
                                                                      0
                                                                      это http://en.wikipedia.org/wiki/Undefined_b… в с++

                                                                      А вобще приминительно к php это вопрос на кругозор :)
                                                                      –1
                                                                      $c будет равно 3. это все равно что $c = ($a++)+$b;
                                                                      а если так $c = $a+(++$b); будет 4
                                                                      0
                                                                      копирует строку ... сходу ...
                                                                        0
                                                                        Когда-то я восхитился с++, когда увидел разбор этого примера у Страуструпа.
                                                                          0
                                                                          За такую строку надо очень сильно бить того, кто её написал. Это стандартный пример у Страуструпа, и если помните проблему с RPC у Microsoft, то она была у них именно в этой конструкции. А что если этого нуля не будет или t будет больше чем s... Я бы лучше узнавал у кандидата, где здесь потенциальная ошибка безопасности и как её можно исправить.
                                                                          +1
                                                                          Когда я принимал людей я, в качестве одной из тестовых заданий, давал задачу на построение дерева коментариев + генератор N коментариев и отпускал домой. Когда чел приходил, я увеличивал N на 3 порядка и спрашивал почему тормозит =) В процессе общения выяснялось что это за чел

                                                                          ЗЫЖ Кстати, я бы не решил бы задачу номер 2 (я смог бы только угадать правильный ответ =) За 6 лет ini_set мне ни разу не пригодилась
                                                                            0
                                                                            Ну эта задача на понимание глобальных массивов=)
                                                                              0
                                                                              Скорее решение этой задачи покажет как чел умеет оптимизировать MySQL (а ему нужно сообразить, что рекурсивно эту задачу делать нельзя и исходя из этого соображения он должен придумать правильную структуру таблицы с коментами) + конечно, он должен придумать как это дерево хранить в массиве и как заполнять этот массив =)
                                                                              +1
                                                                              имхо хорошая задача.
                                                                              а пользоваться поиском соискателям даете, или расчитываете что они все помнят?
                                                                                0
                                                                                Что они будут искать?=) Решение плитки?+)
                                                                                А так - рядом стоит компьютер. Если у человека хватает наглости - он ищет)
                                                                                  +6
                                                                                  Мне кажется, что если чел не помнит какую-то мелочь (синтаксис или название функции), и знает где и как это найти, то можно считать, что он знает матчасть.
                                                                                    0
                                                                                    +1
                                                                                      0
                                                                                      да вообще проводить тестирование на листиках это блин полный дебилизм
                                                                                        0
                                                                                        На листках проводить решения - как раз нормальный подход, но в этом случае нужно смотреть на алгоритмы и/или дизайн, а никак не на тонкости синтаксиса языка...
                                                                                          0
                                                                                          Нет, часть тестирования стоит проводить на листике.
                                                                                          Но это явно должно быть не тестирование знания синтаксиса языка и названий библиотечных функций.

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

                                                                                  Все задачи кроме второй нормальные, но явно не достаточные для определения компетентности и способности испытуемого. Сам тоже даю тест с подобными заданиями на знание пхп, баз данных, безопасности и внимательности.
                                                                                    0
                                                                                    И чуваки, конечно же, выдергивали дерево рекурсивно... ;)
                                                                                      +1
                                                                                      Кто не знает как это делать кроме рекурсии - тому сюда http://dev.mysql.com/tech-resources/arti…
                                                                                      +29
                                                                                      Давно интересует, кто нужен авторам данных тестов.
                                                                                      Программисты или интерпретаторы?
                                                                                        0
                                                                                        Соглашусь с вами. Тут ищутся интерпретаторы.
                                                                                          0
                                                                                          Не соглашусь, задачи тривиальные и очень часто используемые, sql иньекции, глобальные массивы, ooп (кстати, на этой задаче я засыпался, со 100% гарантией ответ дать не смогу), приведение типов.
                                                                                          Человек который не знает об нъюансах этих вещей творит код содержащий кучи трудноотслеживаемых ошибок. И опять же это вопросы ответы на которые приходят в основном с опытом, когда ты делаешь эти самые ошибки и исправляешь их. Согласитесь мало кто будет хорошо разбираться в безопастности не помучившись всласть с основами, и наоборот, знание безопастности говорит что человек достиг определенного уровня во всей области.
                                                                                          НО. Все эти задачи только на кодинг(ну за исключением ооп). Вам нужны кодеры или профессиональные программисты. Может добавить задачку на проектирование и "отпустить домой"?
                                                                                            +1
                                                                                            А человек знающий в идеале эти нюансы творит много трудноотлаживаемого кода :)
                                                                                            Вопросы тянут на соревнования какие-нибудь, а не выявление знаний. Ну кто же будет программировать без справочника, все же не упомнишь.
                                                                                              –2
                                                                                              А человек знающий в идеале эти нюансы творит много трудноотлаживаемого кода :)


                                                                                              Спорное утверждение. Человек, который этого не знает, неэффективен, т.к. больше занимается чтением, а не программированием. Вам читатель или программист нужен?
                                                                                              0
                                                                                              Я думаю, нужно давать две задачки ;)
                                                                                              Для полноты картины, что называется. Иначе за таким спецом самому придется все перепроверять и переписывать.
                                                                                            –1
                                                                                            +1 :))) в точку.
                                                                                              +1
                                                                                              Любую задачку из трёх можно легко решить на лету, так сказать. Любой программист - уже немножко интерпретатор.
                                                                                                0
                                                                                                нужно понимать как работает то, что вы пишите :)
                                                                                                  0
                                                                                                  великолепный комментарий :)))
                                                                                                  +3
                                                                                                  Задача с SQL инъекцией единственная стоящая.
                                                                                                  Я сам не тестировал, но я бы попросил реализовать паттерн Singleton, например. Это актуально и не слишком заумно, а register_globals - это уже устарело, как мне кажется.
                                                                                                  А вот как отдать 404 заколовок с ходу я и не вспомню - по-моему, это справочная информация.
                                                                                                    0
                                                                                                    Это - работа с браузером. header('HTTP/1.1 404 Not Found'); - это залог любого SEO как минимум.

                                                                                                    Насчет регистер-глобалз - это показательные условия php для исполнения.
                                                                                                      +3
                                                                                                      И что, содержание подобных строчек в уме делает человека хорошим программистом?
                                                                                                        0
                                                                                                        Что такое HTTP и его код ответа, какой код ответа указывает отсутствие документа и как HTTP-заголовки устанавливаются в PHP веб-программист знать обязан.
                                                                                                          0
                                                                                                          Я вот честно не знал как правильно писать эту строчку. Но сейчас ради интереса ввел в гугле "send 404 php" и за полминуты узнал всё что нужно, плюс нашел несколько готовых классов для обработки любых ошибок, что, как мне видится, намного полезнее заученной строчки.
                                                                                                            0
                                                                                                            обучаемость - несомненно большой плюс.
                                                                                                            но обычно в такой ситуации понимаешь что кандидат не имел опыт работы с этим прежде, либо опыт не значительный. Т.е. подводных камней не знает, и начами баги не отлаживал - это еще только предстоит (сразу после того как найдет всю необходимую информацию).
                                                                                                              0
                                                                                                              В такой ситуации понимаешь знает ли он строчку 404 или нет.
                                                                                                                0
                                                                                                                а почему вы делаете акцент на "заголовок 404", а к примеру не на "отдать заголовок"? :)

                                                                                                                найдутся кандидаты которые не знают не только как отдать заголовок, но и зачем. я не в коем случае не защищаю и не ругаю примеры. нужно просто иметь ввиду для какого уровня специалиста это задание. для новичка проверить знает ли он про заголовки — вполне уместно.
                                                                                                          +1
                                                                                                          А еще желательно знать, что PHP может быть установлен, как модули или как CGI, а в CGI нельзя устанавливать код ответа — нужно посылать "Status: 404 Not Found", чтобы апач сам с ним разбирался.
                                                                                                            0
                                                                                                            И это, к сожалению, знает так мало народу=)
                                                                                                            Помню, как сам в первый раз с этим впёрся - еле нашёл решение, но сам нашёл=)
                                                                                                              –1
                                                                                                              А если я никогда не использовал CGI и не собираюсь, зачем мне это знать?
                                                                                                                0
                                                                                                                Никто с CGI не собирается. А потом фигак — а почему я перенес файлы на сервер и у меня перестало работать?
                                                                                                              0
                                                                                                              А хороший программист обычно держит в памяти примерный список функций документации, а такие вещи как в примерах, когда страниц 1000 напишешь с нуля, уже сами в памяти оседают.
                                                                                                              К АВТОРУ: может деньги мааленькие предлагаете? Меньше чем за 1500E хорошего программера не найдете :)
                                                                                                                0
                                                                                                                Нормальные предлагаем=) Нам и не нужен особенно хороший. Скорее кодер нужен - ковыряться в чужих движках.
                                                                                                                  0
                                                                                                                  Для ковыряния в чужих движках нужен куда более грамотный (и потому дорогой) программист, чем для писания кода с нуля. Так что извините...
                                                                                                                    0
                                                                                                                    Нет, вы ошибаетесь=)
                                                                                                                    Требуется же не глобальная переделка движка, а внесение нескольких дополнительных функций. Ради этого можно не лезть глубоко внутрь.
                                                                                                                      0
                                                                                                                      Менее грамотный прогарммер не сможет нормальный модуль написать, зато напишет обычный здоровый хак, который потом даст о себе знать.
                                                                                                                  +1
                                                                                                                  Не факт что оседают. Я например никогда не помню последовательность параметров в функциях, и мне это ни разу не помешало. Для этого есть документация и автокомплишн, а лишние сведения засоряют мозг.
                                                                                                              0
                                                                                                              да, я-бы тоже порылся в вики, хотя там отдается вроде в header('404/HTTP 1.1')
                                                                                                                +1
                                                                                                                По-моему четвёртая задача вообще не решаемая, т.к. в ней ошибка.

                                                                                                                >$query = "SELECT anons,text FROM news WHERE id='".$_GET['x']."'";
                                                                                                                >$res = mysql_query($res);

                                                                                                                переменная $res не определена ;)
                                                                                                                  –1
                                                                                                                  Уже исправил+)
                                                                                                                  0
                                                                                                                  >> я бы попросил реализовать паттерн Singleton

                                                                                                                  Этот патерн вообще не имеет нормальной реализации для PHP class X extends Singleton{}
                                                                                                                  $x = X::getInstance();

                                                                                                                  В PHP 5 с чем-то добавили мега-костыль get_called_class() для того чтобы Singleton::getInstance() получить имя класса экземпляр которого надо создать. Есть люди которые пытались обойти отсутствие этой ф-ции с помощью BackTrace-а %-)

                                                                                                                  По этому не стал бы я про синглтоны...
                                                                                                                    0
                                                                                                                    К сожалению часть текста съелась:

                                                                                                                    Этот патерн вообще не имеет нормальной реализации для PHP < = 5.2. Если кто-то владеет секретным кодом, поделитесь - буду очень благодарен.

                                                                                                                    Под "нормальной" реализацией я понимаю такой варриант:
                                                                                                                    ...
                                                                                                                      0
                                                                                                                      зачем тебе синглетон как класс? сделай его через метод, всегда хватало такого способа
                                                                                                                        +1
                                                                                                                        Потому что это в некоторой степени противоречит концепции ООП, т.к. это приводит к дублированию кода.
                                                                                                                        В итоге мы получим множество одинаковых методов, которые, если их захочется модифицировать, придётся менять все.

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

                                                                                                                        Пример два: у меня есть множество классов для работы с таблицами БД. Каждый подобный класс наследуется от одного потомка. Поняв, что эти классы создаются слишком часто я мог бы преобразовать их в синглтоны простым наследованием базового класса от класса Singleton, а тут мне придётся делать синглтон из каждого класса. Опять же я не смогу произвести наследование от этих классов, т.к. они после этого перестанут быть синглтонами, если я не перегружу в них метод getInstance().

                                                                                                                        Я в результате пришел к достаточно некрасивому решению, но который исправляет указанные недостатки. Вместо
                                                                                                                        new ClassName() я пишу XXX::getInstanceOf('ClassName'), где XXX - глаобальный статический класс который отвечает за создание синглтонов...

                                                                                                                        Во общем, по этому, я бы не стал просить на собеседовании изобретать синглтоны
                                                                                                                  +6
                                                                                                                  Если еще не читали, рекомендую посмотреть статью Джоэла о проведении собеседования. Очень полезно! :)
                                                                                                                    0
                                                                                                                    Спасибо за ссылку, замечательная статья!
                                                                                                                      0
                                                                                                                      Спасибо!=)
                                                                                                                      +2
                                                                                                                      собственно, рекомендую тест для программистов от мамбы (очень хорош):
                                                                                                                      http://www.corp.mamba.ru/test/index.phtml

                                                                                                                      а еще можно поискать различные он-лайн сертификации, и если оной у человека нет - дать комп и заставить пройти.
                                                                                                                        0
                                                                                                                        я не минусовал, но ответить все таки решил. Тест от Мамбы не очень хорош. Я работаю в linux, но такие мелочи, как dd dt df и прочее просто не запоминаю. Если мне что-то надо сделать - я нахожу ответ, использую, и почти тут же забываю (это не относится к работе, линукс вопросы и свн подковырки больше на другую специализацию тянут. работать надо, а не выеживаться знанием короткого варианта svn checkout).
                                                                                                                          0
                                                                                                                          Он слишком заумный и шибко много в нём не ахти как нужного, по сути.
                                                                                                                            0
                                                                                                                            Спасибо, потешил эго)
                                                                                                                              0
                                                                                                                              Я как-то давно уже проходил этот тест. Он мне наименование "крутой PHP программист", поставив 378 баллов. Судя по вопросам, там нужен программист на PHP, который в будет в команде (вот зачем нам SVN) работать над каким-то заточенным под Linux проектом =)
                                                                                                                                0
                                                                                                                                я как-то проходил этот тест. Он мне наименование "хороший РНР программист", причем количество баллов не помню, даже близко. Но суть в том, что я о ПХП совсем ничего не знаю :)
                                                                                                                                0
                                                                                                                                Там мало SQL, зато много Линукс консоли
                                                                                                                                  0
                                                                                                                                  Я ради интереса заставил жену этот тест пройти) Она ничего не смыслит в линуксе и программировании, она отвечала исходя из логики дизайнера:) Немного не дотянула до хорошего программиста, набрав 116 балов
                                                                                                                                  –2
                                                                                                                                  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 а люди все торозят.

                                                                                                                                  Вердикт : уважаемый - берите на работу Си программистов. В Сях препаред статемтами пользоваться часто удобнее чем собранными запросами, и чертовски быстрее они работают. И люди привыкают к правильному решению.
                                                                                                                                    0
                                                                                                                                    думаю что ваша инъекция не сработает. Нужно не AND, а OR
                                                                                                                                      –2
                                                                                                                                      http://site.ru/?".x=1' OR 1;DELETE FROM news;
                                                                                                                                      Некоторые враперы правильно воспримут `;` как разделитель двух команд и будет бяка.
                                                                                                                                      Если табличка называется не так.. ну можно попробовать инжекнуть SHOW TABLES :)
                                                                                                                                        0
                                                                                                                                        не прокатит, пхп выполняет только один оператор
                                                                                                                                          0
                                                                                                                                          можно попробовать извратиться вложенными запросами. Вариантов много. Но это уже глубокое знание sql нужно.
                                                                                                                                      –1
                                                                                                                                      насчет номера три - такое, если я ничего не путаю, ввели в php5 - если человек писал с использованием ООП - ответит сразу+)

                                                                                                                                      Всё остальное правильно, кроме AND=)
                                                                                                                                        0
                                                                                                                                        Както мой препод задался интересной задачей.
                                                                                                                                        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)
                                                                                                                                              0
                                                                                                                                              знаю-знаю =)
                                                                                                                                              ну мы же о C сейчас? там по идее все неопределенности известны, т.к. есть четкий стандарт, в котором иногда и возникают неопределенности. нужно смотреть что в стандарте. кстати про overloaded переменные, как термин, в первый раз слышу. я думал, что термин скрытие области видимости полностью раскрывает такие случаи.
                                                                                                                                                0
                                                                                                                                                Си более полный чем пхп чтук. И хитростей в нем больше.
                                                                                                                                                А насчет overloaded переменых - да они нигде не описаны, их вроде нет.
                                                                                                                                                Но иногда они проявляются.
                                                                                                                                                Не спорте - проверте :)
                                                                                                                                                  0
                                                                                                                                                  оки доки -) я не программлю на плюсах сейчас, так что мне сейчас не досуг =)
                                                                                                                                                0
                                                                                                                                                > А вот тут правильный ответ - как повезет :)
                                                                                                                                                Бред... Он выдаст именно то, что сказал wpm1. Хочешь float от A - приведи сначала к типу A. Матчасть учить нужно. ;)
                                                                                                                                                  0
                                                                                                                                                  У вас блог клевый, на какой платформе сделан?
                                                                                                                                                    0
                                                                                                                                                    Можно на ты. :)
                                                                                                                                                    Wordpress там обычный.
                                                                                                                                              0
                                                                                                                                              Задачи первого типа никада не любил и не понимал, ибо это не пример хорошего программирования, а вот со вторым случаем сталкивался помоему будет именно ошибка на втором цикле, следующая: переменная i уже объявлена, потому что область видимости объявления int i = 0 в первом цикле не ограничивается телом этого цикла, а вот компилятор не вспомню, но вроде GCC
                                                                                                                                                0
                                                                                                                                                Подобное несоответствие стандартам (то есть когда объявленная в заголовке цикла переменная имеет большее время жизни чем сам цикл) показывает визуал студия 98 года (это которая шестая). GCC же наоборот к этому относится ревностно и ограничивает время жизни переменной только циклом где она объявлена.
                                                                                                                                                  0
                                                                                                                                                  К сожалению не тока старый VS но и новый Борланд.
                                                                                                                                                  А его, опять же к сожалению, часто используют.
                                                                                                                                                  А так.. фигня какая - область видимости не соблюдается.. пфф :)
                                                                                                                                          0
                                                                                                                                          А напишите решение с sql инъекцией. Именно выполнение инъекции, а не защита от нее.
                                                                                                                                          Мне что-то с ходу в голову не приходит как это сделать.
                                                                                                                                            0
                                                                                                                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                                              0
                                                                                                                                              Кажется допетрил :)
                                                                                                                                              0
                                                                                                                                              А как вы относитесь к тестам на сообразительность? Сам то такие собеседования не проходил, но читал на rsdn что есть такая целая часть в интервью.
                                                                                                                                                0
                                                                                                                                                Времени, к сожалению, тратится больше=( Но идея хороша - на нескольких собеседованиях я задал тест про плитку золота от микрософта - не решил, правда, никто, но сколько морщин собиралось около лба!
                                                                                                                                                0
                                                                                                                                                Помоему - это слишком для тестовых заданий, кроме инжекта.
                                                                                                                                                Человек не машина. Есть люди с энциклопедической памятью, вот такие может и вспомнят все мелочи, на практике чаще всеравно разработчик уточняет все по спецификациям.
                                                                                                                                                "Дляч какой версии PHP будет работать" лучше игнорировать. Если в проекте будет использоваться ООП, то логично предположить что >5 версии. Я, например не помню точно в какой версии - что добавлялось в php.
                                                                                                                                                  +5
                                                                                                                                                  Я думаю обычный человек( не энциклопедическая машина ) ОБЯЗАН это не помнить.
                                                                                                                                                  Забывать мусор, оставляя место под главное - это главное :)
                                                                                                                                                    0
                                                                                                                                                    А что будет не слишком для тестовых заданий? Не каждый принесёт свой код на просмотр.

                                                                                                                                                    В данных конкретных задачах не нужна энциклопедическая память. Среднестатический кодер сталкивается с 80% содержания задач в каждой своей программе.
                                                                                                                                                      0
                                                                                                                                                      "Не слишком" будет просто портфолио. И желание человека развиваться и осваивать новое. Я вообще против стандартных резюме.
                                                                                                                                                      Человек должен придти, сказать я вам нужен и доказать это во время испытательного срока. Не доказал, уходи. Просто часто бывает что подобные тесты лишают команду хорошего человека, который будет двигать весь процесс работы. Может он не мега Гуру в php, но будет подавать интересные идеи и просто хорошо реализововать то, что надо дочитывая то что необходимо.
                                                                                                                                                        0
                                                                                                                                                        Меня всегда интересовало. Организации требуются специалисты и по вашим словам эти специалисты должны прийти и доказать, что они требуются, а потом еще отработать на испытательном сроке (хорошо если без понижения зарплаты). Вы не находите никаких логических противоречий в такой позиции?
                                                                                                                                                          0
                                                                                                                                                          Я имел в виду молодых специалистов. Если человек уже хорошо себя зарекомендовал, почему бы не взять его просто на работу?
                                                                                                                                                            0
                                                                                                                                                            За красивые глаза?=) Фирма, конечно, неизбежно идёт на риски, но всё-таки лучше уменьшить их уровень-то)
                                                                                                                                                        0

                                                                                                                                                        А что будет не слишком для тестовых заданий?

                                                                                                                                                        <?='Hello World!'?> =))))
                                                                                                                                                          0
                                                                                                                                                          Нет, это тоже слишком, ведь надо знать какая ini-опция отвечает за работу сокращенной нотации <? ?> вместо <?php ?> :)
                                                                                                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                                                                        0
                                                                                                                                                        мне кажется хорошо выяснить уровень можно спрашивая, знает ли человек, что такое паттерны, привести пример. потом спросить алгоритмы сортировки, которые знает. спросить про принципы ООП (наследование, полиморфизм, инкапсуляция). а по ответам уже будет видно, какой уровень у человека и стоит ли говорить дальше.
                                                                                                                                                        а вообще, возможно, правы те, кто говорят что среди пхпшников много тех, кто программировать совсем не умеет.
                                                                                                                                                          0
                                                                                                                                                          Что-то не приходят на собеседование такие программисты :(
                                                                                                                                                            0
                                                                                                                                                            чорт, а почему? мало предлагают денек? или задачи скучные?
                                                                                                                                                              0
                                                                                                                                                              мало предлагаете, значит
                                                                                                                                                              0
                                                                                                                                                              паттерны ладно, но тут речь о другом уровне, но алгоритмы сортировки, извините, это бред. в php мне задача ручной сортировки не встречалась ни разу, благо функций для работы с сортировкой навалом, да и вообще такая задача редко возникает.
                                                                                                                                                              то же и по ООП. Вам шашечки или ехать. А если человек не помнит определение полиморфизма, что не мешает ему проектировать сложные системы. На ваш тест хорошо ответит студент отличник без опыта работы но может запросто завалится хороший программист.
                                                                                                                                                                0
                                                                                                                                                                гм. соглашусь про сортировку, но про ООП не соглашусь. не знать что такое полиморфизм и программить это значит что в голове каша =) а отвечать можно не определением, а простым примером полиморфизма, если уж определение не помнишь.
                                                                                                                                                                  0
                                                                                                                                                                  Лучше давать пример задачи и просить сделать ее.
                                                                                                                                                                    0
                                                                                                                                                                    согласен, если есть хотя бы сутки-двое - это лучше.
                                                                                                                                                                0
                                                                                                                                                                надо хоть раз про методы сортировки прочитать... я тут на ZDE собираюсь сдавать - вдруг спросят :)
                                                                                                                                                                  0
                                                                                                                                                                  гм. читал я их книжку для подготовки. там кажется во вступлении сказано, что они будут спрашивать про алгоритмы сортировки. но поскольку экзамен заточен на пхп, требуется интенсивное знание всяких методов работы с массивами, которые всяко эффективнее написанного программером кода.
                                                                                                                                                                0
                                                                                                                                                                что-то удивительно-простое, но позволяющее понять уровень человека?

                                                                                                                                                                Один из критериев, позволяющих понять уровень человека - это нормальное знание русского языка :)
                                                                                                                                                                  0
                                                                                                                                                                  чистые аккуратно постриженные волосы - ногти. скромная но опрятная одежда. я не прошел... :)
                                                                                                                                                                    –1
                                                                                                                                                                    Приходите к нам)))
                                                                                                                                                                    0
                                                                                                                                                                    В сопряжении со способностью внятно излагать мысли.
                                                                                                                                                                      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"
                                                                                                                                                                        0
                                                                                                                                                                        3) $x = true; ?
                                                                                                                                                                        0
                                                                                                                                                                        А ответ на вопрос 3 какой?
                                                                                                                                                                        +1
                                                                                                                                                                        Кстати, 3-я задачка вполне себе аналог 1-й из поста, но более забавная. Сначала можно в ступор впасть. ;)
                                                                                                                                                                          0
                                                                                                                                                                          так задача и получилась из ситуации которую я однажды словил, написав в if вместо "==" =
                                                                                                                                                                          +1
                                                                                                                                                                          3 задача понравилась, красивее аналогичной в посте. Регулярки - да кто ж их помнит кроме тех кто по 10 штук в день пишет, редкая это работа регулярки, чуть что сложное я отдельнь их отлаживаю и в мануал лажу. Думаю не я один.
                                                                                                                                                                          2 - если вы отлично разбираетесь в теме, по моему очень неплохой способ выяснить уровень, только нужно разрешить пользоваться интернетом и не спешить, заодно и умение искать информацию определите.
                                                                                                                                                                            0
                                                                                                                                                                            издеваться не хорошо :) подсчитать количество пользователей невозможно, можно лишь прикинуть группируя хиты по косвенным вещам таким как ip, forwarded_for, cookie, user agent, координаты и размеры окна обозревателя.
                                                                                                                                                                              0
                                                                                                                                                                              в урл сессию передвать.. ну а там уже id держи
                                                                                                                                                                                +1
                                                                                                                                                                                так вы подсчитаете количество сессий.
                                                                                                                                                                                0
                                                                                                                                                                                так здесь проверялась способность мыслить, находить нестандартные решения...ну и знание того что хранится в $_SERVER
                                                                                                                                                                              +1
                                                                                                                                                                              Все «справочные собеседования» по-моему не дают объективной картины. Если бы мне нужен был человек, я бы спрашивал какие у него есть рабочие проекты в сети, какие нагрузки они выдерживают и какое участие в них он принимал. Согласен что должны быть основные знания у человека, но вряд ли кто пишет такой код:
                                                                                                                                                                              error_reporting(E_ALL);
                                                                                                                                                                              ini_set('error_reporting','1');
                                                                                                                                                                              ini_set('register_globals','on');

                                                                                                                                                                              var_dump($x);

                                                                                                                                                                              unset($x);
                                                                                                                                                                              ini_set('register_globals','off');
                                                                                                                                                                              И потом в нем пытается разобраться.
                                                                                                                                                                                0
                                                                                                                                                                                Согласен. Я например никогда не пользовался var_dump. Зачем, когда есть xdebug?
                                                                                                                                                                                  –1
                                                                                                                                                                                  "Зачем пользоваться print, если есть echo?" ?
                                                                                                                                                                                    +1
                                                                                                                                                                                    Я бы поставил вопрос так - зачем вообще выводить ошибки в броузер? Есть отладчики, даже gui-шные.
                                                                                                                                                                                  0
                                                                                                                                                                                  Вот я о том тоже отписывал, эти обычно человек фокусируется не на тонкостях языка, а на конкрентых задачах.
                                                                                                                                                                                  0
                                                                                                                                                                                  всегда ненавидел тесты на знание тонкостей. Не пробовали давать какое-нибудь простое задание перед собеседованием и смотреть как оно выполнено? В конце концов наличие мозга значительно важнее знания всех тонкостей.
                                                                                                                                                                                    –2
                                                                                                                                                                                    Где же тут тонкости-то?=) Обычная работа)
                                                                                                                                                                                    0
                                                                                                                                                                                    так а проблема-то в чем? надо больше чем двое? или те двое что проходят тесты - не проходят фейс-контроль? %)))
                                                                                                                                                                                      –2
                                                                                                                                                                                      СБ не проходят=)
                                                                                                                                                                                      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);}
                                                                                                                                                                                        0
                                                                                                                                                                                        "аффтар жжет"
                                                                                                                                                                                          0
                                                                                                                                                                                          Оно вывело кусок числа пи. Как ОНО это сделало?! :)
                                                                                                                                                                                            0
                                                                                                                                                                                            код не проверял, но чувствую что разложил e^x в ряд и посчитал e^1
                                                                                                                                                                                            –1
                                                                                                                                                                                            действительно - убавится. и претендента с таким кодом не возьмут.
                                                                                                                                                                                            ибо код должен быть читаем и понятен при его просмотре.
                                                                                                                                                                                            –3
                                                                                                                                                                                            За код $query = "SELECT anons,text FROM news WHERE id='".$_GET['x']."'"; нужно отрывать руки.
                                                                                                                                                                                            Как же проверка приходящих данных? Типизация.. Если id строго intовое значение - intval($_GET['x']) :-) причем еще есть вариант, что параметра нет в урл'е. Поэтому нужно проверять еще isset и, по желанию, empty.

                                                                                                                                                                                            А так задачки простые, вполне.
                                                                                                                                                                                              0
                                                                                                                                                                                              Вы условие задачи внимательно читали? Такой запрос там специально!
                                                                                                                                                                                                0
                                                                                                                                                                                                Читал. Поэтому и говорю, что если брать программиста и давать ему такие задачи - он не увидит в них ничего плохого, новичок. Натасканный программист прокомментирует, что код ужасен и прикрепит к этому достаточное количество доводов. Давайте задачи посложнее и у самих претендентов на работу будет хорошее впечатление о месте работы.
                                                                                                                                                                                                  0
                                                                                                                                                                                                  А, вообще, вопрос надо по другому ставить "Перепишите этот код с учетом всех правил безопасности".
                                                                                                                                                                                                    0
                                                                                                                                                                                                    спасибо за формулировку)

                                                                                                                                                                                                    Вы не поверите, что люди выдают!

                                                                                                                                                                                                    Из последнего -

                                                                                                                                                                                                    $_GET['x'] = $_GET['x']+0;

                                                                                                                                                                                                    или

                                                                                                                                                                                                    if(intval($_GET['x'])){....

                                                                                                                                                                                                    =)
                                                                                                                                                                                                      0
                                                                                                                                                                                                      Если убрать кавычки, думаю исполнение запроса накроется 1064-м тазом ;)
                                                                                                                                                                                                      Но это, все равно, не правильно. Нельзя доверять GPC ;)
                                                                                                                                                                                                        –1
                                                                                                                                                                                                        Самый замечательный вариант $x = ((isset($_GET['x']) ? intval($_GET['x']) : 0);
                                                                                                                                                                                                          0
                                                                                                                                                                                                          Пропустил одну скобку )..
                                                                                                                                                                                                          0
                                                                                                                                                                                                          ммм... а что не так? Условиям задачи удовлетворяет.
                                                                                                                                                                                                      –2
                                                                                                                                                                                                      хех, попытался выпендриться, а в результате сел в лужу
                                                                                                                                                                                                        +1
                                                                                                                                                                                                        Сел в лужу - это когда НЛО прилетает или комментарий раскрывать приходится.
                                                                                                                                                                                                        Я не выпендривался - просто задачи кажутся мне глупыми и я это могу вполне логично обосновать. Они слишком простые для поиска профессионалов.

                                                                                                                                                                                                        А насчет минусов - меня система жизни на Хабре забавляет. Верхний минус поставил Вам я и что теперь, вы в луже? :-)
                                                                                                                                                                                                      0
                                                                                                                                                                                                      Программеры разного уровня бывают и соответственно тесты разные. Приведенный пример мне кажется для начинающего.
                                                                                                                                                                                                        0
                                                                                                                                                                                                        В Молдове такой и 50% не пройдут :(
                                                                                                                                                                                                          0
                                                                                                                                                                                                          Вы бы еще Кению или Мозамбик вспомнили :)