Библиотека собеса по Java | вопросы с собеседований
Open in Telegram
Вопросы с собеседований по Java и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/08c603b6 Для обратной связи: @proglibrary_feeedback_bot
Show more6 491
Subscribers
-224 hours
+97 days
+1830 days
Posts Archive
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Конструктор
Конструктор — это специальный метод в классе, который вызывается при создании нового объекта этого класса. Конструкторы используются для инициализации состояния объекта, устанавливая начальные значения его полей. Конструкторы обеспечивают правильное создание объектов и обычно выполняют первоначальные операции, необходимые для поддержания корректного состояния объекта.
Apache Commons Lang3
Apache Commons Lang3 — это библиотека Java, предоставляющая набор утилит для работы с базовыми классами Java, такими как String, Object, Collection и др.
Она дополняет стандартную библиотеку Java, предоставляя дополнительные методы, которые часто используются в разработке.
❓Как писать автотесты так, чтобы они выполняли свою функцию с вашим минимальным участием?
Об этом рассказываем на онлайн-курсе «Java QA Engineer. Professional» в OTUS.
За 4 месяца обучения вы научитесь организовывать CI-процесс, выполнять тесты в несколько потоков, автоматизировать API/Mobile и разберетесь в различных фреймворках и библиотеках.
Все это позволит вам предвидеть поведение системы и получать понятные отчеты.
В качестве проектной работы вы построите полноценный проект по UI-автоматизации с соответствующей инфраструктурой.
👉🏻 ПРОЙТИ ТЕСТ — https://otus.ru/lessons/java-qa-pro/assessment/?utm_source=telegram&utm_medium=cpm&utm_campaign=jqa&utm_term=java_interview_lib&utm_content=test_24-04-2144_usp-qa_python_aitext_text-headline1_aida_long_banner_banner-hl1_no_standart
Пройдете тест, получите специальные условия для поступления на курс и доступ к 27 открытым урокам курса.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru Erid 2Vtzqwb47sf
❓Как писать автотесты так, чтобы они выполняли свою функцию с вашим минимальным участием?
Об этом рассказываем на онлайн-курсе «Java QA Engineer. Professional» в OTUS.
За 4 месяца обучения вы научитесь организовывать CI-процесс, выполнять тесты в несколько потоков, автоматизировать API/Mobile и разберетесь в различных фреймворках и библиотеках.
Все это позволит вам предвидеть поведение системы и получать понятные отчеты.
В качестве проектной работы вы построите полноценный проект по UI-автоматизации с соответствующей инфраструктурой.
👉🏻 ПРОЙТИ ТЕСТ — https://otus.ru/lessons/java-qa-pro/assessment/?utm_source=telegram&utm_medium=cpm&utm_campaign=jqa&utm_term=java_interview_lib&utm_content=test_24-04-2144_usp-qa_python_aitext_text-headline1_aida_long_banner_banner-hl1_no_standart
Пройдете тест, получите специальные условия для поступления на курс и доступ к 27 открытым урокам курса.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru Erid 2Vtzqwb47sf
Метод setUp()
Метод setUp() (или before(), в предыдущих версиях JUnit) используется для настройки начальных условий перед выполнением каждого тестового метода. Этот метод выполняется перед каждым тестовым методом, который помечен аннотацией @Test. Это позволяет вам подготовить общие данные, создать объекты и настроить другие условия перед тестированием.
☕🔍 Тестирование в Java: лучшие практики, инструменты и
рекомендации для разработчиков
Качественное тестирование — залог успешного Java-проекта. В этой статье мы поделимся лучшими практиками, инструментами и методами, которые помогут вам создавать надежный и эффективный код.
Читать статью
BrokenBarrierException
BrokenBarrierException — это исключение, которое возникает в Java, когда поток пытается ждать на барьере, который находится в сломанном состоянии или когда пытается войти в барьер, который переходит в сломанное состояние во время ожидания.
Как исправить:
— Обработайте исключение BrokenBarrierException в коде.
— Убедитесь, что все потоки, которые будут ждать на барьере, завершатся до того, как вы его сломаете.
— Используйте CyclicBarrier вместо Barrier, если вам нужно сбросить барьер и запустить его снова.
Объясните процесс загрузки, инициализации, выполнения и выгрузки класса в Java Virtual Machine (JVM). Какие шаги выполняются на каждом этапе?
Ответ:
Загрузка (Loading):
— Нахождение и загрузка класс-файла: Class Loader ищет и загружает байт-код класса из файловой системы, JAR-архива, сети или другого источника.
— Создание структур данных: Создаются структуры данных для представления класса в памяти JVM, такие как Class объект.
Подготовка (Preparation):
— Выделение памяти для статических переменных: Выделяется память для статических переменных, инициализированных значением по умолчанию.
Инициализация (Initialization):
— Инициализация статических переменных и выполнение статических блоков: Статические переменные получают значения из кода инициализации, выполняются статические блоки.
Выполнение (Execution):
— Вызов метода main(): Если класс содержит метод public static void main(String[] args), JVM вызывает этот метод для выполнения программы.
— Вызов других методов: JVM вызывает другие методы по мере необходимости.
Выгрузка (Unloading):
— Освобождение памяти: Если класс больше не используется и нет активных ссылок на его объекты, JVM может выгрузить класс и освободить память.
Программа по сравнению элементов массива и букв строки
Для сравнения элементов массива и букв строки в Java можно использовать следующую программу.
Программа создает массив из символов {'a', 'c', 'd', 'f', 'g'} и строку «abcdefg». В цикле происходит сравнение элементов массива и букв строки с помощью метода charAt(). Если элемент массива равен букве строки, то выводится сообщение об этом.
Затем массив сортируется по возрастанию методом sort() из класса Arrays. Отсортированный массив выводится на экран.
Worker Thread
Worker Thread (рабочий поток) — это обычный поток, который выполняет задачи в фоновом режиме, отдельно от главного потока приложения.
Использование Worker Thread:
— Worker Threadы отлично подходят для выполнения длительных задач, которые не должны блокировать главный поток.
— Отделение длительных задач от главного потока позволяет сохранить отзывчивость интерфейса пользователя.
— Распределение задач между несколькими Worker Threadами может повысить производительность приложения, особенно на многоядерных процессорах.
Как работает механизм Double Brace Initialization и какие потенциальные проблемы он может создать?
Double Brace Initialization в Java — это техника инициализации объектов, которая использует двойные фигурные скобки. Первая скобка создает анонимный внутренний класс, а вторая — блок инициализации этого класса. Этот метод часто используется для удобной инициализации коллекций. Однако он может привести к утечкам памяти, поскольку анонимный внутренний класс держит неявную ссылку на внешний класс, что может помешать сборке мусора во внешнем классе. Кроме того, он увеличивает размер класса и может влиять на производительность.
Что такое WeakReference?
WeakReference — это класс, представляющий собой «слабую ссылку» на объект. Слабая ссылка не препятствует сборщику мусора (GC) в удалении объекта, на который она ссылается.
Когда использовать WeakReference:
— При кэшировании: Слабые ссылки можно использовать для реализации кэша, где объекты кеша удаляются из памяти, когда они больше не используются, но не сразу.
— При отслеживании объектов: Слабые ссылки можно использовать для отслеживания объектов, не препятствуя их удалению GC.
— При реализации «умных указателей»: Слабые ссылки можно использовать для реализации «умных указателей», которые автоматически освобождают ресурсы, когда они больше не нужны.
🦾🧠🏋️Качаем мозги к лету!
Курс «Алгоритмы и структуры данных» для тех, кто хочет научиться работать с алгоритмами, подготовиться к собеседованию крупную IT-компанию и начать брать более сложные проекты.
➡️ Алгоритмы и структуры данных 35 990 ₽ 21 594 ₽
⭐️ Переходите и активируйте бесплатные вводные занятия курса — https://proglib.io/w/da6727d1
Вас ждут:
– 150 практических заданий и 47 видеолекций
– бессрочный доступ к обучению
– поддержка преподавателя в чате
А также очень харизматичный спикер из Яндекса 🙌🏻
Cobertura
Cobertura — это инструмент для покрытия кода, который помогает разработчикам Java отслеживать, какие части их кода тестируются. Он работает путем сбора данных о том, какие строки кода выполняются во время тестов, и сравнения этих данных с полным набором строк кода в проекте.
Что такое StringJoiner?
Класс StringJoiner используется, чтобы создать последовательность строк, разделенных разделителем с возможностью присоединить к полученной строке префикс и суффикс:
StringJoiner joiner = new StringJoiner(».», «prefix-», «-suffix»);
for (String s : «Hello the brave world».split(» «)) {
joiner.add(s);
}
System.out.println(joiner); //prefix-Hello.the.brave.world-suffix
Восходящее и нисходящее преобразование
Восходящее преобразование (upcasting) происходит, когда объект или значение преобразуется в тип, который находится выше в иерархии наследования.
Нисходящее преобразование (downcasting) происходит, когда объект или значение преобразуется в тип, который находится ниже в иерархии наследования. Для выполнения нисходящего преобразования необходимо явно привести типы.
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
SpotBugs
SpotBugs — это бесплатный инструмент статического анализа кода Java, являющийся преемником FindBugs. Он помогает обнаруживать широкий спектр ошибок и потенциальных проблем в коде, таких как нулевые указатели, утечки ресурсов, небезопасное использование API, логические ошибки и неэффективный код.
Объясните принципы работы и использование Future и Callable в Java для выполнения асинхронных задач. Приведите пример кода с использованием Future и Callable.
Ответ:
—
Callable: Представляет собой задачу, которую можно выполнить и получить результат.
— Future: Интерфейс, предназначенный для представления результата асинхронной операции. Он позволяет проверять статус завершения задачи, ожидать завершения и получать результат.
Объяснение:
Создание ExecutorService с одним потоком.
ExecutorService executorService = Executors.newSingleThreadExecutor();
Создание объекта Callable, представляющего асинхронную задачу.
Callable<String> callableTask = ...;
Подача задачи на выполнение и получение объекта Future, с помощью которого можно управлять и получать результат асинхронной задачи.
Future<String> future = executorService.submit(callableTask);
Ожидание завершения задачи и получение результата. Если задача еще не завершена, метод get() будет блокировать текущий поток до завершения задачи.
String result = future.get();
Завершение работы ExecutorService после завершения всех задач.
executorService.shutdown();
Примечание:
Использование Callable и Future полезно в ситуациях, когда вы хотите выполнить асинхронную задачу и получить результат её выполнения. Это может быть полезно в приложениях, где необходимо избегать блокировки главного потока ожиданием завершения долгих операций.
Available now! Telegram Research 2025 — the year's key insights 
