Тестовое задание при трудоустройстве?
Одно из заданий, которое давал джуниорам:
Нужно сделать простой сервис проведения тестирования по каким-либо темам. Т.е. есть тесты с вариантами ответов, один или несколько вариантов должны быть правильными. Тесты группируются в наборы тестов, которые затем пользователь может проходить и видеть свой результат.
Функциональные части сервиса:Регистрация пользователейАутентификация пользователейЗарегистрированные пользователи могутПроходить любой из тестовых наборовПоследовательный ответ на все вопросы, каждый вопрос должен выводится на новой странице с отправкой формы (перескакивать через тесты или оставлять неотмеченными нельзя)После завершения тестирования смотреть результат: количество правильных/неправильных ответовпроцент правильных ответовАдминка. Стандартная админка Django. Разделы:Стандартный раздел пользователейРаздел с наборами тестовВозможность на странице набора тестов добавлять вопросы/ответы к вопросам/отмечать правильные ответыВалидация на то, что должен быть хотябы 1 правильный вариантВалидация на то, что все варианты не могут быть правильнымиУдаление вопросов/вариантов ответов/изменение правильных решений при редактировании тестового набораТребованияКод в репозитории на GitHub.Список всех зависимостей должен храниться в requirements.txt, соответственно можно установить их командой pip install -r requirements.txt.Разработка должны вестись в virtualenv, но сама директория с virtualenv должна быть добавлена в .gitignore.Настройки должны храниться в settings.py, но также, при наличии settings_local.py в той же директории, настройки из settings_local.py должны переопределять настройки в settings.py. Т.е. если есть файл settings_local.py, то определенные в нем параметры имеют больший приоритет. Сам файл settings_local.py добавляется в .gitignore. Таким образом у каждого девелопера и на бета сервере можно использовать кастомные настройки, например для соединения с БД.Должен работать один из способо создания структуры БД. Встроенный manage.py syncdb или миграции через South (будет плюсом).По фронт-енду требований никаких не предъявляется. Интерфейс на твое усмотрение и он не буде оцениваться. Можно использовать любимый фреймворк или, например, воспользоваться Twitter Bootstrap.
Одно из самых часто встречающихся по версии резидентов одного южного коворкинга.Необходимо создать веб-приложение для управления базой данных бонусных карт (карт лояльности, кредитный карт и т.д. Я встречал много вариаций).
Список полей: серия карты, номер карты, дата выпуска карты, дата окончания активности карты, дата использования, сумма, статус карты (не активирована/активирована/просрочена).
Функционал приложениясписок карт с полями: серия, номер, дата выпуска, дата окончания активности, статуспоиск по этим же полямпросмотр профиля карты с историей покупок по нейактивация/деактивация картыудаление карты
Реализовать генератор карт, с указанием серии и количества генерируемых карт, а также "срок окончания активности" со значениями "1 год", "6 месяцев" "1 месяц". После истечения срока активности карты, у карты проставляется статус "просрочена".
Примечание: поля с датами должны содержать также и время.
Вообще почитай книжку "Достаточно ли Вы умны, чтобы работать в Google", задачи из нее мозг разносят на раз. Хотя бы страниц 10-20 перед собеседованием прочесть рекомендую.
На собеседованиях, особенно если нанимаем Junior'а, по большому счету владение языком/фреймворком спрашивают по минимуму. В основном делается упор на значение базовых моментов математики(мат.логика: СДНФ, СКНФ и т.д. очень часто), структур данных(дискретная математика, деревья, как минимум), принципов(минимум DRY & SOLID) и шаблонов проектирования(GRAPS & GoF) и т.д.
Иногда задается вопрос вида "А какой самый важный(главный, основной) на Ваш взгляд шаблон(принцип, техника) проектирования(программирования)?" Лично для меня этот шаблон называется "Здравый смысл". Описание можно глянуть в Википедии
P.S.: успехов в трудоустройстве :-)