Библиотека задач по Java | тесты, код, задания
5.85K subscribers
567 photos
3 videos
178 links
Задачи и тесты по Java для тренировки и обучения.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/13eb654a

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
Задача с собеседования

Вам дан целочисленный массив nums. Изначально вы находитесь в первом индексе массива, и каждый элемент массива представляет максимальную длину прыжка в этой позиции. Верните true, если вы можете добраться до последнего индекса, или false в противном случае (ответ на картинке).

Например:

Ввод: [1, 3, 1, 1, 4]
Вывод: true
Объяснение: Переходим на 1 шаг от индекса 0 к 1, затем на 3 шага к последнему индексу.

Ввод: [3, 2, 1, 0, 4]
Вывод: false
Какой символ является разделителем при указании пути в файловой системе?

Для различных операционных систем символ разделителя различается. Для Windows это \, для Linux — /.

В Java получить разделитель для текущей операционной системы можно через обращение к статическому полю File.separator.
Надежный способ проверить, равны ли два значения типа double

Наиболее надежный и точный способ проверить это — использовать Dоuble.соmpare() и сравнить значение с нулем.

Результаты сравнений при помощи Double.compare():
Значение = 0, если d1 == d2;
Значение < 0, если d1 < d2;
Значение > 0, если d1 > d2.
Узнаем размер файла с помощью Java

Здесь создается объект класса File, указывающий на файл, размер которого нужно узнать.

Затем вызывается метод length(), который возвращает размер файла в байтах. Результат выводится на консоль с помощью метода println().
Как определить, содержит ли массив определенное значение в Java с помощью потоков?

Чтобы проверить, содержит ли массив значений int, double или long значение, используйте IntStream, DoubleStream или LongStream соответственно.
Аннотация @Entity

Аннотация @Entity используется в Java для обозначения класса, который является сущностью. Сущность — это объект, который представляет собой строку данных в базе данных.

Чтобы класс был объявлен сущностью, необходимо добавить к нему аннотацию @Entity. Аннотация @Entity сообщает фреймворку JPA, что класс Customer является сущностью и должен быть сохранен в базе данных.
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Что обозначает ключевое слово transient?

Поля класса, помеченные модификатором transient, не сериализуются.

Обычно в таких полях хранится промежуточное состояние объекта, которое, к примеру, проще вычислить. Другой пример такого поля — ссылка на экземпляр объекта, который не требует сериализации или не может быть сериализован.
Класс MathContext

Класс MathContext используется для указания точности вычислений с плавающей запятой. Он определяет два параметра:

precision — количество знаков после запятой, которые должны сохраняться в результате вычислений.
roundingMode — способ округления значений, которые не могут быть точно представлены с заданной точностью.

По умолчанию точность вычислений в Java равна 16 знакам после запятой, а режим округления — HALF_UP.
Почему строка является популярным ключом в HashMap в Java?

Поскольку строки неизменяемы, их хэш код вычисляется и кэшируется в момент создания, не требуя повторного пересчета при дальнейшем использовании. Поэтому в качестве ключа HashMap они будут обрабатываться быстрее.
Что выведет код сверху?
Anonymous Quiz
2%
8
23%
24
2%
33
73%
32
Можно ли в конструкторе использовать return?

Можно, но без возвращаемого значения справа от return. То есть можно использовать return как вспомогательную конструкцию при вычислениях в конструкторе, чтобы срочно закончить (прервать) выполнение дальнейшего кода и завершить инициализацию объекта.

Например, у нас есть класс Cat, и если Cat бездомный — isHomeless = true, нам нужно закончить инициализацию и не заполнять другие поля (ведь они нам неизвестны, так как котик бездомный).

Но если говорить о конкретных значениях, конструктор не может использовать return для возврата какого-то значения, потому что:

⏺️ При объявлении конструктора у вас не будет ничего похожего на возвращаемый тип;

⏺️ Как правило, конструктор неявно вызывается во время создания экземпляра;

⏺️ Конструктор — это не метод: это отдельный механизм, единственная цель которого — инициализировать переменные экземпляра.
Какими значениями инициализируются переменные по умолчанию?

Ответ: Числа инициализируются 0 или 0.0; char — \u0000; boolean — false; Объекты (в том числе String) — null.
Какие классы позволяют ускорить чтение/запись за счет использования буфера?

• BufferedInputStream(InputStream in)/ BufferedInputStream(InputStream in, int size),
• BufferedOutputStream(OutputStream out)/BufferedOutputStream(OutputStream out, int size),
• BufferedReader(Reader r)/BufferedReader(Reader in, int sz),
• BufferedWriter(Writer out)/BufferedWriter(Writer out, int sz)
Для чего используется оператор assert?

Оператор assert используется для проверки условий во время выполнения программы.
Он позволяет проверить истинность некоторого логического выражения и выбросить исключение AssertionError, если выражение ложно.

Основные применения assert:
⚡️ Проверка предусловий и постусловий в методах.

⚡️ Проверка инвариантов в критических секциях кода.

⚡️ Отладка при разработке, чтобы проверить ожидаемое состояние программы в определенных точках.

⚡️ Проверка условий в потенциально опасных ситуациях, например при работе с массивами.

assert лучше использовать для отладки и проверки инвариантов, а для критически важных проверок предусловий лучше применять явную проверку условий и выброс исключений.
StringTokenizer

StringTokenizer — это класс в Java, который используется для разбиения строки на токены. Токены — это отдельные части строки, разделенные символами-разделителями.

Создание объекта StringTokenizer:

StringTokenizer st = new StringTokenizer(строка, разделители);

строка — это строка, которую нужно разбить на токены.
разделители — это строка, содержащая символы-разделители.
Micronaut

Micronaut — это относительно новый фреймворк для разработки микросервисов на Java.
Основные преимущества — высокая производительность, низкое потребление памяти, интеграция с популярными технологиями микросервисов.
Фреймворк активно развивается и используется в продакшене несколькими крупными компаниями.

Области применения:
— Разработка высокопроизводительных микросервисов. Micronaut оптимизирован для создания легковесных микросервисов с минимальным использованием ресурсов.
— Построение serverless-приложений. Благодаря низким накладным расходам при старте фреймворк хорошо подходит для бессерверных архитектур на основе функций.
— Быстрая разработка микросервисов. Фреймворк содержит много готовой инфраструктуры для разработки, позволяя быстрее создавать сервисы.
— Интеграция с GraalVM. Micronaut оптимизирован для работы со средой исполнения GraalVM, что дает дополнительное ускорение.
Задача с собеседования

В целочисленном массиве переместите все 0 в конец, сохраняя относительный порядок ненулевых элементов (Ответ на картинке).

Например:

Массив на вход: [0, 1, 0, 3, 12]
Вывод: [1, 3, 12, 0, 0]

Массив на вход: [0]
Вывод: [0]