Может кому интересно будет. Выдали тестовые задачи на собеседовании. Статья будет обновляться по мере решения задач. Да, и может кому интересно, прокомментируйте.
Компания OWOX.
1. Поиск и сортировка
Дано массив целых чисел $a, отсортированный по возрастанию и некое число $b.
Написать функцию searchInArray($a, $b), которая максимально быстро определит есть ли в массиве искомый элемент и вернет TRUE либо 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’);
Код
4. Работа со строками
Написать свой варинт функции strrev(), не используя стандартные функции вроде strrev()
Пример:
Дано $s=‘Hello!’;
Функция myStrRev($s) возвращает ‘!olleH’ и модифицирует свой аргумент.
Код
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