Примеры тестовых заданий

2017-11-12 23:00:45

Автор: Анна

Примеры тестов

Одна из компаний дала мне такое тестовое задание:
 

Тесты содержат комбинированные материалы по следующим темам:

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):

- Анна 19.11.2017 22:15
Владимир, так перед этой же была :)
- inpost 13.11.2017 15:29
Владимир, на ошибках же мы учимся :)
- Владимир 12.11.2017 23:45
Так а где же история с хепи-ендом?)

Напишите свой комментарий:
Имя:
E-mail:
на него отправится ответ
Skype Станислава:
напишите мой скайп
(есть внизу страницы)
Введите комментарий:

* Комментарий при отправке отправляется на пре-модерацию. Вынужденная защита от спама, чтобы сайт был чистым.

Главная БАЗОВЫЙ КУРС ПЕРВЫЙ УРОВЕНЬ программирования ВТОРОЙ УРОВЕНЬ верстки ВТОРОЙ УРОВЕНЬ программирования Начать обучение Запуск проекта Мелкие трюки Делимся практикой трудоустройства Проверь свои знания Задачи по PHP MySQL Блог Отзывы