Тестовые задания по Java

Здесь собраны реальные тестовые задания, которые дают соискателям на стажировках и junior-позициях. Эти задания помогут лучше подготовиться к отбору, потренироваться и пополнить портфолио

стэк>
Компания>
Сложность>

Ecwid • Лёгкая сложность

Лёгкий уровень сложности - 1 звезда

Тестовое задание по 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; } }

Ecwid • Лёгкая сложность

Лёгкий уровень сложности - 1 звезда

Тестовое задание по Java от компании Ecwid

First, some facts: There is key-value storage: Redis. Java has interface java.util.Map We like Redis a lot, but using it through a separate client library in Java doesn't really appeal to us. It works, it's convenient, but it's not fun. Again, Java has a basic interface for implementing hash tables - Map. And Redis has a hash data structure. We would like to work with hashes in Redis through this base interface. That is - I have some object that implements the Map interface, I just pull its get/put/etc. methods, and the data is actually stored in Redis, not in my Java application. Then I could pass that object anywhere the Map interface is expected and everything would just work. All sorts of other thoughts: We have a lot of data and it just won't fit on a single Redis machine. It would be nice if the implementation itself could split the data across a cluster of Redis's, completely hiding details about the number of Redis instances and whatnot. Support for adding/removing Redis servers on the fly is very good. The key word is "on the fly". Redundancy of data storage in this cluster of redis is an interesting thought. Well, it's so that one redis goes down and its data doesn't go anywhere. In Java Collections Framework there are other interfaces besides Map - List, Set, SortedSet, Queue, Deque, SortedMap. Here we go. Details: It will be quite enough to make only Map[String, Integer] support. You don't need a universal solution for any data types. For List, Set, etc. it will be enough to make List[Integer] or List[String] You can use any redis-solutions: standalone redis, sentinel or redis-cluster. You don't need to write your own library to work with Redis, you can use a ready-made one (for example, jedis). You should write in Java (version 21 and above) or Kotlin. The assignment must have a working main() method, to demonstrate how it works In general - do whatever you want, as long as it works. If you have any questions, feel free to write to join-ecom@lightspeedhq.com. The completed task should be placed on GitHub

Haulmont • Высокая сложность

Высокий уровень сложности - 3 звезды

Тестовое задание по Java от компании Haulmont

StudentDatabase Тестовое задание от Haulmont Тестовое задание Данное тестовое задание должно в результате содержать работающую программу, удовлетворяющую всем нижеописанным требованиям, и качественный исходный код. Постарайтесь создать грамотную композицию классов и форматировать код в соответствии со стандартами Java. Описание задачи Релизовать систему ввода и отображения информации о студентах института, включающую следующие сущности и их атрибуты: Студент ◦ Имя ◦ Фамилия ◦ Отчество ◦ Дата рождения ◦ Группа Группа ◦ Номер ◦ Название факультета Система должна иметь следующие функции: Отображение списка групп Добавление новой группы, редактирование и удаление существующей Отображение списка студентов Фильтрация списка студентов по фамилии и по номеру группы Добавление нового студента, редактирование и удаление существующего Требования к реализации Используемые технологии: Java 6 SE Пользовательский интерфейс на Swing Доступ к данным через JDBC Сервер баз данных: любая встроенная Java-RDBMS, например H2, HSQLDB, Derby. Требования к пользовательскому интерфейсу: Экраны системы: ◦ Список групп – таблица, кнопки «Добавить», «Изменить», «Удалить» ◦ Редактирование группы — поля ввода атрибутов, кнопки «ОК», «Отменить» ◦ Список студентов с фильтром - таблица, кнопки «Добавить», «Изменить», «Удалить», фильтр с полями «Фамилия», «Номер группы» ◦ Редактирование студента - поля ввода атрибутов, кнопки «ОК», «Отменить» Экраны редактирования должны быть модальными Другие требования: Код доступа к данным должен быть изолирован в классах DAO Каждая таблица должна иметь первичный ключ типа Long Система должна иметь защиту на уровне БД от удаления группы, содержащей студентов Готовое приложение должно содержать: ◦ Каталог с исходными текстами, классами и используемыми библиотеками ◦ SQL-скрипт создания таблиц в базе данных ◦ Командный файл, запускающий приложение вместе со встроенной базой данных При реализации системы запрещается использовать визуальные дизайнеры интерфейса для Swing

KazanExpress • Лёгкая сложность

Лёгкий уровень сложности - 1 звезда

Тестовое задание по Java от компании KazanExpress

Тестовое задание на Android разработку Тут находится описание тестового задания для кандидатов на Android-разработку в команду KazanExpress. Задача Нужно реализовать простое приложение, которое помогает пользователю найти интересующий его коктейль. Работать данное приложение должно с TheCocktailDb API. Есть три уровня сложности: [Easy] - для претендующих на позицию Junior Android Dev [Medium] - для претендующих на позицию Middle Android Dev [Hard] - для претендующих на позицию Senior Android Dev Требования к задаче Ниже будут описаны требования для выполнения задачи к каждому из уровней сложности. Уровни Medium и Hard подразумевают собой выполнение предыдущего уровня сложности. Easy На начальном уровне сложности главной задачей приложения будет отрисовка экрана с информацией о коктейле. Для получения рандомного коктейля во время загрузки приложения можно использовать данный GET запрос. Требования: У приложения должны быть онбординги, на них можно отобразить любую информацию о приложении; При запуске приложения на старте показываем индикатор прогресса на время ожидания ответа с сервера (по желанию можно добавить splash screen до экрана загрузки на свой вкус); На странице коктейля должно быть отображено: фото коктейля, название, id, категория, тип коктейля, тип стакана для сервировки; Статус бар должен быть прозрачным, а изображение коктейля "лежать" под статус баром; Картинки коктейлей нужно подгружать асинхронно (на время загрузки показываьб индикатор прогресса); Также дополнительно должен быть раздел "Ингридиенты", который появляется при скролле страницы товара; Должна быть кнопка "Добавить в избранное" в виде иконки сердечка. При клике на иконку нужно менять ее состояние (полезная работа не выполняется, просто меняем состояние иконки - например, закрашиваем); Через Pull-to-Refresh (Swipe-to-Refresh) отображать новый коктейль (повторно запросить рандомный и отрисовать); Нужно уметь обрабатывать ошибки сети. При возникновении ошибки выводить кнопку Retry, при клике на которую приложение пытается загрузить новый коктейль и отобразить его. Medium Нужно реализовать все, что было перечислено в Easy, но помимо этого: Сделать стартовый экран приложения с поисковой строкой и миниатюрными "карточками" уже посещённых коктейлей; Позволить пользователю с помощью поисковой строки находить коктейли. В случае, если запрос на поиск по названию коктейля вернул результат, переходить на страницу первого элемента из списка. Если же запрос ничего не вернул - показывать соответствующий toast с информацией; Добавить на страницу коктейля кнопку "Назад", которая возвращала бы на главный экран. Hard Нужно реализовать все, что было перечислено в Medium, но помимо этого: Сделать навигационное меню с пунктами "Главная", "Категории" и "Избранное"; Функционал главной страницы оставить по аналогии с уровнем сложности Medium; На странице "Категории" отобразить список категорий коктейлей; При клике на любой элемент из списка категорий, отображать экран с каталогом миниатюрных "карточек" коктейлей из соответствующей категории; Все картинки коктейлей на миниатюрах должны асинхронно подгружаться; Каталог "карточек" должен появиться как только все данные по карточкам подгрузятся. Во время ожидания подгрузки нужно отображать скелетоны карточек; Со страницы коктейля кнопка "Назад" должна отправлять пользователя на последний активный Activity. Правила сдачи задания Нужно будет создать Pull Request с ваши решением в данный репозиторий, а также отправить apk-файл на почту kevin@kazanexpress.ru. Сроки - Easy и Medium - 7 дней, Hard - 14 дней. P.S. Приятный визуал приветствуется. Особое внимание будет уделено чистоте кода.

Получите доступ более чем к 500 тестовым заданиям
Сервис можно использовать бесплатно,
без ограничений. Чтобы получить полный доступ,
вам необходимо зарегистрироваться.
где найти тестовые задания для практики
пример тестового задания junior
тестовые задания для junior java
практические задачи по java
решение тестового задания java