PHP pre-interview from Yahoo

Рубрика: Development, Работа | 14 August 2007, 08:43 | Vadim Voituk

Nick Halstead опубликовал в своем “The Programming and Management Blog” список из 22 вопросов, которые задавались кандидату на должность PHP-разработчика в Yahoo.

C разрешения Ника, публикую их здесь.

1. Which of the following will not add john to the users array?

1. $users[] = ‘john’;
2. array_add($users,’john’);
3. array_push($users,‘john’);
4. $users ||= ‘john’;

2. What’s the difference between sort(), assort() and ksort? Under what circumstances would you use each of these?

3. What would the following code print to the browser? Why?

$num = 10;
function multiply(){
  $num = $num * 10;
}
multiply();
echo $num;

4. What is the difference between a reference and a regular variable? How do you pass by reference & why would you want to?

5. What functions can you use to add library code to the currently running script?

6. What is the difference between foo() & @foo()?

7. How do you debug a PHP application?

8. What does === do? What’s an example of something that will give true for ‘==’, but not ‘===’?

9. How would you declare a class named “myclass” with no methods or properties?

10. How would you create an object, which is an instance of “myclass”?

11. How do you access and set properties of a class from within the class?

12. What is the difference between include & include_once? include & require?

13. What function would you use to redirect the browser to a new page?

1. redir()
2. header()
3. location()
4. redirect()

14. What function can you use to open a file for reading and writing?

1. fget();
2. file_open();
3. fopen();
4. open_file();

15. What’s the difference between mysql_fetch_row() and mysql_fetch_array()?

16. What does the following code do? Explain what’s going on there.

$date=’08/26/2003’;
print ereg_replace(“([0-9]+)/([0-9]+)/([0-9]+)”,2/1/3,$date);

17. Given a line of text $string, how would you write a regular expression to strip all the HTML tags from it?

18. What’s the difference between the way PHP and Perl distinguish between arrays and hashes?

19. How can you get round the stateless nature of HTTP using PHP?

20. What does the GD library do?

21. Name a few ways to output (print) a block of HTML code in PHP?

22. Is PHP better than Perl? – Discuss.

Ссылка в тему 30 Java Interview Questions.

Комментариев: 29

29 Responses to “PHP pre-interview from Yahoo”

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

  1. eater

    Я думав що знаю php…

  2. anycolor

    А вопросы-то легкие..:)

  3. vadim

    Тут к каждому вопросу можно ещё 3-4 дополнительных задать и таким образом полноценно пообщаться с кандидатом.

    P.S. Кстати у меня вопросы ещё легче :)

  4. Скакунов Александр

    Нормальные вопросы, только как-то их сложность неравномерна распределена по списку…

  5. vadim

    Саша: приведи пример

  6. Скакунов Александр

    С удовольствием!

    Первые пара вопросов довольно сложны: первый подразумевает немерянный опыт (я без мана не смог ответить), второй – знание алгоритмов сортировки, их плюсов и минусов (как человек, недавно готовившийся к собеседованию, могу сказать, что это требует сил и времени, чтобы разобраться).

    А дальше идут обычные вопросы про @, === и прочие достаточно примитивные вещи на уровне знания синтаксиса языка.

    В конце опять вечные вопросы, на которые можно отвечать долго: сравнить PHP и Perl, а также “как плохо, что HTTP – протокол без состояния, и как нам с этим жить”.

    Имхо правильнее, когда сложность вопросов изменяется плавно в любую сторону (обычно повышается).

    Согласны, сударь?

  7. vadim

    Не согласен. Исключая вопросы типа “что лучше Perl или PHP”, сложность достаточно равномерна. Единственное что они делятся на 2 группы: “энциклопедически-опытные” и “примитивно-разглагольствующие”.
    Как по мне и те и другие больше склоняют собеседование к диалогу, чем сухому ответу на вопросы.

  8. Родион Быков

    Ничего сверхъестественного…. особенно, когда в вопросах видна подсветка синтаксиса :) :)

  9. anycolor

    Вот если бы я принимал собеседование, то я бы задавал вопросы в стиле:

    1) “а что будет в результате вывода, если мы напишем вот так:
    а)$a = “35test”; $b = “blabla87″; echo $a+$b;
    б)$a = “35test”; $b = “87blabla”; echo $a+$b;

    Объясните полученный результат.

    2) Дан код:
    $a = array(‘qwe’, 1=>’asd’, 35=>’zxc’, ‘rty’);
    $a[] = ‘fgh’;
    print_r($a);

    Вопрос: какой ключ при распечатке будет у fgh?

    Попробуйте не прибегая к проверке ответить на эти вопросы. Кто ответит на 2 из 2 – может считать себя не плохим специалистом в PHP и у меня бы он собеседование прошел бы :)

  10. vadim

    у меня бы он собеседование прошел бы

    А тех кто не прошел – присылайте ко мне – у меня вопросы поражают своей простотой и искренностью :)

    P.S. /me “может считать себя не плохим специалистом в PHP”

  11. Родион Быков

    Anycolor, vadim, а остальных, не прошедших этот сноб-тест возьмут в Яху без экзаменов.

  12. vadim

    Давайте все-таки перед тем как говорить что вопросы очень легкие, учитывать что это только ПРЕ-интервью. Основное интервью будет дальше.

  13. lusever

    И почему когда принимают на работу php специалиста задают вопросы по синтаксису и языку, а не по фундаментальным знаниям?

  14. vadim

    И почему когда принимают на работу php специалиста задают вопросы по синтаксису и языку, а не по фундаментальным знаниям?

    У меня на это 2 варианта ответа:
    1. Сам так делаю и в процессе обсуждения вопросов по синтаксису задаю дополнительные вопросы по фундаментальным знаниям. (Хотя при этом стараюсь “программистов, которые выросли из дизайнеров” до собеседования не допускать)

    2. Это всего-то pre-интервью. Возможно фундаментальные знания будут проверяться дальше.
    Например так проводит интервью Киевская компания Ciklum: Сначала беседа с HR-специалистом, проверяется знание английского, запоняются анкеты, + небольшой опросник по Java. Дальше в случае успешного прохождения первого этапа, уже беседа в техническими специалистами (предпологаемыми сотрудниками, тим-лидером или заказчиком)

  15. Taras

    Оказывается я тоже не знаю РНР

    $date=”08/26/2003″;
    echo ereg_replace(“08/26/2003″,200,$date);
    echo str_replace(“08/26/2003″,200,$date);

    здесь функции вернут разный результат.

  16. Ромка

    Если ты хороший PHP програмист, независимо от пола и возраста, хочешь получать достойные деньги, не выходя из дома. Пройди успешно тест и получи интересную высокооплачиваемую работу.

    http://www.corp.mamba.ru/1111111111111111111111111111111

  17. Vadim Voituk

    Ромка, мы это уже проходили :)

  18. FractalizeR

    2anycolor:

    Я немного изменил ваш пример и получилась тоже неплохая задачка:
    $a=array(‘one’ => ‘one’, 35 => ‘two’, ‘three’ => ‘three’, ‘four’);
    print_r($a);

    Какой индекс будет у элемента ‘four’?

  19. Vadim Voituk

    >> Какой индекс будет у элемента ‘four’?
    36 :)

  20. FractalizeR

    Не сомневался, что она легкая :))

  21. Севр

    >Вот если бы я принимал собеседование, то я бы задавал вопросы в стиле:
    1) “а что будет в результате вывода, если мы напишем вот так:
    а)$a = “35test”; $b = “blabla87″; echo $a+$b;
    б)$a = “35test”; $b = “87blabla”; echo $a+$b;

    Слава Богу что такие как вы ничего не принимают, ибо если ты знаешь какой-нибудь мелкий неиспользуемый нюанс это не значит что ты серьёзный специалист. Такой ерунды можно сколько угодно накопать из мана и user comments и завалить любого специалиста. Хотя, если это нужно только для удовлетворения собственной похоти (мол ты не знаешь, а я знаю, так что ты ничтожество), то флаг вам в руки. Но любая стоящая уважаемая компания таких “собеседователей” выкинет с работы пинком под зад практически сразу, после того как вы парочку классных профи таким бредом отсеете.

  22. FractalizeR

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

  23. Vadim Voituk

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

    а)$a = “35test”; $b = “blabla87″; echo $a+$b;
    б)$a = “35test”; $b = “87blabla”; echo $a+$b;

    отлично эти знания продемонстрирует

  24. FractalizeR

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

  25. Ivan

    Вот еще здесь можно почитать о вопросах по PHP на собеседованиях.

  26. patt

    >Лично я считаю, что каким бы ты программистом
    >не был, но как минимум понимать как происходит
    >приведение типов языке программирования ты обязан.
    >А приведенный пример:
    >а)$a = “35test”; $b = “blabla87″; echo $a+$b;
    >б)$a = “35test”; $b = “87blabla”; echo $a+$b;
    >отлично эти знания продемонстрирует

    =======================

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

Leave a Reply