Библиотека собеса по Java | вопросы с собеседований
Open in Telegram
Вопросы с собеседований по Java и ответы на них. По рекламе: @proglib_adv Учиться у нас: clc.to/3wECtA Для обратной связи: @proglibrary_feeedback_bot
Show more6 465
Subscribers
-224 hours
-77 days
-1230 days
Posts Archive
❓ Что такое иммутабельный объект?
Иммутабельный объект — это объект, состояние которого невозможно изменить после его создания. Иммутабельность способствует безопасности потоков и предотвращению ошибок, связанных с изменениями состояния объектов. Примером может служить класс String.
🐸 Библиотека собеса по Java
💬 Обратная связь
Ежемесячный опрос по грейдам. Проверим, выросло ли число мидлов.
Ваш грейд:
🔥 — Senior
👍🏼 — Middle
❤️ — Junior
😁 — Ещё учусь
🐸 Библиотека собеса по Java
❓ Какие уровни изоляции транзакций существуют?
Существует 4 основных уровня изоляции транзакций, каждый из которых определяет степень видимости данных, изменённых в одной транзакции, для других транзакций:
— READ UNCOMMITTED (Чтение незафиксированных данных)
Наименьший уровень изоляции. Другие транзакции могут читать изменения, которые ещё не были зафиксированы (не коммитнуты). Это может привести к грязным чтениям.
— READ COMMITTED (Чтение зафиксированных данных)
Транзакция видит только те изменения, которые были зафиксированы другими транзакциями. Это предотвращает грязные чтения, но допускает неповторяемые чтения.
— REPEATABLE READ (Повторяемое чтение)
Гарантирует, что данные, считанные в рамках одной транзакции, не изменятся до её завершения (не допускаются неповторяемые чтения). Однако, могут возникать фантомные чтения.
— SERIALIZABLE (Сериализация)
Наивысший уровень изоляции. Все транзакции выполняются последовательно, как если бы они были выполнены по очереди. Это устраняет все виды аномалий, но может значительно снизить производительность.
🐸 Библиотека собеса по Java
По результатам опроса* в июне 2025 россиянам для комфортной жизни требуется зарплата не ниже 155.000 рублей в месяц. По словам опрошенных, этой суммы хватило бы и на необходимые продукты питания, и на сезонные фрукты, и даже на формирование финансовой подушки.
Так а чего ты сидишь на своей душной работе с зарплатой в 90к, без перспективы роста и премией раз в год? Листаешь мемы, мечтаешь о путешествии в Тай, но думаешь, о том, как закрыть кредиты? Отличное времяпрепровождение, конечно.
Считаешь, что достиг своего потолка? Или, может, боишься перемен? Пфф, а кто нет? Глаза боятся, руки делают! Это как в том анекдоте: “...ты лотерейный билет-то купил хоть раз в жизни?!”. Загугли, кажется, тебе этот случай покажется знакомым.
Вместо того, чтобы сидеть и заниматься самобичеванием или утешением себя любимого, поверь в себя. Не хочешь верить в себя - поверь в нас!
Мы, Kata Academy, гарантируем тебе минимальную зарплату после курса по Java-разработке от 120.000 рублей. Сразу, с первого месяца работы. С тебя - прилежно учиться, с нас - научить тебя так, чтобы ты получал не только гарантированную минималку, а хотя бы процентов на 70% больше. С работой - поможем.
Будь зайкой, запишись на консультацию, не откладывай: https://kata.pw/kgkrRy
*Опрос проводился у мамы и бабушки.
Реклама. ООО «КАТА АКАДЕМИЯ», ИНН 7802925162. Erid 2Vtzqxc2RSG
❓ В чём разница между @Controller и @RestController в Spring?
▪️ @Controller
Это стандартная аннотация для создания контроллера, который обрабатывает HTTP-запросы и возвращает представления (например, страницы HTML) или данные, которые будут обработаны и отправлены на клиентскую сторону.
▪️ @RestController
Это комбинация @Controller и @ResponseBody. То есть, она автоматически применяет аннотацию @ResponseBody ко всем методам контроллера.
Все методы, помеченные @RestController, возвращают данные непосредственно в виде JSON или XML (в зависимости от конфигурации) — без необходимости использования представлений.
🐸 Библиотека собеса по Java
❓ Что такое Spring контейнер?
Spring контейнер — это основная часть Spring Framework, отвечающая за управление жизненным циклом объектов и их зависимостями в приложении. Он использует принцип инверсии управления (IoC) для создания и управления объектами через внедрение зависимостей (DI).
🐸 Библиотека собеса по Java
❓ Когда возникает LazyInitializationException?
LazyInitializationException возникает, когда идёт обращение к лениво загружаемому полю вне активной сессии Hibernate, то есть после закрытия транзакции.
Типичный сценарий: вытянул сущность в сервисе, транзакция завершилась, а в контроллере попытался обратиться к связанному полю — и Hibernate не может лениво инициализировать связь, потому что Session уже закрыта.
🐸 Библиотека собеса по Java
🔥 Вы ещё можете застать старый добрый Proglib — с вечным доступом к курсам.
С 1 августа всё меняется: навсегда — останутся только те, кто успел купить сейчас.
-40% на все курсы. Включая обновлённый Python (кроме курса по AI-агентам)
Это не просто распродажа. Это — последняя точка входа в Proglib Academy по старым правилам.
📚 Выбрать и забрать свой курс навсегда → https://clc.to/TBtqYA
💬 Обратная связь
Какие темы использовать для постов в этом месяце больше?
🔥 — Java core
👍🏼 — Spring
👾 — Паттерны
😁 — Напишу в комменты свой вариант
🐸 Библиотека собеса по Java
❓ Расскажите про контракт equals и hashCode
Контракт между методами equals и hashCode важен для корректной работы коллекций. Основные правила контракта:
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().
Метод hashCode() должен быть согласован с методом equals(). Это значит, что если два объекта равны по методу equals(), то их hashCode() тоже должен быть одинаковым.
🐸 Библиотека собеса по Java
❓ Что такое сигнатура метода?
Сигнатура метода — это его имя + список параметров с их типами (в порядке объявления). Возвращаемый тип и модификаторы доступа в сигнатуру не входят.
Методы с одинаковой сигнатурой не могут сосуществовать в одном классе, будет ошибка компиляции.
🐸 Библиотека собеса по Java
❓ Что такое ссылка на метод?
Это способ передать ссылку на метод как объект, который может быть вызван позже. Это позволяет использовать методы как параметры в других методах или хранить их в коллекциях. Ссылка на метод может быть использована для вызова метода без его непосредственного вызова, часто используется в функциональном программировании.
🐸 Библиотека собеса по Java
❓ Что такое нормализация базы данных?
Это процесс организации данных в базе таким образом, чтобы минимизировать избыточность и зависимость. Главная цель — устранение дублирования данных и создание структур, которые упрощают обновления и поддерживают целостность данных.
Нормализация включает несколько этапов, называемых нормальными формами (1NF, 2NF, 3NF и т.д.), каждая из которых имеет свои требования к структуре таблиц.
🔹 1НФ
Таблица должна содержать только атомарные значения (без множественных значений в одной ячейке) и уникальные строки.
🔹 2НФ
Таблица должна быть в 1НФ, и все ненулевые атрибуты должны быть полностью зависимы от первичного ключа.
🔹 3НФ
Таблица должна быть в 2НФ, и все атрибуты должны быть не только зависимы от первичного ключа, но и напрямую, без транзитивных зависимостей (когда один атрибут зависит от другого через третий).
🐸 Библиотека собеса по Java
❓ Чем отличается абстрактный класс от интерфейса?
Абстрактный класс может содержать как реализованные, так и абстрактные методы, состояние (поля), а также конструкторы. Интерфейс до Java 8 содержал только абстрактные методы, но теперь может иметь default, static методы и даже private методы (с Java 9), но не может содержать состояние (кроме static final констант).
🔹 Ключевые отличия:
▪️ extends — только один абстрактный класс, но implements — множество интерфейсов.
▪️ Абстрактный класс позволяет инкапсулировать общую реализацию и состояние.
▪️ Интерфейс чаще используют для задания контракта, который может быть реализован классом с любой иерархией.
🐸 Библиотека собеса по Java
❓ В чем разница между sleep() и wait()?
🔹 sleep() — это метод из Thread, он просто приостанавливает выполнение текущего потока на заданное время. Он не освобождает монитор (lock) объекта.
🔹 wait() — это метод из Object, он используется для синхронизации между потоками. Поток, вызвавший wait(), освобождает монитор и ждет, пока другой поток вызовет notify() или notifyAll().
🐸 Библиотека собеса по Java
💬 Обратная связь
Ваше мнение по контенту:
🔥 — Всё супер
👍🏼 — Нормально
😁 — Есть предложения по улучшению (в комменты)
🐸 Библиотека собеса по Java
❓ Расскажите о паттерне "Стратегия"?
Стратегия — это поведенческий паттерн, который позволяет определить семейство алгоритмов, инкапсулировать каждый из них и сделать их взаимозаменяемыми. Объект делегирует выполнение алгоритма внешнему объекту — стратегии.
Применяется, когда нужно выбирать поведение на лету, не загромождая код условными конструкциями. Часто используется для реализации разных вариантов бизнес-логики без изменения вызывающего кода.
🐸 Библиотека собеса по Java
❓ Что такое MVC?
MVC (Model-View-Controller) — это архитектурный шаблон, разделяющий приложение на три компонента:
▪️ Model (Модель) — содержит бизнес-логику
▪️ View (Представление) — отображает данные пользователю, получая их от модели
▪️ Controller (Контроллер) — обрабатывает входные данные (обычно от пользователя), вызывает нужные методы модели и обновляет представление
Этот подход упрощает сопровождение кода, позволяет разделить ответственность между слоями и облегчает тестирование.
🐸 Библиотека собеса по Java
❓ Какие есть методы в классе Object?
Класс Object — базовый для всех классов в Java. Он определяет поведение, доступное каждому объекту. Основные методы:
▪️ equals(Object obj) — сравнение объектов на логическое равенство
▪️ hashCode() — возвращает хеш-код объекта
▪️ toString() — строковое представление объекта
▪️ getClass() — возвращает объект Class, представляющий тип в рантайме
▪️ clone() — создает копию объекта (если поддерживает Cloneable)
▪️ finalize() — вызывается перед сборкой мусора (устарел и не рекомендуется)
▪️ wait(), notify(), notifyAll() — методы для межпоточной синхронизации
🐸 Библиотека собеса по Java
❓ Для чего нужен Garbage Collector?
Garbage Collector автоматически освобождает память, удаляя объекты, на которые больше нет ссылок. Это помогает избежать утечек памяти и ручного управления памятью.
Основные функции GC:
— Освобождение памяти.
— Предотвращение утечек памяти.
— Оптимизация работы приложения.
🐸 Библиотека собеса по Java
