Бортовой журнал Ктулху
Время кислый виноград делает сладким

Задачи для собеседования на 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

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

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

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

 

Рейтинг@Mail.ru
Яндекс.Метрика
Hosting Ukraine
Счетчик PR-CY.Rank
Счетчик PR-CY.Rank