Библиотека собеса по Java | вопросы с собеседований
6.38K subscribers
359 photos
4 videos
201 links
Вопросы с собеседований по Java и ответы на них.

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

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

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

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
Можно ли объявить несколько main-методов в коде Java-приложения?

Ответ: Метод main() — точка входа в программу. В приложении может быть несколько таких методов. Если метод отсутствует, то компиляция возможна, но при запуске будет получена ошибка Error: Main method not found.
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

#️⃣C#

Библиотека шарписта
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика

💼Каналы с вакансиями

Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
Что такое «потокобезопасность»?

Ответ: Свойство объекта или кода, гарантирующее правильное поведение кода при его исполнении или использовании несколькими потоками. Например, потокобезопасный счётчик не пропустит ни один счёт, даже если один и тот же экземпляр этого счётчика будет использоваться несколькими потоками.
В чем разница между notify() и notifyAll()?

Ответ: Метод notify() пробуждает только один поток в пуле ожидания, в то время как метод notifyAll() пробуждает все потоки.
Как исключить поля из сериализации?

Ответ: Для управления сериализацией при определении полей можно использовать ключевое слово transient, таким образом исключив поля из общего процесса сериализации.
Как получить доступ к переопределенным методам родительского класса?

Ответ: С помощью ключевого слова super мы можем обратиться к любому члену родительского класса — методу или полю, если они не определены с модификатором private.
Поддерживается ли в Java множественное наследование?

Ответ: Java не поддерживает множественное наследование классов, т.е. наследование от нескольких классов одновременно. Однако, можно использовать интерфейсы для реализации множественного наследования.
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Какие условия «благополучной» сериализации объекта?

Для успешной сериализации объекта должны выполняться следующие условия:

1. Класс объекта должен имплементировать интерфейс Serializable.

2. В классе должно быть определено serialVersionUID — идентификатор версии класса. Это нужно для совместимости версий класса при десериализации.

3. Все поля класса должны быть сериализуемыми типами данных. Примитивные типы сериализуются автоматически, для объектов вложенных классов нужно также выполнить условия сериализации.

4. Если в классе есть поля, которые не нужно сериализовывать, они помечаются модификатором transient.

5. Методы класса сериализации не подлежат, сериализуются только данные объекта.

6. Класс должен иметь конструктор по умолчанию без параметров для корректной десериализации.
Как правильно сравнить значения строк двух различных объектов типа String и StringBuffer?

Чтобы сравнить значения строк из этих классов, нужно преобразовать их к одному типу, например String.
Для объекта StringBuffer можно вызвать метод toString(), который вернет строку типа String.

После этого значения уже можно сравнивать с помощью метода equals().

Или для простого сравнения значений можно использовать метод compareTo(), который вернет 0 если строки равны.
Что такое маркерный интерфейс?

Ответ: Маркерный интерфейс — это интерфейс без каких-либо методов. Обычно он реализуется классом или расширяется другим интерфейсом для обозначения определённого свойства.
Получаем наиболее распространенный элемент в списке

Сделать это можно с помощью следующего фрагмента кода, подробнее о котором можно почитать здесь.
🧠Чему вы бы хотели научиться?

Расскажите нам о ваших пожеланиях: какие навыки вы хотели бы прокачать в ближайшее время или какую профессию хотели бы приобрести?

За прохождение опроса вы получите промокод на скидку 15% на все наши курсы до конца 2024 года.

👉Опрос по ссылке👈
Расскажите о принципе работы алгоритма сортировки QuickSort. Напишите Java-код для реализации этого алгоритма и объясните его эффективность. Также, укажите, какие могут быть проблемы с производительностью в некоторых случаях и как можно их решить.

Алгоритм QuickSort относится к семейству алгоритмов быстрой сортировки. Он использует подход «разделяй и властвуй», разбивая массив на подмассивы, сортируя их и затем объединяя весь массив.
quickSort: Рекурсивная функция, которая разделяет массив и вызывает сама себя для подмассивов.
partition: Функция, которая определяет местоположение опорного элемента (pivot) и переставляет элементы так, чтобы элементы меньше pivot находились слева, а больше — справа.

QuickSort в среднем случае имеет сложность O(n log n), что делает его одним из самых эффективных алгоритмов сортировки. QuickSort может показывать плохую производительность в случае уже отсортированных или почти отсортированных данных.
Если вы хотите переопределить equals(), какие условия должны удовлетворяться для переопределенного метода?

— Метод должен удовлетворять условиям транзитивности, рефлексивности и симметричности.

— Метод должен быть согласованным — многократные вызовы с неизменными объектами должны возвращать один и тот же результат.

— Если x.equals(y) вернёт true, то x.hashCode() должен быть равен y.hashCode().

— Метод не должен выбрасывать исключения при сравнении допустимых значений.
Сколько создается новых объектов при добавлении нового элемента в HashMap?

Ответ: создается один новый объект статического вложенного класса Entry
Инвалидация итераторов

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

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

Чтобы избежать инвалидации итератора, вы можете использовать методы, предоставленные самой коллекцией, такие как Iterator.remove() или использовать итераторы из пакета java.util.concurrent, которые могут обрабатывать изменения коллекции в процессе итерации.
Как связан любой пользовательский класс с классом Object?

В Java все классы неявно наследуются от класса Object.
Это означает, что:

— Любой пользовательский класс получает методы класса Object, такие как equals, hashCode, toString и другие.
— Любой объект в Java является экземпляром класса Object.
— Можно приводить любой объект к типу Object без явного преобразования типов.
— Класс Object находится в root пакете java.lang, поэтому доступен без импортирования.
— Класс Object является предком иерархии всех классов, поэтому методы Object подходят для любого объекта.

Таким образом, наследование от Object делает полиморфизм в Java универсальным и избавляет от необходимости реализовывать базовые методы в каждом классе.
Какова иерархия коллекций?

В Java есть два основных интерфейса для коллекций — Collection и Map.

Interface Collection находится на верху иерархии и определяет общие методы для работы с коллекциями, такие как add(), remove(), size() и другие. От него наследуются конкретные реализации коллекций.

Наиболее часто используемые реализации Collection — это List, Set и Queue.

Map интерфейс реализует отдельную структуру данных. Он представляет отображение ключ-значение. Основные реализации — HashMap и TreeMap.
В чем разница между ошибкой 'StackOverflowError' и 'OutOfMemoryError' в Java и какие стратегии можно использовать для их предотвращения?

'StackOverflowError' возникает, когда стек вызовов программы превышает свой лимит, обычно из-за глубокой или бесконечной рекурсии. Для предотвращения этого, следует ограничивать глубину рекурсии и использовать итеративные алгоритмы, где это возможно.

'OutOfMemoryError', с другой стороны, возникает, когда JVM исчерпывает доступную ей память, часто из-за чрезмерного создания объектов или утечек памяти. Чтобы предотвратить это, следует оптимизировать использование памяти в приложении, правильно управлять жизненным циклом объектов, и рассмотреть возможность увеличения объема памяти, выделяемой для JVM.