Библиотека собеса по Java | вопросы с собеседований
5.6K subscribers
308 photos
109 links
Вопросы с собеседований по Java и ответы на них.

Список наших каналов: https://t.me/proglibrary/9197
Учиться у нас: https://proglib.io/w/08c603b6

Обратная связь: @proglibrary_feedback_bot

По рекламе: @proglib_adv
Прайс: @proglib_advertising
Download Telegram
Работа с коллекциями с помощью Streams

Java Streams позволяют легко и эффективно работать с коллекциями данных, такими как списки, используя функциональный подход.

👀 Этот простой пример показывает, как с помощью Streams можно легко фильтровать и преобразовывать данные в коллекциях, делая код более лаконичным и понятным.
Объединение строк с помощью String.join

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

До Java 8 это обычно делалось с помощью цикла и объекта StringBuilder. С появлением метода String.join, эта задача стала намного проще и лаконичнее.

Использование метода String.join значительно упрощает задачу объединения строк с разделителем, делая код более читаемым и сокращая количество кода, которое нужно написать и поддерживать.
Ответьте на 3 вопроса, чтобы получить вводные занятия к курсу «Алгоритмы и структуры данных»

🔥Получите вводные занятия, ответив на 3 вопроса – https://proglib.io/w/caded0eb

На вводной части вас ждут:

1. Лекция «Производительность алгоритмов» от руководителя разработки Яндекс.Самокатов

2. Лекция «Итеративные сортировки и линейные сортировки» от аспирант департамента искусственного интеллекта ВШЭ

3. Практические задания после лекций

4. Ссылки на дополнительные материалы для самостоятельного изучения

⚡️Переходите и начинайте учиться уже сегодня – https://proglib.io/w/caded0eb
Please open Telegram to view this post
VIEW IN TELEGRAM
Оператор instanceof

Оператор java instanceof используется для проверки того, является ли объект экземпляром указанного типа (класса или подкласса или интерфейса). Во время выполнения результат оператора instanceof равен true, если значение выражения не равно null.

Это важное свойство операции instanceof, которое делает ее полезной для проверки приведения типов.
Локальные переменные в лямбда-выражениях

Java позволяет использовать локальные переменные внутри лямбда-выражений, но с одним важным ограничением: переменные должны быть эффективно финальными (effectively final).

Это означает, что после их инициализации переменные не могут быть изменены.

Использование локальных переменных в лямбда-выражениях может быть очень полезным для передачи дополнительных данных в лямбда-выражения
🎓 Продвинутый SQL: секреты профессионалов

Рассказываем о сложных стратегиях оптимизации запросов, продвинутых типах соединений и тонкостях использования SELECT.

Читать статью

#туториал
В чем разница между struct и class?

Ответ: Практически ни в чем. В struct модификаторы доступа по умолчанию public, в class private. Также отличается и наследование по умолчанию, у struct — public, у class — private.
Как конвертировать массив в список?

Используется метод Arrays.asList(), который преобразует массив в список.
Если equals() переопределен, есть ли какие-либо другие методы, которые следует переопределить?

Равные объекты должны возвращать одинаковые хэш коды. При переопределении equals() нужно обязательно переопределять и метод hashCode().
Что такое ViewResolver в Spring?

Реализации ViewResolver используются для разрешения страниц просмотра по имени. Мы настраиваем его в файле конфигурации bean-компонента spring. Пример на картинке.

InternalResourceViewResolver — это одна из реализаций интерфейса ViewResolver, и мы предоставляем каталог страниц просмотра и местоположение через свойства компонента. Таким образом, если метод обработчика контроллера возвращает «home», view resolver будет использовать страницу представления, расположенную по адресу /WEB-INF/views/home.jsp.
Метод compareTo()

В Java метод compareTo() получает значение 0, если аргумент является строкой лексически равной данной строке; значение меньше 0, если аргумент является строкой лексически большей, чем сравниваемая строка; и значение больше 0, если аргумент является строкой лексически меньшей этой строки.
Оптимизация сборщика мусора с помощью -XX:+UseG1GC

Java предоставляет множество возможностей для оптимизации производительности приложений.

✔️ Одной из таких возможностей является использование современного сборщика мусора G1 (Garbage First), который улучшает работу приложений с большим объемом данных и снижает задержки.

➡️ Чтобы включить использование G1GC, необходимо добавить флаг -XX:+UseG1GC при запуске Java-приложения:

java -XX:+UseG1GC G1GCExample
В чём заключается различие между методами submit() и execute() у пула потоков?

Оба метода являются способами подачи задачи в пул потоков, но между ними есть небольшая разница.

execute(Runnable command) определён в интерфейсе Executor и выполняет поданную задачу и ничего не возвращает.

submit() — перегруженный метод, определённый в интерфейсе ExecutorService. Способен принимать задачи типов Runnable и Callable и возвращать объект Future, который можно использовать для контроля и управления процессом выполнения, получения его результата.
Final класс

Нельзя расширять класс, объявленный как final. Проще говоря, никакой класс не может наследоваться от данного.

Прекрасным примером final класса в JDK является String. Первый шаг к созданию неизменяемого класса — пометить его как final, и тогда нельзя будет его расширить.
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Вложенные в интерфейсы классы

Вложенный (nested) в интерфейс класс является открытым (public) и статическим (static) даже без явного указания этих модификаторов. Помещая класс внутрь интерфейса, мы показываем, что он является неотъемлемой частью API этого интерфейса и более нигде не используется.

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

Colorable.Color color = new Colorable.Color(0, 0, 0);
color = new Triangle.Color(255, 255, 255);

Самым, наверное, известным примером этой идиомы является класс Map.Entry, содержащий пары ключ-значение ассоциативного словаря.
❗️Вакансии «Библиотеки программиста» — ждем вас в команде!

Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉авторов в наше медиа proglib.io
👉контент-менеджеров для ведения телеграм-каналов

Подробности тут.

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾
Please open Telegram to view this post
VIEW IN TELEGRAM
Улучшение логирования с использованием Java Logging API

Java предоставляет мощные инструменты для логирования, позволяя разработчикам легко отслеживать и управлять выводом логов.

Использование Java Logging API (java.util.logging) позволяет гибко настраивать и контролировать логирование в ваших приложениях.
Stamped Lock

Java Concurrent — один из самых интересных и в то же время малоизвестных пакетов Java, особенно среди разработчиков, работающих с веб-фреймворками.

Lock — более гибкий механизм синхронизации потоков, чем synchronized. Начиная с Java 8, можно использовать StampedLock вместо ReadWriteLock, что обеспечивает лучшую производительность и оптимистичную блокировку операций чтения.