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

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

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

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
В чем разница между sleep() и wait()?

🔹 sleep() — это метод из Thread, он просто приостанавливает выполнение текущего потока на заданное время. Он не освобождает монитор (lock) объекта.

🔹 wait() — это метод из Object, он используется для синхронизации между потоками. Поток, вызвавший wait(), освобождает монитор и ждет, пока другой поток вызовет notify() или notifyAll().

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91🔥1
Чем отличается абстрактный класс от интерфейса?

Абстрактный класс может содержать как реализованные, так и абстрактные методы, состояние (поля), а также конструкторы. Интерфейс до Java 8 содержал только абстрактные методы, но теперь может иметь default, static методы и даже private методы (с Java 9), но не может содержать состояние (кроме static final констант).

🔹 Ключевые отличия:

▪️ extends — только один абстрактный класс, но implements — множество интерфейсов.
▪️ Абстрактный класс позволяет инкапсулировать общую реализацию и состояние.
▪️ Интерфейс чаще используют для задания контракта, который может быть реализован классом с любой иерархией.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥5👏2
Что такое нормализация базы данных?

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

Нормализация включает несколько этапов, называемых нормальными формами (1NF, 2NF, 3NF и т.д.), каждая из которых имеет свои требования к структуре таблиц.

🔹 1НФ
Таблица должна содержать только атомарные значения (без множественных значений в одной ячейке) и уникальные строки.

🔹 2НФ

Таблица должна быть в 1НФ, и все ненулевые атрибуты должны быть полностью зависимы от первичного ключа.

🔹 3НФ
Таблица должна быть в 2НФ, и все атрибуты должны быть не только зависимы от первичного ключа, но и напрямую, без транзитивных зависимостей (когда один атрибут зависит от другого через третий).

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112🔥1
Что такое ссылка на метод?

Это способ передать ссылку на метод как объект, который может быть вызван позже. Это позволяет использовать методы как параметры в других методах или хранить их в коллекциях. Ссылка на метод может быть использована для вызова метода без его непосредственного вызова, часто используется в функциональном программировании.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤔41🔥1👏1
Что такое сигнатура метода?

Сигнатура метода — это его имя + список параметров с их типами (в порядке объявления). Возвращаемый тип и модификаторы доступа в сигнатуру не входят.

Методы с одинаковой сигнатурой не могут сосуществовать в одном классе, будет ошибка компиляции.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92🔥2
Расскажите про контракт equals

Основные правила контракта:

1. Рефлексивность: для любого объекта x, x.equals(x) должно возвращать true.
2. Симметричность: если x.equals(y) возвращает true, то и y.equals(x) должно возвращать true.
3. Транзитивность: если x.equals(y) возвращает true, а y.equals(z) возвращает true, то и x.equals(z) должно возвращать true.
4. Последовательность: если два объекта равны, то они должны оставаться равными на протяжении всех вызовов equals.
5. Неравенство: если x.equals(y) возвращает false, то x.hashCode() должен быть отличным от y.hashCode().

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥3🤔3👏2
💬 Обратная связь

Какие темы использовать для постов в этом месяце больше?

🔥 — Java core
👍🏼 — Spring
👾 — Паттерны
😁 — Напишу в комменты свой вариант

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍50🔥27👾21
🔥 Вы ещё можете застать старый добрый Proglib — с вечным доступом к курсам.

С 1 августа всё меняется: навсегда — останутся только те, кто успел купить сейчас.

-40% на все курсы. Включая обновлённый Python (кроме курса по AI-агентам)

Это не просто распродажа. Это — последняя точка входа в Proglib Academy по старым правилам.

📚 Выбрать и забрать свой курс навсегда → https://clc.to/TBtqYA
Когда возникает LazyInitializationException?

LazyInitializationException возникает, когда идёт обращение к лениво загружаемому полю вне активной сессии Hibernate, то есть после закрытия транзакции.

Типичный сценарий: вытянул сущность в сервисе, транзакция завершилась, а в контроллере попытался обратиться к связанному полю — и Hibernate не может лениво инициализировать связь, потому что Session уже закрыта.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍93🔥1
Что такое Spring контейнер?

Spring контейнер — это основная часть Spring Framework, отвечающая за управление жизненным циклом объектов и их зависимостями в приложении. Он использует принцип инверсии управления (IoC) для создания и управления объектами через внедрение зависимостей (DI).

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥1
В чём разница между @Controller и @RestController в Spring?

▪️ @Controller

Это стандартная аннотация для создания контроллера, который обрабатывает HTTP-запросы и возвращает представления (например, страницы HTML) или данные, которые будут обработаны и отправлены на клиентскую сторону.

▪️ @RestController

Это комбинация @Controller и @ResponseBody. То есть, она автоматически применяет аннотацию @ResponseBody ко всем методам контроллера.

Все методы, помеченные @RestController, возвращают данные непосредственно в виде JSON или XML (в зависимости от конфигурации) — без необходимости использования представлений.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤‍🔥1🔥1
Какие уровни изоляции транзакций существуют?

Существует 4 основных уровня изоляции транзакций, каждый из которых определяет степень видимости данных, изменённых в одной транзакции, для других транзакций:

— READ UNCOMMITTED (Чтение незафиксированных данных)
Наименьший уровень изоляции. Другие транзакции могут читать изменения, которые ещё не были зафиксированы (не коммитнуты). Это может привести к грязным чтениям.

— READ COMMITTED (Чтение зафиксированных данных)
Транзакция видит только те изменения, которые были зафиксированы другими транзакциями. Это предотвращает грязные чтения, но допускает неповторяемые чтения.

— REPEATABLE READ (Повторяемое чтение)
Гарантирует, что данные, считанные в рамках одной транзакции, не изменятся до её завершения (не допускаются неповторяемые чтения). Однако, могут возникать фантомные чтения.

— SERIALIZABLE (Сериализация)
Наивысший уровень изоляции. Все транзакции выполняются последовательно, как если бы они были выполнены по очереди. Это устраняет все виды аномалий, но может значительно снизить производительность.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63🔥2
💬 Обратная связь

Ежемесячный опрос по грейдам. Проверим, выросло ли число мидлов.
Ваш грейд:

🔥 — Senior
👍🏼 — Middle
❤️ — Junior
😁 — Ещё учусь

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
😁39👍3324🔥18
Что такое иммутабельный объект?

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

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥1👏1
В чем разница между final, finally и finalize()?

final используется для:

▪️ для переменных — значение нельзя изменить
▪️ для методов — нельзя переопределить
▪️ для классов — нельзя наследовать

finally — блок, связанный с try-catch. Выполняется всегда, независимо от того, было исключение или нет. Гарантирует выполнение очистки/закрытия ресурсов.

finalize() — метод из Object, вызывается сборщиком мусора перед уничтожением объекта. Позволяет выполнить финальную очистку, но устарел и не рекомендуется к использованию (с Java 9 — deprecated).

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84🔥2
Какие бывают виды конструкторов?

Существует несколько видов конструкторов:

🔹 Конструктор по умолчаниюэто конструктор без параметров, который компилятор создаёт автоматически, если не был определён ни один другой конструктор. Он инициализирует поля объекта значениями по умолчанию.

🔹 Конструктор с параметрамиконструктор, который позволяет передавать значения при создании объекта, что даёт возможность инициализировать объект с конкретными значениями.

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

🔹 Конструктор с переменным числом аргументов (varargs) позволяет передавать переменное количество аргументов, которые обрабатываются как массив внутри конструктора.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94🔥2
В чем разница между параллелизмом и многопоточностью?

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

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

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍104🔥2🤔2
Что такое Big O?

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

Основные виды:

▪️ O(1) — Константная сложность. Время выполнения не зависит от размера входных данных (например, доступ к элементу массива по индексу).
▪️ O(n) — Линейная сложность. Время выполнения пропорционально размеру входных данных (например, проход по всем элементам списка).
▪️ O(n²) — Квадратичная сложность. Время выполнения пропорционально квадрату размера входных данных (например, алгоритм сортировки пузырьком).
▪️ O(log n) — Логарифмическая сложность. Время выполнения растет медленно по мере увеличения входных данных (например, бинарный поиск).

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍102🔥1
В чем разница между map() и flatMap()?

🔹 map() — применяется для преобразования элементов потока. Он берет каждый элемент и применяет к нему функцию, возвращая новый поток, состоящий из преобразованных элементов.

🔹 flatMap() — также применяется для преобразования элементов, но с важным отличием. Он "разворачивает" потоки или коллекции, полученные на выходе функции, в один поток. То есть, если функция возвращает поток или коллекцию, flatMap() распаковывает их и объединяет в одном потоке, избавляясь от вложенности.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🔥2
Расскажите про иерархию исключений

В Java иерархия исключений начинается от класса Throwable, который делится на две ветви:

🔹 Error — критические ошибки JVM, например OutOfMemoryError. Их не обрабатывают, так как это сбои среды выполнения.
🔹 Exception — обрабатываемые ошибки приложения.

Внутри Exception выделяют:

🔹 Checked exceptions — наследники Exception. Проверяются во время компиляции. Требуют try-catch или throws. Пример: IOException, SQLException.
🔹 Unchecked exceptions — наследники RuntimeException. Возникают из-за ошибок в логике программы, проверка компилятором не требуется. Пример: NullPointerException, IndexOutOfBoundsException.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1👏1