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

Теперь я затрону 2 темы — это «Администрирование СУБД» и «Основные принципы ООП».

Как уже было упомянуто, я являюсь PHP-программистом и, основываясь на своем опыте прохождения собеседований, могу сказать, что в основном при упоминании СУБД имеется ввиду MySQL, реже PostgreSQL. В настоящей статье я перечислю вопросы, касающиеся администрирования именно MySQL.

Администрирование MySQL

1.  Что работает быстрее? MyISAM или InnoDB? Почему в основном используют MyISAM?

2.  Есть ли для MySQL универсальная защита от SQL-инъекций?

3.  Какими средствами вы будете пользоваться при поиске источника замедления запросов к MySQL? Дайте описание полей, выводимых командой EXPLAIN.

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

5.  На что вы в первую очередь обратите внимание при при наличии ощутимых «тормозов» MySQL при условии, что все направленные запросы составлены корректно? Расставьте приоритеты:

  • Настройки MySQL
  • Файловая система
  • Язык программирования
  • Память

6.  Перечислите случаи, когда использование индексов может только навредить.

Основные принципы ООП

1.  Чем интерфейс отличается от абстрактного класса?

2.  Как реализовать множественное наследование в PHP?

3.  Напишите класс, реализующий синглтон, подсчитывающий количество попыток создания объектов этого класса.

4.  Каким будет вывод? Объясните.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
class foo {
  function bar(&$a) 
  { 
    $a++; 
  }
 
  function bar2($a) 
  { 
    ++$a;
  }
}
 
$f =& new foo();
$a = 0; 
$b =& $a; 
$c =& $b; 
$d =& $c;
$f->bar($a);
$f->bar2($a);
echo $d;
?>

5.  Для чего нужен паттерн «Наблюдатель». В каких случаях его применение может быть полезно?

На этом все. В следующей статье я выложу вопросы по оставшимся темам:

  • Регулярные выражения
  • Основные протоколы интернета
  • Работа в командной строке Linux

Вопросы на собеседовании для PHP-программиста (часть 1)