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

Я являюсь PHP-программистом, поэтому все вопросы будут из этой области.
На собеседовании работодатели обычно разделяют их по следующим темам:

  • PHP
  • Задачи по составлению различных запросов SQL
  • Администрирование СУБД (обычно это MySQL)
  • Основные принципы ООП
  • Регулярные выражения
  • Основные протоколы интернета
  • Работа в командной строке Linux

Итак, начнем.

PHP

1.  Имеется массив целых чисел, все числа кроме одного встречаются в массиве дважды. Необходимо реализовать функцию поиска числа, встречающегося в массиве один раз.

2.  

1
2
3
4
5
<?php
$i = 10;
$i += ++$i + $i + $i++;
print $i;
?>

     Сколько выведет? Почему?

3.  

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class ListItem {
var $next;
}
 
$a = new ListItem();
$b = new ListItem();
$c = new ListItem();
 
$a->next = $b;
$b->next = $c;
$c->next = null;
?>

     Необходимо написать функцию, которая на вход получает объект $а, а возвращает перевернутый список.

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

5.  Чем отличается наследование в javascript от наследования в PHP?

Запросы SQL

  1. Есть таблица currency_course, в которой перечислены курсы валют за конкретную дату.
    Поля таблицы currency_course:
    currency (тип валюты — USD, EUR и т.д.),
    date (дата установленного курса),
    course (курс валюты)

    Требуется выбрать последние курсы по каждой валюте.
  2. В таблице 1 000 000 записей. Необходимо предложить варианты выбора 10 случайных записей. Запрос вида select * from table order by rand() limit 10 не подойдет, т.к. очень «тяжелый».
  3. В таблице 1 000 000 записей. Есть поле, которое принимает только одно из двух значений. Стоит ли индексировать по этому полю?
  4. Необходимо предложить структуру базы данных для хранения древовидных комментариев.
  5. Имеется таблица покупателей с полями: id, name
    А также таблица продаж: id, cust_id, date, summ_pay
    Необходимо:
    а) Вывести лучшего покупателя.
    б) Вывести лучших покупателей за каждый месяц.

Пока все. Продолжение следует…