Тестовые задания по Java
Здесь собраны реальные тестовые задания, которые дают соискателям на стажировках и junior-позициях. Эти задания помогут лучше подготовиться к отбору, потренироваться и пополнить портфолио
Ecwid • Средняя сложность
Тестовое задание по Java от компании Ecwid
SQL query parser In SQL, the most syntactically complex and tricky query is probably the SELECT query. It has explicit and implicit joins, groupings, subqueries, sorting and truncation of selects - all this beauty can occur repeatedly even in one single select query. For example, like this: ```sql SELECT * FROM book ``` or like this: ```sql SELECT author.name, count(book.id), sum(book.cost) FROM author LEFT JOIN book ON (author.id = book.author_id) GROUP BY author.name HAVING COUNT(*) > 1 AND SUM(book.cost) > 500 LIMIT 10; ``` Please write a parser for an arbitrary SELECT query, representing it as a class of approximately this structure: ```java class Query { private List<String> columns; private List<Source> fromSources; private List<Join> joins; private List<WhereClause> whereClauses; private List<String> groupByColumns; private List<Sort> sortColumns; private Integer limit; private Integer offset; } ``` The structure of this class is not a requirement, but a guide to action :) If you have invented a class that reflects the SQL query structure better than the one given here - feel free to use your solution. What constructs the parser must support in a mandatory way: - Enumeration of sample fields explicitly (with aliases) or * - Implicit join of several tables (select * from A,B,C) - Explicit join of tables (inner, left, right, full join) - Filter conditions (where a = 1 and b > 100) - Subqueries (select * from (select * from A) a_alias) - Grouping by one or several fields (group by) - Sorting by one or more fields (order by) - Selection truncation (limit, offset) What can be ignored: - Complementing selections (union and union all) - CTE - Window functions Some details: - The assignment should be done in Kotlin or Java (version 21 or higher). - The assignment must have a working main() method, to demonstrate how it works - If you have any questions, feel free to write to join-ecom@lightspeedhq.com. - The completed assignment should be posted on GitHub
Ecwid • Лёгкая сложность
Тестовое задание по Java от компании Ecwid
Sometimes you want to make a complete copy of some object. Something like this: ComplexObject obj = ... ComplexObject copy = CopyUtils.deepCopy(obj); The problem is that classes in Java can be of arbitrary complexity - the number of class fields and their types are not regulated in any way. Moreover, the type system in Java is closed - elements of an array/list can be absolutely any data types, including arrays and lists. And also there are recursive data structures - when an object somewhere in its depths contains a reference to itself (or to a part of itself). You need to write a deepCopy() method that takes all these nuances into account and works on objects of arbitrary structure and size. Some details: If you have any questions, feel free to write to join-ecom@lightspeedhq.com. First of all, the method should work correctly. Speed is also important, but not as much as correctness You can only use the features of the standard J2SE library Code should be written in Java (version 21 and above) or Kotlin. The assignment must have a working main() method, to demonstrate how it works The completed assignment should be posted on GitHub P.S. I know about hacks with java.io.Serializable and java.lang.Cloneable, please don't use them Before submitting, I recommend testing the solution on a class like this: class Man { private String name; private int age; private List<String> favoriteBooks; public Man(String name, int age, List<String> favoriteBooks) { this.name = name; this.age = age; this.favoriteBooks = favoriteBooks; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public List<String> getFavoriteBooks() { return favoriteBooks; } public void setFavoriteBooks(List<String> favoriteBooks) { this.favoriteBooks = favoriteBooks; } }
Haulmont • Высокая сложность
Тестовое задание по Java от компании Haulmont
StudentDatabase Тестовое задание от Haulmont Тестовое задание Данное тестовое задание должно в результате содержать работающую программу, удовлетворяющую всем нижеописанным требованиям, и качественный исходный код. Постарайтесь создать грамотную композицию классов и форматировать код в соответствии со стандартами Java. Описание задачи Релизовать систему ввода и отображения информации о студентах института, включающую следующие сущности и их атрибуты: Студент ◦ Имя ◦ Фамилия ◦ Отчество ◦ Дата рождения ◦ Группа Группа ◦ Номер ◦ Название факультета Система должна иметь следующие функции: Отображение списка групп Добавление новой группы, редактирование и удаление существующей Отображение списка студентов Фильтрация списка студентов по фамилии и по номеру группы Добавление нового студента, редактирование и удаление существующего Требования к реализации Используемые технологии: Java 6 SE Пользовательский интерфейс на Swing Доступ к данным через JDBC Сервер баз данных: любая встроенная Java-RDBMS, например H2, HSQLDB, Derby. Требования к пользовательскому интерфейсу: Экраны системы: ◦ Список групп – таблица, кнопки «Добавить», «Изменить», «Удалить» ◦ Редактирование группы — поля ввода атрибутов, кнопки «ОК», «Отменить» ◦ Список студентов с фильтром - таблица, кнопки «Добавить», «Изменить», «Удалить», фильтр с полями «Фамилия», «Номер группы» ◦ Редактирование студента - поля ввода атрибутов, кнопки «ОК», «Отменить» Экраны редактирования должны быть модальными Другие требования: Код доступа к данным должен быть изолирован в классах DAO Каждая таблица должна иметь первичный ключ типа Long Система должна иметь защиту на уровне БД от удаления группы, содержащей студентов Готовое приложение должно содержать: ◦ Каталог с исходными текстами, классами и используемыми библиотеками ◦ SQL-скрипт создания таблиц в базе данных ◦ Командный файл, запускающий приложение вместе со встроенной базой данных При реализации системы запрещается использовать визуальные дизайнеры интерфейса для Swing
Web строитель • Лёгкая сложность
Тестовое задание по Java от компании Web строитель
Задание 1 Разработать Rest Api c Spring Hateoas для To-do листа с регистрацией пользователей: Регистрации нового пользователя Авторизация пользователя Возможность добавления, просмотра, изменения, удаления задачи в to-do list Возможность создания задач с прикрепленными файлами. Файлы хранить в приватном бакете Yandex.Cloud. При просмотре задач в json'е возвращать временные ссылки на файл. Хранить временные ссылки до истечения срока действия. Используемый стек: Spring Boot 2, Spring Data, Spring Hateoas, Spring Security, PostgreSQL, Maven, AWS S3 v2 для работы с Object Storage. Плюсом будет использование микросервисной архитектуры. Приложить файл Postman с запросами на rest-сервис.
без ограничений.
Чтобы получить полный доступ,
вам необходимо зарегистрироваться.