За последние 24 часа нас посетили 18194 программиста и 1697 роботов. Сейчас ищут 1535 программистов ...

начинающий веб-разработчик. Вопросы теста...

Тема в разделе "PHP для новичков", создана пользователем terminator220400, 16 янв 2013.

  1. terminator220400

    terminator220400 Активный пользователь

    С нами с:
    15 янв 2013
    Сообщения:
    9
    Симпатии:
    0
    День добрый! Приветствую сообщество программистов!

    Это моё первое сообщение на этом форуме, хочу тут поселиться надолго :)

    Где-то полгода не особо активно натаскиваю себя на вакансию веб-разработчика. Живу я в Москве. Оказался на первом профильном собеседовании. Там мне без лишних разговоров был предложен тест. К сожалению, у меня не сохранились вопросы, но некоторые моменты, которые я не понял, сохранились в памяти. Наверное, они совершенно ламерские.

    1)
    Код (Text):
    1. echo print(1) + print(2) + print(3)
    Разумеется, я тут ответил...
    Код (Text):
    1. 123
    что совершенно неверно, как я узнал впоследствии.

    Объясните, пожалуйста, почему правильный ответ
    Код (Text):
    1. 3321
    Почитав про print, не нашёл ответа на этот вопрос.

    И нужно ли вообще это знать? Используется ли данный фрагмент знаний у девелоперов?

    2)

    Код (Text):
    1. $a = 1;
    2.  
    3. $a += $a++ + ++$a
    И при том же $a

    Код (Text):
    1. $a += ++$a + $a--
    Напишите, пожалуйста, на пальцах, как тут правильно считать.. Я ошибся.. Про пост и преинкремент я знаю, что пост сначала возвращает значение, потом инкрементирует, а пре инкрементирует, потом возвращает. Но как в данном примере работает += ?

    3)

    Код (Text):
    1. $a = array ("a", "b", "c");
    2. echo (array) $a;
    Что здесь означает (array)?

    4) Если мой текущий уровень познаний позволяет создать кроссбраузерный сайт с нуля в нотепаде с применением html+css+photoshop+javascript(jquery), а в php знания ограничены только созданием гостевой книги с использованием MySQL, как посредством процедурного, так и объектно-ориентированного (ну ещё делал простейший интернет-магазин) подхода, на какую зарплату мне стоит претендовать? другими словами, сколько указывать в резюме, чтобы это было более-менее адекватно?

    Как вспомню, что ещё заинтересовало на собеседовании, укажу...

    И посоветуйте, пожалуйста, кто знает, где можно найти типовые вопросы на данных собеседованиях... гуглом я умею пользоваться, но может Вы сможете дать хорошую ссылку, по которой сами всё нашли :)
     
  2. Shumomer

    Shumomer Активный пользователь

    С нами с:
    12 мар 2011
    Сообщения:
    194
    Симпатии:
    1
    Адрес:
    из вашего вображения
    Судя по не знанию п.1 и 3 - на зарплату расчитывать вообще не стоит.
     
  3. terminator220400

    terminator220400 Активный пользователь

    С нами с:
    15 янв 2013
    Сообщения:
    9
    Симпатии:
    0
    Благодарю за комментарий)) с трудоустройством повременю, подтяну себя. Со статикой я работаю куда увереннее, пару сайтов создал.

    Перед тем как выложить этот нубопост, я почитал тот же мануал, по поводу print

    http://php.ru/manual/function.print.html

    там я не нашёл ответа на свой вопрос, к сожалению..
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    В каждом учебнике написано про отличие print от echo. Print после печати возвращает единицу, 1 + 1 + 1 = 3.
    приведение к типу
    как php-кодер ты ноль, а вот как дизайнер, если наизусть знаешь HTML, реально тонко знаешь CSS, быстро разбираешься с плагинами jQuery и умеешь немного рисовать в фотошопе, то как дизайнер-верстальщик можешь работать очень хорошо.
     
  5. terminator220400

    terminator220400 Активный пользователь

    С нами с:
    15 янв 2013
    Сообщения:
    9
    Симпатии:
    0
    Спасибо!

    Но т.к. я ноль, не понимаю, откуда берётся
    Код (Text):
    1. echo print(1)+print(2)+print(3)
    здесь 3321... откуда аж 4 цифры...
     
  6. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Сперва выполняется первый принт. Он должен будет напечатать сумму
    Код (PHP):
    1. (1) + print(2) + print(3) 
    Но он не печатает результат сразу, поскольку слагаемое print(2) + print(3) - ещё не вычислено. Начинает вычисляться второй принт, который должен напечатать
    Код (PHP):
    1. (2) + print(3) 
    Но он тоже не может напечатать результат, поскольку слагаемое print(3) - ещё не вычислено. Начинает вычисляться третий принт, который печатает на экран число 3 и возвращает значение 1. Эта единица возвращается во второй принт, который печатает
    Код (PHP):
    1. (2) + 1 = 3
    Так на экране оказываются две тройки. Этот второй принт - тоже вернул единицу, которую и получил первый принт, в результате он печатает
    Код (PHP):
    1. (1) + 1 = 2
    Так на экране оказывается число 2. После чего первый принт - также возвращает единицу, которую и выводит echo. И в результате мы видим на экране 3321.

    Добавлено спустя 4 минуты 41 секунду:
    Первая тройка - это третий принт
    Вторая тройка - это второй принт
    Двойка - это первый принт
    Единица - это эхо.
     
  7. terminator220400

    terminator220400 Активный пользователь

    С нами с:
    15 янв 2013
    Сообщения:
    9
    Симпатии:
    0
    Даже не рассчитывал получить столь развёрнутый ответ!

    Написано так, что не остаётся ничего, кроме как понять и переварить, большое спасибо.

    Тем не менее мой нулёвый phpкодерский мозг сломан :D пару раз перечитаю, точно переварю))
     
  8. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Код (PHP):
    1. $a = 1;
    2. $a += $a++ + ++$a;
    Изначально, $a = 1. У операции += самый низкий приоритет (таблица приоритетов операторов: http://php.ru/manual/language.operators.precedence.html), по этому она выполнится последней.
    $a++ возвращает единицу, но $a при этом становится равен 2.
    ++$a возвращает 3, поскольку на момент его выполнения, $a уже равен 2. После его выполнения $a становится равен 3.
    Оператор сложения возвращает 4 (1 + 3)
    На момент выполнения оператора +=, переменная $a уже равна 3, и этот оператор прибавляет к ней ещё 4 (результат сложения).
    В итоге $a становится равна 7.

    Добавлено спустя 5 минут 1 секунду:
    Расставил скобочки, возможно, они помогут понять, в какой последовательности там всё выполняется:
    Код (PHP):
    1. echo(print(1 + print(2 + print(3)))); 
     
    rewert нравится это.
  9. terminator220400

    terminator220400 Активный пользователь

    С нами с:
    15 янв 2013
    Сообщения:
    9
    Симпатии:
    0
    Предельно понятно написано, ещё раз спасибо! Я вот тут (c $a) лажанул в том, что ... к результату сложения 1+3 прибавлял первоначальное значение a, т.е. 1, а не 3.. Очень обидно, т.к. на тесте думал, что хоть здесь был прав :)

    Кстати очень интересный вид "собеседования" был. Секретарша влепила мне тест на 3 страницы, дала сколько угодно времени, но я за 20 минут с ним закончил, т.к. с mysql (а по нему там 40% вопросов) могу работать только с 1-2 таблицами, сейчас активно штурмую базы данных. Далее она забрала у меня тест, не проверяла его, задала пару общих вопросов и всё... Сказала, возможно, позвонят.

    Оригинальное "собеседование"! И, быть может, чертовски правильное. Зачем гуру тратить время на всяких быдлокодеров, которые не знают элементарных вещей!

    Я так понимаю, любой php-программист, с опытом хотя бы полгода, не задумываясь, ответил бы верно?
     
  10. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Естественно. Ты говоришь, что пишешь сайты в блокноте. Вот когда ты сможешь так же легко писать php-код в блокноте в таких же объемах, тогда ты junior. Потом запомнишь пару десятков приемов программирования, это и будет средний уровень.

    Добавлено спустя 4 минуты:
    Посмотри код в разделе http://php.ru/forum/viewforum.php?f=27
    Там сейчас много оффтопа, лучше сразу на пятую страницу идти и смотреть решения разных задач. Средний php-программист поймет большинство из них.
     
  11. terminator220400

    terminator220400 Активный пользователь

    С нами с:
    15 янв 2013
    Сообщения:
    9
    Симпатии:
    0
    Благодарю! Буду ломать этот раздел полностью! Как, собственно, и остальные.
     
  12. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    дибильные задания. радуйтесь что вас не взяли в эту контору.
    если они соискателей мучают этим бредом - значит о остальной рабочий процесс и отношение к людям там соответствующее.

    знать такие вещи конечно желательно, но к повседневной разработке это не имеет никакого отношения.и скорее всего никогда не пригодится.
    боле того. за такой код в реальном проекте - увольняют. это типичный говнокод. он интересен лишь с академической точки зрения, ну ни как не как проверка для соискателя. я бы тоже наверное на 100% таких вопросов не ответил) да и большинство думаю не ответит
     
  13. Shumomer

    Shumomer Активный пользователь

    С нами с:
    12 мар 2011
    Сообщения:
    194
    Симпатии:
    1
    Адрес:
    из вашего вображения
    наоборот - правильно поставленная работа. спецы не отвлекаются от основных задач до того момента когда они необходимы (в данном случае - второй или третий этап собеседования). первоначальный отсев вполне способна провести секретарша, рабочее время которой в разы дешевле.
     
  14. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Shumomer,
    какой смысл отбирать соискателей умеющих складывать между собой результат print() ?
    они в реальности будут этим заниматься потом?
    сомневаюсь.
    думаю работа будет банальная, шаблонизаторы, фреймворки, библиотеки... вот и нужно спрашивать знание этих инструментов. чтобы новый сотрудник максимально быстро включился в рабочий процесс и начал приносить пользу.
    контора явно попутала цели - найти олимпиадника или хорошего сотрудника.

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

    terminator220400 Активный пользователь

    С нами с:
    15 янв 2013
    Сообщения:
    9
    Симпатии:
    0
    Хочу заметить, что, по-моему, не было в тесте "нормальных" вопросов. Одни подставы и несуразности (для ламера видимо)

    Самый первый был..

    Какой тип данных отсутствует в PHP: object, null, указатель, resource.

    Ответ-то ясен. Но раз уж Вы столь скрупулёзны в своих вопросах, спросите, что отсутствует в PHP5 :)

    После "собеседования" остался осадок, что я могу, допустим, с применением объектно-ориентированного подхода, создать гостевую книгу, систему регистрации-авторизации, по книге реализовывал простейший интернет-магазин и ещё с десяток учебных задач. В общем, как мне казалось, основы языка, в том числе ООП, я худо-бедно знаю. Какой там! Всё это улетело в утиль этим тестом на колкости. Ни одного вопроса, который бы мне реально приходилось применять в своей мало-мальской практике! И это ведь пришёл соискатель на 25-30к - почти самую низкую зп на этой позиции в городе. Зачем его этим мучить. Дайте вы практическую задачку, ну хотя бы, написать функцию, которая отберёт все емэйлы из произвольной строки. Хотя, конечно, нет предела совершенству, думаю знать это не помешает и развиваться следует всегда... или выбрать другую сферу деятельности)
     
  16. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    конечно нет предела. и очень похвально когда программер знает все 100500 хаков и особенностей языка. это полезно и достойно уважения.
    но в коммерческом проекте он это все применять не имеет права все равно. при первом же коде-ревью его закидают тухлыми помидорами и поместят на доску позора.
     
  17. Shumomer

    Shumomer Активный пользователь

    С нами с:
    12 мар 2011
    Сообщения:
    194
    Симпатии:
    1
    Адрес:
    из вашего вображения
    Ответы на ТАКИЕ вопросы показывают насколько человек ПОНИМАЕТ язык. Не знает, а именно понимает. По фреймворкам и прочему - это второй этап. Для тех, кто прошел 1й.

    Решение практической задачи (только не "отберёт все емэйлы", а того что даст хоть какое-то представление об умениях кандидата, например та-же гостевая, с динамикой на jquery, тут, сейчас, на бумажке [для терминатора: скажи честно - способен?]) - это третий этап. Его надо проверять. И с этим "секретарша" не справится. Придется тратить время (оплаченное время!) специалиста. Просто не рационально.

    Случайно отсеется хороший кандидат? Да и фиг с ним. Вы поймите правильно - пхп-кодеров - дофигища. Нет проблемы найти. Есть проблема выбрать.
     
  18. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    я могу придумать такие вопросы, на которые вы правильно ответить не сможете, пока не запустите код.
    хотя возможно- вы неплохой программер и могли бы легко справится с типовыми заданиями которые будут в реальной работе в этой конторе.
    ну и толку от этого "первого этапа"? он отсеет большинство ПОДХОДЯЩИХ программистов. те тех кто реально подходит к РАБОТЕ, но не смог, по какимто причинам, правильно ответить на эти странные вопросы. можно навертеть такого, что и вы не сможете в уме все это скомпилить, и я не смогу... ну или в целом сможем, но ошибемся, и результат будет неправильный, хоть и близкий.
    для первоначального отсеивания нужны вопросы совсем не такие.

    а знать все невозможно. для этого есть мануал и гугл. я по работе, каждый день узнаю чтото новое для себя. хотя опыт веб программинга уже больше 10 лет. и досконально знать ВСЕ особенности поведения КАЖДОЙ функции ОПРЕДЕЛЕННОГО языка - почти нереально. такие люди если и есть, но стоят они очень дорого , и не они ходят на собеседования, а конторы сами за ними охотятся.