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

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

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

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Что такое MVC?

MVC (Model-View-Controller) — это архитектурный шаблон, разделяющий приложение на три компонента:

▪️ Model (Модель) — содержит бизнес-логику
▪️ View (Представление) — отображает данные пользователю, получая их от модели
▪️ Controller (Контроллер) — обрабатывает входные данные (обычно от пользователя), вызывает нужные методы модели и обновляет представление

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

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112🔥2👏2🤔1
Расскажите о паттерне "Стратегия"?

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

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

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

Ваше мнение по контенту:

🔥 — Всё супер
👍🏼 — Нормально
😁 — Есть предложения по улучшению (в комменты)

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥51👍15😁3
В чем разница между sleep() и wait()?

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

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

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92🔥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👏21
Что такое нормализация базы данных?

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

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

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

🔹 2НФ

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

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

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

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

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

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

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

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍102🔥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
👍55🔥27👾23
🔥 Вы ещё можете застать старый добрый 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
👍94🔥1
Что такое Spring контейнер?

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

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍93🔥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
👍101❤‍🔥1🔥1
Какие уровни изоляции транзакций существуют?

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

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

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

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

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

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

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

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

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

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

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥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
👍115🔥2
В чем разница между параллелизмом и многопоточностью?

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

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

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