Примеры тестовых заданий
Автор: Анна
Примеры тестов
Одна из компаний дала мне такое тестовое задание:
Тесты содержат комбинированные материалы по следующим темам:
PHP, JS, html/css, SQL, Linux
Итак, несколько вопросов различной сложности. Сложность в скобках после номера вопроса, примерно так: (1) - один балл, (7) - семь баллов
Отвечайте на те, которые можете. Не бойтесь ошибиться. Важнее всего ход вашей мысли. Пишите все свои рассуждения, которые считаете нужными.
Все вопросы почерпнуты из практики и имеют реальный смысл.
Ответы оформляте, пожалуйста, в виде документа в Google Docs, скопируйте туда вопросы и пишите там код, ответы и пояснения.
Качество оформления Вашего кода в документе также оценивается.
Сделайте доступ к документу с Вашими ответами “Всем пользователям, у которых есть ссылка” и отправляйте ссылку на документ на тот почтовый ящик, с которого Вам пришла ссылка на тесты.
Удачи!
PHP
#1(15) Обрезание и харакири в UTF-8
- (5) Ситуация: мы обрезали первый “символ” в строке “Маша”: substr(“Маша”, 1). Как на экране будет выглядеть остаток?
- (1) Всегда ли кол-во символов, показываемое функцией strlen(), соответствует реальности? Когда соответствует, а когда нет?
- (1) Какой ф-ей точно узнать кол-во символов в строке?
- (8) Как можно всегда точно получить кол-во символов именной ф-ей strlen() без написания доп. кода (например, ф-я strlen() используется в CMS в очень многих местах, и заменить ее нельзя либо очень трудоемко). Как можно без доп. кода нормально обрезать строки ф-ей substr()?
#2(4). Длинная Маша
Нужно записать большую строковую переменную. Большую - имеется ввиду несколько строк или даже несколько десятков строк: большой SQL запрос, длинный кусок статического текста, кусок html. Внутри строки есть переменные, которые нужно подставить при использовании переменной.
Пример
Шла Маша по $way. Навстречу ей шел $mary->boyfriend
Предложите варианты записи такой переменной.
#3(10). Регулярки и циркулярки
Напишите шаблоны регулярных выражений и сами ф-и для того, чтобы:
-(3) оставить в строке только цифры, то есть из выражений вида ‘%%1dd23 jj$$45’ получить 12345
-(3) получить содержимое, заключенное в скобки: (вот это нужно получить)
-(4) предложите ф-ю валидации автомобильного номера Украины (пример: АА1234СС, то есть две буквы, четыре цифры, опять две буквы). Обратите внимание, что в номерах используются только те буквы украинского алфавита, которые по написанию совпадают с английскими.
#4(5). Массив, который построил Джек
Есть массив, элементы - массивы и строки, во вложенные массивы могут быть вложены другие массивы и пр.
Глубина вложенности неизвестна и, более того, может меняться.
Пример
$arr = array(
‘sto’ => ‘100’,
‘pitsot’ => array(
‘slon’ => array(
‘croco’ => ‘crocodile’,
‘sss’ => array(‘1’, ‘2’, ‘3’)
),
),
);
Отобразите подобную конструкцию на экране. Должно получиться похоже на вот такое (попробуйте отобразить код в браузере):
<?php
echo ‘<pre>’;
print_r($arr);
echo ‘</pre>’;
В Вашей реализации сдвигать вложенные массивы пропорционально вложенности необязательно (но можно, +5 баллов).
#5(5) Уникальная уникальность
Вы вытащили из БД ассоциативный массив вот такого вида
array(
array(
‘id’ => 111,
‘field2’ => 222,
‘field3’ => 333,
),
array(
‘id’ => 33,
‘field2’ => 3333,
‘field3’ => 321
),
...
);
то есть каждый вложенный массив - строка таблицы.
id - параметр, который полностью определяет все значения вложенного массива, он должен быть уникальным, но он может повторяться в таблице БД (например, дважды внесли одну и ту же строку).
Обеспечьте переформирование массива таким образом, чтобы в нем не было повторяющихся вложенных массивов. Структуру массива можно менять (добавлять/убирать ключи и пр.)
#6(10) Путь автора
Вы организовываете БД библиотеки, в самом простом варианте. Есть книги, у книги есть авторы и название. Есть авторы, у автора есть ФИО и книги, написанные им.
То есть у одной книги может быть несколько авторов, и у каждого автора может быть несколько написанных им книг.
Предложите структуру таблиц в БД MySQL для хранения данных библиотеки. Необязательно писать SQL: CREATE TABLE…, опишите словами структуру таблиц и идею хранения таких данных
#7 (15) Из пункта А в пункт Б
Вам нужно перенести БД с хостинга А на хостинг Б. Опишите последовательность ваших действий, предложите несколько вариантов, если возможно. Хостинги доступны 1) по SSH, 2) только по FTP
#8(5) Какое все зеленое!
Есть вот такой кусок разметки и стилей страницы
<style>
table .c { color: red }
.a .c { color: green }
</style>
<table id="t" >
<tr>
<td class="c">Текст</td>
</tr>
</table>
Предложите несколько вариантов решений на JS, которые сделают слово “Текст” зеленым. Предложите варианты на чистом JS и с использованием jQuery. (Каждый вариант после 2-х прибавляет 1 балл, то есть за 8 вариантов Вы получите 5 + (8-2) = 11 баллов).
#9(10) Тайные категории
Структура отображения вложенных категорий в Wordpress упрощенно выглядит так:
<ul class="catalog-list">
<li class="cat-item cat-item-9">Категория 1</li>
<li class="cat-item cat-item-28"> Категория 2
<ul class="children">
<li class="cat-item cat-item-22">Вложенная 1</li>
<li class="cat-item cat-item-21">Вложенная 2</li>
</ul>
</li>
</ul>
(5) Напишите скрипт с использованием jQuery, который обеспечит следующее:
- в обычном состоянии список вложенных категорий свернут (скрыт)
- при наведении мыши список раскрывается
- при убирании мыши с родительской категории список вложенных опять скрывается
(5) обеспечьте правильное подключение этого скрипта к теме WP
#10 (20) Товары за долАры
(5) В таблице БД goods находятся товары (поля: id (уникальное), name). В таблице selected_goods (одно поле id) находятся id отобранных товаров.
Вывести одним SQL запросом названия (name) отобранных товаров.
Предложите два варианта такого запроса (+5 баллов за второй вариант).
Сравните быстродействие двух вариантов запросов (+10 баллов).
#11(7) На волю, в пампасы
(7) Опишите несколько способов переадресации на другой URL - из PHP и из JS.. Перечислите достоинства и недостатки каждого способа.
#12(25) Реют флаги
(25) На странице работает яваскрипт, который при выборе города в селекте вставляет на страницу флаг страны. Как отследить появление флага? Подчеркнем - речь идет именно о добавлении нового элемента в разметку, в DOM, и отследить нужно именно это событие.
#13(25)Hi-Load News
Представьте себе, что у Вас есть ресурс - агрегатор новостей. Боты сыплют новости со всего Интернета в табличку news. Таблица содержит поля time и text - соотв. время новости и текст новости.
На главную страницу сайта нужно выдать пять последних, то есть самых свежих новостей. Свежесть определяется значением поля time.
(5) Предложите SQL-запрос, который это сделает, используя ORDER BY
(10) Есть предположение, что сортировка с помощью ORDER BY в запросе может его резко затормозить на больших - 1 миллион записей и более - таблицах.
Предложите SQL-запрос, обходящий это явление
#14(15)Git forever!
(10) Предложите варианты структуры системы работы над проектом с использованием системы контроля версий - SVN или Git. Нужно:
- обеспечить работу нескольких разработчиков над проектом и внесение ими всеми изменений в код
- деплой финального кода в веб-директорию с возможностью быстро откатить изменения обратно
- обеспечить четкое понимание, кто, какие изменения вносил и когда.
#15(15)Linux forever!
Вы купили хостинг - выделенный сервер. Он чист как слеза - на нем есть только Linux (Ubuntu) и SSH для доступа через сеть.
Ваш сервер доступен только через сеть - через SSH.
Опишите Ваши действия по инсталляции на сервер всего ПО, необходимого для превращения его в рабочий сервер для веб-разработки и работы создаваемых веб-приложений.
Его я делать не стала, так как сказала, что сделаю это за 7 дней, на что мне ответили: Здравствуйте ещё раз. Спасибо за ответ. К сожалению 7 дней это достаточно много. Этот тест выполняется в среднем за 3-5 часов.
Было и такое тестовое задание
Тестовое задание Привет дорогой друг! Ну что же, вот тестовое задание. Оно состоит 3х задач разного типа и сложности. Это позволит нам определить твой уровень владения технологиями, с которыми мы работаем, и понять сможем ли мы развиваться вместе и учиться у друг друга.
1. PHP. Создайте класс с методом, который позволить генерировать уникальные коды по типу U8YE12GDS длинной в 10 символов состоящие только букв и цифр. 1.1. Создайте класс наследник, который будет использовать родительский метод для получения кода и преобразовывать его в код состоящий только из цифр. 1.2. Создайте класс наследник, который будет использовать родительский метод для получения кода и преобразовывать его в код состоящий только из букв латинского алфавита. 1.3. *Создайте класс наследник, который будет использовать родительский метод для получения кода и преобразовывать буквы латинского алфавита в буквы кириллического алфавита не трогая цифры. Условия: Нельзя явно использовать перебор массива, нельзя написать строку алфавита ($alp = ‘AaBbCcDd…’; и т.д.) и использовать ее как массив. В остальном Вы не ограничены. В коде может быть любое количество цифр или букв в пределах 10 символов. Важно, что бы родительский класс создавал уникальные неповторяющиеся коды. 2. MySQL. Создайте простую структуру в БД, для хранения информации о заказах в ресторане. Сделайте ее такой, что бы потом мы могли смотреть список блюд, список заказов, список блюд в заказе, показать 5 популярных блюд, имена официантов выполнивших больше всех заказов. Условия: PK и FK обязательны, 3НФ тоже обязательна. 3. Динамическое обновление. Создайте страничку, где владелец ресторана сможет просматривать статистику работы его заведения. Воспользуйтесь структурой из предыдущей задачи, для того что бы вывести следующие цифры: Сумма заработанных денег за сегодня, список последних 5 заказов, 5 самых популярных блюд. Условия: Для реализации можете использовать AngularJS+Rest, сокеты, Comet или jQuery Ajax. Обновление данных должно происходить без нажатия кнопки F5.
Примечание: Вы не ограничены в использовании каких либо инструментов, но помните, что мы работаем с Yii2 и PHP7, использование новых фишек значительно облегчит выполнение. Что бы продемонстрировать свои результаты, разместите их у себя на хостинге и пришлите нам ссылки + короткое описание как Вы это реализовали. Если хостинга нет, пишите на master@cifr.us , мы выдадим временный пропуск на свой сервер. Удачи!
Я его тоже не прошла, так как делала его очень долго, аж 3 недели ))
Комментарии о School-PHP (3):