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

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

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

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

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

Технический долг — не всегда плохо, он бывает осознанным инструментом для достижения быстрых результатов, но без контроля и своевременного «погашения» становится серьёзной проблемой для команды и бизнеса.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
June 3
Что такое GRASP?

GRASP (General Responsibility Assignment Software Patterns) — это набор принципов проектирования, помогающих правильно распределять обязанности между классами и объектами в ООП. Он включает 9 паттернов, среди которых:

▪️ Information Expert — ответственность у того, кто владеет нужными данными.
▪️ Creator — класс создает объекты, если тесно связан с ними.
▪️ Controller — обработка пользовательских действий через промежуточный объект.
▪️ Low Coupling & High Cohesion — минимальная связность, высокая связанность внутренней логики.
▪️ Polymorphism — выбор поведения через переопределение.
▪️ Protected Variations — защита от изменений через абстракции.

GRASP не про архитектуру как таковую, а про принципы принятия решений при проектировании классов. Он дополняет SOLID и помогает писать более поддерживаемый код.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
June 4
June 5
Какие бывают гарантии доставки сообщений в системах обмена сообщениями?

Существуют следующие гарантии доставки:

▪️ At most once — сообщение доставляется не более одного раза. Потеря сообщений возможна, но их дублирование не происходит.

▪️ At least once — сообщение доставляется как минимум один раз. Возможны дубли, которые необходимо обрабатывать на уровне получателя.

▪️ Exactly once — сообщение доставляется точно один раз. Это самая строгая гарантия, требующая сложных механизмов для предотвращения как потери, так и дублирования сообщений.

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

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

Какие темы в этом месяце использовать для постов чаще:

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

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

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

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

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
June 7
June 8
Параметры передаются по ссылке или по значению?

В Java параметры всегда передаются по значению. Но важно уточнить, что:

▪️ Для примитивов — передаётся копия значения.
▪️ Для объектов — передаётся копия ссылки на объект, но не сама ссылка.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
June 8
Что такое транзакция? (Не обязательно с привязкой к базе данных)

Транзакция — это последовательность действий, которые выполняются как единое целое. В более широком смысле термин «транзакция» используется для описания любой операции или набора операций, которые должны быть выполнены полностью, без прерываний, и если что-то идет не так, изменения отменяются, чтобы система осталась в консистентном состоянии.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
June 9
June 10
Что такое JDBC?

JDBC (Java Database Connectivity) — это API для взаимодействия с реляционными базами данных. Позволяет выполнять SQL-запросы, управлять соединением, извлекать и изменять данные.

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

🔹 DriverManager — управляет драйверами и соединениями.
🔹 Connection — устанавливает соединение с БД.
🔹 Statement / PreparedStatement — выполняют SQL-запросы.
🔹 ResultSet — содержит результаты выборки.

JDBC — низкоуровневый API, поверх которого строятся ORM-фреймворки вроде Hibernate.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
June 10
Что такое Reflection?

Reflection — это механизм, позволяющий исследовать и модифицировать поведение классов, методов, полей и конструкторов во время выполнения. Используется через API из пакета java.lang.reflect.

Позволяет:

Узнавать структуру классов во время выполнения (Class<?>, Method, Field, Constructor);
Вызывать методы, читать/записывать поля, даже если они private;
Создавать экземпляры классов без new.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
June 11
Что такое autoboxing?

Autoboxing — это автоматическое преобразование примитивных типов в соответствующие им классы-обёртки. Например, преобразование int в Integer, double в Double и так далее. Это упрощает работу с коллекциями, поскольку они могут хранить только объекты, а не примитивы. Autoboxing происходит автоматически, когда примитив передаётся в место, где требуется объект.

Примечание: Также существует обратный процесс — unboxing, когда объект обёртки автоматически преобразуется в примитивный тип.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
June 12
Что такое JSON?

JSON (JavaScript Object Notation) — это текстовый формат, используемый для хранения и передачи данных. Он был разработан для использования в JavaScript, но благодаря своей простоте и универсальности стал стандартом во многих других языках программирования. JSON представляет данные в виде пар "ключ-значение", что делает его удобным для хранения структурированной информации.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
June 13
😱 Завтра цена на курс «AI-агенты для DS» вырастет

Пока вы думаете — другие уже покупают. Что вы теряете, откладывая решение? Как минимум — 10 000 рублей, именно столько вы переплатите завтра. Как максимум — шанс войти в топ-1% дата-сайентистов, которые умеют строить AI-агенты.

🎓 Чему вы научитесь на курсе:
— адаптировать LLM под разные предметные области и данные
— собирать свою RAG-систему: от ретривера и реранкера до генератора и оценки качества
— строить AI-агентов с нуля — на основе сценариев, функций и взаимодействия с внешней средой

Решение за вами.

👉 Купить курс по старой цене
June 14
💬 Обратная связь

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

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

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
June 14
Что такое String Pool?

String Pool — это специальная область памяти, предназначенная для хранения уникальных строковых литералов. Когда строка создается в программе, JVM сначала проверяет, существует ли уже такая строка в String Pool. Если существует, то возвращается ссылка на неё, иначе создается новый объект в пуле. Это позволяет экономить память, так как одинаковые строки используют один и тот же объект в памяти, а не создаются заново при каждом использовании.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
June 15
Что такое phantom reads в контексте работы с БД?

Ответ: Phantom reads — это явление, при котором транзакция читает данные, которые были добавлены или удалены другими транзакциями после начала выполнения её запроса.

В отличие от других аномалий, таких как dirty reads или non-repeatable reads, phantom reads возникают, когда результаты запроса изменяются в процессе его выполнения, например, при добавлении новых строк в таблицу, соответствующих условиям выборки.

Для предотвращения phantom reads используется уровень изоляции Serializable.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
June 16
Что такое функциональный интерфейс?

Функциональный интерфейс — это интерфейс с единственным абстрактным методом. Он нужен для определения целевого типа для лямбда-выражений и ссылок на методы. В Java для обозначения используется аннотация @FunctionalInterface, но она необязательна — это лишь гарантия на этапе компиляции.

Примеры: Runnable, Callable, Comparator, Function<T,R>.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
June 17