Бортовой журнал Ктулху

Задачи для собеседования на PHP программиста

Может кому интересно будет. Выдали тестовые задачи на собеседовании. Статья будет обновляться по мере решения задач. Да, и может кому интересно, прокомментируйте.

 

Компания OWOX.

1. Поиск и сортировка
Дано массив целых чисел $a, отсортированный по возрастанию и некое число $b.
Написать функцию searchInArray($a, $b), которая максимально быстро определит есть ли в массиве искомый элемент и вернет TRUE либо FALSE .

Код

$a = array(0,1,2,3,4,5,6,7,8,9);
//var_dump($arr);

print searchInArray($a, 7);
function searchInArray($a, $b)
{
 for ($i = 0; $i < count($a); ++$i) 
 { 
 if ($a[$i] == $b) 
 { 
 return TRUE; break; 
 } 
 else 
 { 
 return FALSE;
 }
 }
}

Ссылка


2. Скобки
Задача на структуру данных.
Дано выражение.
Пример: [5] * 3 - ( 4 - 7 * [3-6]).
Написать функцию checkBrackets($s), которая принимает на вход строку с выражением и возвращает TRUE или FALSE. Если скобки расставлены правильно - TRUE, FALSE - в противном случае.
Пример не правильно расставленых скобок: ( 5 * 3 [ 6 ) - 6]


3. Работа с массивами
Дано: ассоциативный массив. Написать функцию arrayReverseKeys($a), которая перевернет ключи этого массива, модифицировав исходный массив, используя минимальное количество циклов
Пример:
$a = array( ‘a’ => ‘apple’, ‘b’ => ‘banana’, ‘c’ => ‘cherry’);
Результат, ключи идут в обратном порядке:
$a = array( ‘c’ => ‘apple’, ‘b’ => ‘banana’, ‘a’ => ‘cherry’);

Код

$a = array( 'a' => 'apple', 'b' => 'banana', 'c' => 'cherry');
//var_dump($a);
arrayReverseKeys($a);
function arrayReverseKeys($a) {
$a = array_reverse($a);
foreach ($a as $k=>$v)
{ echo $k .'=>'. $v .' '; }
}

Ссылка

4. Работа со строками
Написать свой варинт функции strrev(), не используя стандартные функции вроде strrev()
Пример:
Дано $s=‘Hello!’;
Функция myStrRev($s) возвращает ‘!olleH’ и модифицирует свой аргумент.

Код

$str = "Hello, Kitty!";
arrayReverseKeys($str);
function arrayReverseKeys($str)
{
$a = str_split($str);
//var_dump($a);
$i = count($a);
while ($i>=0)
{
print $a[$i--];
}
}

Ссылка

 

5. Точки и прямые
Задача на логичесие операторы. Определить пересекает ли прямая отрезок.

Дано:
коеффициенты прямой $k и $b.
координаты точек отрезка $x1, $y1, $x2, $y2

Задача: Написать функцию isIntersect($k,$b, $x1, $y1, $x2, $y2), которая вернет TRUE, если прямая пересекает отрезок или FALSE, в противном случае. Использовать наименьшее количество условных операторов.
Подсказка: Если $y1>$k*$x1 + $b и $y2>$k*$x2 + $b, то точки находятся по одну сторону от заданной прямой.
6. Задачи на логику
Счастливые пропуска OWOX.
Номер пропуска состоит из 6 цифр. Пропуск считается счастливым, если сумма первых трех цифр равняется сумме вторых трех цифр.
Написать функцию luckyTickets($k), которая посчитает и вернет возможное количество таких пропусков, где $k - число цифр в билете (четное, 2,4,6...). Билет 000000 считается.
Примеры счастливых пропусков: 933591, 030300, 113311.


7. Спроектируйте структуру базы данных, в которой будут храниться товары, клиенты и заказы. Результат ожидается в виде DDL команды для MySQL.

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

9. Опишите 2-3 улучшения для любого из магазинов OWOX, которые их сделают, на ваш взгляд, удобнее

 

Днепр.com

Адаптивная верстка

Форма регистрации

Парсер погоды