uz
Feedback
Библиотека собеса по Java | вопросы с собеседований

Библиотека собеса по Java | вопросы с собеседований

Kanalga Telegram’da o‘tish

Вопросы с собеседований по Java и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/08c603b6 Для обратной связи: @proglibrary_feeedback_bot

Ko'proq ko'rsatish
6 486
Obunachilar
-524 soatlar
+47 kunlar
+1130 kunlar
Postlar arxiv
Какие виды ссылок на методы вы знаете? ☕️ ссылки на статические методы; ☕️ ссылки на методы экземпляра; ☕️ ссылки на конструкторы; ☕️ ссылки на обобщенные (шаблонные) методы.

Как переименовать файл? Переименовать файл можно, переместив содержимое первого файла в новый файл и удалив предыдущий файл.
Как переименовать файл? Переименовать файл можно, переместив содержимое первого файла в новый файл и удалив предыдущий файл. Java обрабатывает эту операцию, используя метод resolveSibiling. Он используется для разрешения данного пути относительно родительского пути этого пути.

Может ли статический метод быть переопределён или перегружен? Перегружен — да. Всё работает точно так же, как и с обычными методами — 2 статических метода могут иметь одинаковое имя, если количество их параметров или типов различается. Переопределён — нет. Выбор вызываемого статического метода происходит при раннем связывании (на этапе компиляции, а не выполнения) и выполняться всегда будет родительский метод, хотя синтаксически переопределение статического метода — это вполне корректная языковая конструкция. В целом, к статическим полям и методам рекомендуется обращаться через имя класса, а не объект.

Что такое класс Object? Какие в нем есть методы? Object — это базовый класс для всех остальных объектов в Java. Любой класс наследуется от Object и, соответственно, наследуют его методы: public boolean equals(Object obj) — служит для сравнения объектов по значению; int hashCode() — возвращает hash код для объекта; String toString() — возвращает строковое представление объекта; Class getClass() — возвращает класс объекта во время выполнения; protected Object clone() — создает и возвращает копию объекта; void notify() — возобновляет поток, ожидающий монитор; void notifyAll() — возобновляет все потоки, ожидающие монитор; void wait() — остановка вызвавшего метод потока до момента пока другой поток не вызовет метод notify() или notifyAll() для этого объекта; void wait(long timeout) — остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта; void wait(long timeout, int nanos) — остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта; protected void finalize() — может вызываться сборщиком мусора в момент удаления объекта при сборке мусора.

Что значит «усыпить» поток? Это значит приостановить его на определенный промежуток времени, вызвав в ходе его выполнения статический метод Thread.sleep() передав в качестве параметра необходимое количество времени в миллисекундах. До истечения этого времени поток может быть выведен из состояния ожидания вызовом interrupt() с выбрасыванием InterruptedException.

Как перебрать элементы LinkedList в обратном порядке, не используя медленный get(index)? Для этого в LinkedList есть обратный
Как перебрать элементы LinkedList в обратном порядке, не используя медленный get(index)? Для этого в LinkedList есть обратный итератор, который можно получить, вызвав метод descendingIterator().

Выполнится ли блок finally, если блок try или catch выполняют инструкцию return? Да, блок finally выполнится, даже если return выполнился в блоке try или catch. Это один из самых популярных и сложных вопросов по Java. Запомните: единственный способ остановить выполнение блока finally — использовать System.exit().

Как устроен HashMap? HashMap состоит из «корзин» (bucket). С технической точки зрения «корзины» — это элементы массива, которые хранят ссылки на списки элементов. При добавлении новой пары «ключ-значение» вычисляет хэш-код ключа, на основании которого вычисляется номер корзины (номер ячейки массива), в которую попадет новый элемент. Если корзина пустая, то в нее сохраняется ссылка на вновь добавляемый элемент, если же там уже есть элемент, то происходит последовательный переход по ссылкам между элементами в цепочке, в поисках последнего элемента, от которого и ставится ссылка на вновь добавленный элемент. Если в списке был найден элемент с таким же ключом, то он заменяется.

Какие возможности Spring предоставляет для коммуникации с базой данных? Spring предоставляет мощный набор инструментов для работы с базами данных. Ниже перечислены некоторые из них: — Spring JDBC: Абстракции над JDBC (Java Database Connectivity), что упрощает взаимодействие с базой данных через простые API. — Spring Data JPA: Spring абстракция над JPA (Java Persistence API) и упрощает взаимодействие с объектно-реляционными базами данных (ORM). — Spring ORM: Spring ORM интегрирует ORM-фреймворки, такие как Hibernate, с Spring Framework. Он обеспечивает удобную интеграцию между Spring и ORM-фреймворками, предоставляя возможности управления транзакциями, упрощенный доступ к данным и возможности кэширования. — Spring Data JDBC: Альтернативный подход к доступу к данным с использованием JDBC. В отличие от ORM, Spring Data JDBC предлагает простую и прямолинейную модель доступа к данным без использования объектно-реляционного отображения (ORM). — Spring Transactions: Spring предоставляет механизм управления транзакциями для работы с базами данных. Он позволяет объявлять транзакции с помощью аннотаций или XML-конфигурации. — Spring Batch: Spring Batch предоставляет возможности для пакетной обработки данных, включая чтение, обработку и запись данных в базу данных.

Что такое ключевое слово final и где его использовать? Ключевое слово final можно использовать для переменных, методов и клас
Что такое ключевое слово final и где его использовать? Ключевое слово final можно использовать для переменных, методов и классов. 1. final переменную нельзя переназначить на другой объект. 2. final класс бесплоден, у него не может быть наследников. 3. final метод не может быть переопределен у предка. Пробежали по верхам, теперь обсудим более подробно final переменные. Java даёт нам два способа создать переменную и присвоить ей некоторое значение: 1. Можно объявить переменную и инициализировать ее позже. 2. Можно объявить переменную и сразу же назначить ее. Пример с использованием final переменной для этих случаев приведен выше на картинке.

Кто еще не подписан на наш главный канал — очень рекомендуем! В «Библиотеке программиста» вас ждут фундаментальные IT-темы, G
Кто еще не подписан на наш главный канал — очень рекомендуем! В «Библиотеке программиста» вас ждут фундаментальные IT-темы, Git, рынок труда, главные новости и, конечно же, мемы😎 Вот вам топ недавних постов: 🔍про коммиты в ветках Git 🔍новость о создании сверхразумного ИИ 🔍подборка инфографик на фундаментальные темы 🔍дайджест нейросетей для разработки 👉Подписаться👈

Зачем нужны и какие бывают блоки инициализации? Блоки инициализации используются для выполнения определенного кода при создании объекта. Их использование позволяет вынести логику инициализации полей объекта за пределы конструкторов. Бывают два типа блоков инициализации: 1. Блоки инициализации экземпляра — выполняются при создании каждого нового экземпляра класса. Они объявляются с помощью ключевого слова instance и фигурных скобок. 2. Статические блоки инициализации — выполняются один раз при загрузке класса. Они объявляются с помощью ключевого слова static и фигурных скобок.

Что такое маркерный интерфейс? Каковы известные примеры таких интерфейсов в Java? Маркерный интерфейс — это интерфейс без каких-либо методов. Обычно он реализуется классом или расширяется другим интерфейсом для обозначения определенного свойства. Наиболее широко известными маркерами в стандартной библиотеке Java являются следующие: ☕️ Serializable используется для явного указания того, что этот класс может быть сериализован; ☕️ Cloneable позволяет клонировать объекты с помощью метода clone (без интерфейса Cloneable этот метод выдает исключение CloneNotSupportedException); ☕️ Remote используется в RMI для указания интерфейса, методы которого можно вызывать удаленно.

Назовите основные классы потоков ввода/вывода. Разделяют два вида потоков ввода/вывода: • байтовые - java.io.InputStream, java.io.OutputStream; • символьные - java.io.Reader, java.io.Writer.

Как одной строчкой преобразовать HashSet в ArrayList? Ответ на картинке.
Как одной строчкой преобразовать HashSet в ArrayList? Ответ на картинке.

Что будет, если переопределить equals() не переопределяя hashCode()? Какие могут возникнуть проблемы? Классы и методы, которые используют правила этого контракта могут работать некорректно. Так для HashMap это может привести к тому, что пара «ключ-значение», которая была в неё помещена при использовании нового экземпляра ключа не будет в ней найдена.

Generics: В чем преимущество, как работают? Что такое type-erasure? В чем отличие от шаблонов C++? 🔸Типы дженерики обеспечивают параметрический полиморфизм, т.е выполнение идентичного кода для различных типов. Типичный пример — коллекции, итераторы; 🔸type-erasure — это стирание информации о типе-параметре в runtime. Таким образом, в байт-коде мы увидим List, Set вместо List, Set, ну и type-cast'ы при необходимости; 🔸В отличие от дженериков в Java, в С++ шаблоны в итоге приводят к компиляции метода или типа для каждого специфицированного типа параметра (специализация шаблона).

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

Что вы подразумеваете под статическим блоком в Java? Статический блок в Java используется для инициализации статических переменных класса. Он выполняется только один раз: при первой загрузке класса в память.

Что такое «абстракция»? Абстрагирование — это способ выделить набор общих характеристик объекта, исключая из рассмотрения час
Что такое «абстракция»? Абстрагирование — это способ выделить набор общих характеристик объекта, исключая из рассмотрения частные и незначимые. Соответственно, абстракция — это набор всех таких характеристик. Представьте, что водитель едет в автомобиле по оживлённому участку движения. Понятно, что в этот момент он не будет задумываться о химическом составе краски автомобиля, особенностях взаимодействия шестерёнок в коробке передач или влияния формы кузова на скорость (разве что, автомобиль стоит в глухой пробке и водителю абсолютно нечем заняться). Однако, руль, педали, указатель поворота он будет использовать регулярно. #вопросы_с_собеседований