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

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

@java_interview_lib

Вопросы с собеседований по Java и ответы на них.

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

Учиться у нас: clc.to/3wECtA

Для обратной связи: @proglibrary_feeedback_bot
Subscribers
6.42K
Photos
438
Videos
12
Links
733

Showing posts older than #694 · Back to latest

Older Posts 20 shown
Post #693 1.85K
ℹ️ Что такое динамическое связывание?

Динамическое связывание — это процесс, при котором вызов метода определяется во время выполнения программы, а не на этапе компиляции. Это возможно благодаря механизму полиморфизма.
Например, если метод переопределён в классе-наследнике, JVM решает, какую версию метода вызывать (из родительского или дочернего класса), только во время выполнения. Или когда объект создаётся на основе интерфейса, вызов метода также определяется динамически.

📌 Пример:

class Animal {
void sound() { System.out.println("Animal sound"); }
}

class Dog extends Animal {
@Override
void sound() { System.out.println("Bark"); }
}

Animal animal = new Dog();
animal.sound(); // Вывод: Bark


В этом коде тип переменной animal определён на этапе компиляции (Animal), но метод sound() вызывается из Dog, потому что объект определяется динамически во время выполнения.
  • 👍 10
  • 🔥 3
  • 👏 1
Post #692 1.9K
❓ Что такое маркерный интерфейс?

Маркерный интерфейс — это интерфейс без методов и полей, служащий для передачи дополнительной метаинформации классу. Примеры в Java — Serializable и Cloneable. Они сигнализируют JVM или библиотекам о том, как работать с объектами этих классов. Например, Serializable указывает, что объект может быть сериализован.
  • 👍 7
  • 🔥 4
  • 💯 1
Post #691 2.26K
ℹ️ Что такое method hiding?

Method hiding — это механизм, при котором статический метод суперкласса "скрывается" статическим методом с той же сигнатурой в подклассе. Это не переопределение, а скрытие.

🔹 Как это работает:

- Тип метода определяется на этапе компиляции, основываясь на типе ссылки.
- Если ссылка относится к суперклассу, вызывается метод суперкласса. Если к подклассу — метод подкласса.

🔹 Пример:

class Parent {
static void show() {
System.out.println("Parent static method");
}
}

class Child extends Parent {
static void show() {
System.out.println("Child static method");
}
}

Parent parent = new Child();
parent.show(); // Выведет "Parent static method"


⚠️ Это не работает для нестатических методов — там всегда используется переопределение, а метод определяется во время выполнения (runtime).
  • 👍 11
  • 🔥 4
  • ❤ 2
  • 👏 1
  • 🎉 1
Post #690 2.28K
❓ Какие архитектурные паттерны проектирования есть и кратко опишите?

Layered Pattern — деление системы на слои: представление, бизнес-логика, доступ к данным.
Клиент-Сервер — разделение системы на клиентов, которые запрашивают услуги, и серверов, которые их предоставляют.
Микросервисы — деление системы на независимые сервисы, которые можно разворачивать отдельно.
Event-Driven Architecture (Событийно-ориентированная архитектура) — система реагирует на события и запускает процессы.
MVC, MVP, MVVM — разделение данных, пользовательского интерфейса и логики обработки.
SOA (Сервис-Ориентированная Архитектура) — приложения строятся из повторно используемых сервисов.
P2P — каждый узел системы является и клиентом, и сервером.
Брокер — использование посредника для управления коммуникациями между компонентами.
Гексагональная архитектура — изоляция основной логики от внешних систем через адаптеры.
CQRS — разделение операций на чтение и запись для оптимизации.
Pipe-and-Filter — обработка данных через серию шагов, соединённых трубами.
Cloud-Native — архитектура, оптимизированная для облака с микросервисами и контейнерами.
  • 👍 10
  • ❤ 2
  • 🔥 2
  • ⚡ 1
Post #689 2.1K
❓ Какие преимущества и подводные камни могут возникнуть при использовании @Data из Lombok?

🔹 Преимущества:

- Автоматически генерирует getter/setter, toString, equals, hashCode и constructor.
- Меньше шаблонного кода, больше концентрации на бизнес-логике.

🔹 Подводные камни:

- Потенциальная рекурсия в toString для связанных объектов.
- Автоматическая генерация всех методов может включить ненужные поля, что негативно скажется на производительности или логике.
- Небезопасно для JPA-сущностей: можно включить ленивые поля в equals или hashCode.

Рекомендация: Используйте @Data для DTO или простых классов, а для сущностей JPA применяйте аннотации @Getter, @Setter и выборочные настройки вручную.
  • 👍 12
  • 🔥 3
  • ⚡ 2
  • ❤ 1
Post #688 1.98K
❓ Можно ли все методы в классе пометить как synchronized?

❌ Неверно: Да, пометить весь класс как synchronized

✔️ Правильный ответ: Да, однако весь класс пометить как synchronized нельзя. Ключевое слово synchronized применяется только к методам или блокам кода внутри класса. Если необходимо синхронизировать доступ ко всем методам класса, это придется сделать вручную, добавляя synchronized к каждому методу.
  • 👍 11
  • 🔥 2
  • 🎉 1
Post #687 2.15K
👀 Задачи с собеседований: Числа от 0 до 1000, которые делятся на 3, но не на 5, и сумма цифр которых меньше десяти (jun+)

— Как найти все числа от 0 до 1000, которые одновременно:
Делятся на 3.
Не делятся на 5.
Сумма цифр числа меньше десяти.

💡 Ключевые моменты:

- Чтобы число делилось на X, его нужно проверить на остаток от деления: number % Х == 0.
- Для проверки суммы цифр числа можно пройтись по всем его цифрам и сложить их, затем проверить, что сумма меньше 10.
- Как улучшить решение?

Реализация на картинке 👆🏻
  • 👍 9
  • 🔥 3
  • ⚡ 1
Post #685 1.81K
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
  • 👍 2
  • 🔥 1
Post #684 5.43K
ℹ️ Что такое "Проблема бриллианта" (Diamond Problem)?

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

В Java множественное наследование классов не поддерживается, но проблема все равно может возникнуть при использовании интерфейсов.

interface A {
void method();
}

interface B extends A {
@Override
default void method() {
System.out.println("Method from B");
}
}

interface C extends A {
@Override
default void method() {
System.out.println("Method from C");
}
}

class D implements B, C { }

public class Main {
public static void main(String[] args) {
D d = new D();
d.method(); // Какая версия метода будет вызвана?
}
}


📌 В чем суть проблемы?

Когда класс D реализует оба интерфейса B и C, которые оба предоставляют дефолтные реализации метода method(), возникает неопределенность — какую версию метода должен использовать класс D? При компиляции будет выброшен error: class D inherits unrelated defaults for method() from types B and C.

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

class D implements B, C {
@Override
public void method() {
B.super.method();
// или можно использовать C.super.method(), если хотите вызвать метод из C
}
}
  • 👍 21
  • 🔥 2
  • 🎉 1
  • 🥱 1
Post #683 1.77K
💬 Обратная связь

По возможности вопросы выбираются с приближением к реальным собеседованиям или чему-то применимому в целом. А не вопросы вида "зачем мне это, что это вообще такое, никогда не задумывался об этом и не буду". Как вам кажется, удаётся это или нет?

Поставьте реакцию — каждый отзыв очень важен. Также можете в комментариях поделиться своим мнением, что можно улучшить. Сделаем контент интереснее вместе.

🔥 - Всё супер, админ красавчик
👍🏼 - Хорошо, большинство вопросов интересны/полезны
🤔 - Удовлетворительно, не все вопросы полезны/интересны
😢 - Что-то не нравится, напишу в комментариях, что именно
  • 🔥 38
  • 👍 9
  • 🤔 4
Post #682 1.88K
❓ Что такое optimistic и pessimistic locking?

🔹 Optimistic Locking использует версионный контроль. Каждый объект данных имеет поле версии (@Version в JPA), которое обновляется при изменении. При сохранении проверяется, что версия не изменилась. Если она изменилась (другая транзакция уже обновила объект), операция завершается с ошибкой. Это подход минимально блокирует ресурсы, но требует обработки конфликтов на уровне приложения.

🔹 Pessimistic Locking заключается в блокировке строк для предотвращения их изменения другими транзакциями. Существует три вида блокировок в JPA:

PESSIMISTIC_READ – другие транзакции могут читать, но не изменять данные.
PESSIMISTIC_WRITE – блокировка на запись, другие транзакции не могут читать и изменять данные.
PESSIMISTIC_FORCE_INCREMENT – аналогично WRITE, но увеличивает версию даже без изменений.

❗️ Когда использовать?

- Optimistic Locking подходит для систем с редкими конфликтами.
- Pessimistic Locking лучше использовать в сценариях с высокой конкуренцией или при необходимости строго гарантировать целостность данных.
  • 👍 14
  • 🔥 2
  • ⚡ 1
Post #681 1.49K

Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate

🏢📊 Как сократить расходы на инфраструктуру в 20 раз: опыт внедрения мультитенантной архитектуры

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

Хотите узнать, как правильно её внедрить, избежать типичных ошибок и достичь впечатляющих результатов? Ознакомьтесь с реальным опытом, который вдохновит на изменения. 🍹

🔗 Читать статью
🔗 Зеркало
  • 👍 4
  • 🔥 2
  • ❤‍🔥 1
Post #680 2.02K
❓ Что такое область видимости (scope) бина в Spring?

Область видимости в Spring определяет жизненный цикл и видимость бинов в контейнере IoC. Основные области видимости:

- Singleton (по умолчанию):
Один экземпляр бина создаётся на весь контекст Spring. Используется для общих объектов.

- Prototype:

Каждый запрос к контейнеру создаёт новый экземпляр бина.

- Request:
Бин создаётся для каждого HTTP-запроса (только в веб-приложениях).

- Session:
Один бин создаётся на одну HTTP-сессию.

- Application:
Один бин на весь жизненный цикл ServletContext.

- WebSocket:
Один бин на WebSocket-сессию.

Для указания области видимости используется аннотация @Scope.
  • 👍 10
  • 🔥 6
  • ❤ 1
  • 🎉 1
Post #679 1.96K
🎉 Розыгрыш от Proglib Academy и DigitalRazor!

С 27 ноября по 27 декабря у вас есть шанс не только прокачать свои навыки, но и выиграть ПК при покупке любого курса Академии!

🎁 Призы для участников акции:

– Игровой ПК DigitalRazor ProGaming
– VIP-пакет курса Proglib Academy

💡 Как принять участие?
Купите любой курс Proglib Academy с 27 ноября по 27 декабря и получите шанс выиграть мощный ПК.

Приобретите технику DigitalRazor — участвуйте в розыгрыше VIP курса.

📅 Вместе с DigitalRazor мы создали спецпредложение -50% на курсы до 30 ноября, чтобы вы могли начать обучение на более выгодных условиях.

Выбрать курс
  • 👍 3
  • ❤ 1
  • 🔥 1
Post #678 1.89K
❓ Что такое phantom reads в контексте работы с БД?

Phantom reads (фантомные чтения) — это ситуация, когда одна транзакция повторно выполняет запрос, возвращающий множество строк, и видит новые строки, которые были добавлены другой транзакцией за время выполнения первой. Такие изменения могут влиять на результаты выборки, вызывая несогласованность данных.

📌 Пример:

- Транзакция A выполняет запрос: SELECT * FROM orders WHERE amount > 100;
- В это время транзакция B добавляет новую запись: INSERT INTO orders (id, amount) VALUES (10, 150); и фиксирует изменения (COMMIT).
- Транзакция A повторяет свой запрос: SELECT * FROM orders WHERE amount > 100;
- Теперь в результате запроса появляется новая запись с id = 10, которая не была видна в первой выборке.


Фантомные чтения возможны на уровнях изоляции ниже SERIALIZABLE. Уровень REPEATABLE READ защищает от dirty и non-repeatable reads, но не от фантомных. Только уровень SERIALIZABLE гарантирует полную консистентность, исключая фантомные чтения за счёт блокировки или иного способа предотвращения изменений в диапазонах данных.
  • 👍 8
  • 🔥 4
  • ❤ 2
  • 💯 2
Post #677 1.43K

Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate

💡 Как избежать катастрофы при переходе на PostgreSQL: руководство по спасению базы данных

Переход на PostgreSQL — это не просто замена одного инструмента другим. Неправильный подход может привести к потере данных, снижению производительности и длительным простоям. Особенно это касается хранимых процедур: различия между PL/pgSQL и языками, такими как PL/SQL или T-SQL, могут вызывать ошибки, которые сложно обнаружить заранее.

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

🔗 Читать статью
🔗 Зеркало
  • 👍 5
  • ⚡ 2
  • 🔥 1
Post #675 1.92K
⚡️ Напоминаем: у нас можно (и нужно) купить рекламу

→ Более 60 телеграм-каналов по всем направлениям IT
→ Почти 1,2 миллиона аудитории
→ Собственное медиа и сайт с DAU 25 000 — можем усилить продвижение
→ Классные email-рассылки
→ И, конечно же, крутые контент-менеджеры, которые сделают нативную интеграцию/придумают виральный пост/реализуют любые контентные предпочтения

Для заказа пишите сюда: @proglib_adv
  • 👍 1
Post #674 1.53K

Forwarded from Книги для программистов

🎅 Какой подарок вы бы хотели на НГ? Пишите в комментариях👇

Админ на НГ не отказался бы от вашей активности. Реакции, комментарии, конструктивные предложения будем ждать под ёлкой 🎄
  • 👍 2
  • 🎉 1
Post #673 1.92K
❓ Что такое Spring Bean?

❌ Неверно: Весенняя фасоль

✔️ Правильный ответ: Spring Bean — это объект, управляемый контейнером Spring IoC (Inversion of Control). Бины представляют собой ключевые компоненты приложения, которые создаются, настраиваются и управляются Spring Framework.

🛠 Основные характеристики Spring Bean:

- Управление жизненным циклом:
Контейнер отвечает за создание, инициализацию и уничтожение бина.

- Конфигурация:
Бины можно определять с помощью аннотаций (
@Component, @Service, @Repository, @Bean) или XML-конфигурации.
- Инъекция зависимостей (DI):
Контейнер автоматически внедряет зависимости, требуемые для работы бина.
  • 👍 8
  • 😁 5
  • ❤ 3
  • 🔥 1
Post #671 1.78K
Черные скидки на курсы в Академии!

-40% до конца ноября

🔥 В честь Черной пятницы до 30 ноября запускаем распродажу на все курсы proglib.academy и дарим промокод на сумму 10 000 на технику в магазине DigitalRazor (отправим вам по запросу)

🎁 Анонс новогоднего сюрприза!

🎄 Те, кто успеет приобрести курсы с 27 ноября по 27 декабря, получат шанс выиграть крутой новогодний подарок.
Что это будет, пока держим в секрете – следите за новостями на нашем канале!

Почему стоит выбрать нас?

⚫️ Опытные преподаватели
Вас будут обучать доценты ВМК МГУ по математике, а алгоритмы расскажет разработчик из Яндекса и преподаватель МФТИ и НИУ ВШЭ.

⚫️ Бессрочный доступ ко всем курсам
Проходите обучение в удобном для вас темпе, без давления жестких сроков.

⚫️ Поддержка преподавателей
Не останетесь одни — вам всегда помогут разобраться с трудными темами и ответят на любые вопросы через чат и платформу Coreapp.

👉 Не уверены, подойдет ли вам курс? Начните с бесплатных вводных занятий и познакомьтесь с преподавателями и форматом обучения –

Ждем вас на обучении! 🙌
  • 👍 2
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →