Примеры тестовых заданий на позиции Middle и Senior веб-разработчика
Сегодня пост будет поделён на две части: одно и то же задание из реальной компании для позиции Middle и Senior Web Developer
Итак, задание…
В базе данных ZZZ должна быть таблица currency c колонками:
id — первичный ключ
name — название валюты
rate — курс валюты к рублю
Должна быть консольная команда для обновления данных в таблице currency. Данные по курсам валют можно взять отсюда: http://www.cbr.ru/scripts/XML_daily.asp
Реализовать 2 REST API метода:
GET /currencies — должен возвращать список курсов валют с возможность пагинации
GET /currency/
API должно быть закрыто bearer авторизацией.
В конкретной вакансии указывается язык программирования и иногда версия языка. Ну пусть это будет NodeJS или PHP — смысл задачи не меняется. NodeJS 5 и NodeJS 11 отличаются по возможностям, так же как PHP 5.6 и PHP 7.2 или Python 2.7 и Python 3.7).
В задании может быть указан фреймворк, а иногда просят наоборот, без фреймворка сделать, вот к примеру тестовое задание — сокращатель ссылок без фреймворков).
Также нужен навык работы с указанной базой данных: MySQL 5.5 отличается от MySQL 8, так же как PostgreSQL, MongoDB и другие.
Версию языка, использование фреймворка, тип и версию базы данных надо обязательно уточнить. Без этого двигаться дальше нельзя, потому что будет большое отличие вашего решения от ожидаемого решения.
Для решения задачи понадобится понимание парадигмы REST API, навык работы с XML, опыт защиты доступа к данных путём авторизации. Не лишним будет понимание, как работают крон-задачи. И важным плюсом будет уменить написать тесты.
Ожидаемое решение этой задачи — это условно несколько файлов помимо фреймворка:
- скрипт для доступа к базе данных к указанной сущности (так называемая модель данных)
- скрипт для создания модели данных этой сущности в базе данных (так называемая миграция)
- скрипт, который запускается из консоли вручную или (так называемый консольный контролер), обращается к чужому серверу по HTTP, разбирает ответ формата XML, сохраняет в базу данных
- скрипт, который будет выдавать сведения из базы данных при запросах по HTTP протоколу (так называемый веб-контролер)
- скрипт, который будет проверять доступ к данным при запросах по HTTP протоколу
- скрипт для тестирования консольного контролера и веб-контролера
Ты зашел в эту статью с целью найти решение? Его не будет. Но ты можешь прислать мне своё, а я его оценю и дам подробную обратную связь. Мои контакты.
Как считаешь, это задание можно применять для веб-разработчиков уровня Senior? Чем вообще отличается сеньор от миддла?
Кратко так: миддлу надо объяснить, что от него ожидать (вот, пример сверху — я описал ожидаемое решение), сеньору надо дать понять, какую проблему надо решить, а сеньор подберёт решение самостоятельно, при необходимости озвучит его, учтёт замечания, реализует и обеспечит стабильный результат. Синьор — самостоятельный. И тут уже не столько программирование, сколько принципы и подходы.
Задание для Senior могло бы звучать так:
Фреймворк YYY, можно использовать БД ZZZ.
Доп требование:
1. История курсов валют должна быть на каждый день, без пропусков.
2. Объяснить, что нужно добавить или изменить, чтобы сервис мог выдержать 1500 запросов в секунду.
Ещё один вариант
И ещё вариант
Ну что, миддл? Хочешь стать синьором? Тогда пиши в коментах или присылай мне свои варианты решений. Посмотрим, насколько ты круто сварен.
Ответы от меня будут 1 марта. Подписывайся на новости, чтобы не пропустить.
Хочешь разбор этого задания или твоего решения в формате вебинара — напиши тут в коментах.
Вперёд!
Обложка к статье: Crafting Magic от light-recycled