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

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

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

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Что выбрать для проекта — Gradle или Maven?

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

▪️ Gradle — это более современный инструмент, который использует Groovy (или Kotlin) для описания сборки, что дает гораздо больше гибкости и динамики. Gradle легче адаптировать под специфические задачи, его можно расширить для кастомных требований.

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

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥4👏3
🔥 IT Breaking Memes — 30 000 ₽ за самую смешную IT-новость

Библиотека программиста запускает конкурс, который взорвет вашу ленту: создайте самую смешную альтернативную версию реальной IT-новости!

👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.

🏆 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе

Пример:
Реальная новость: «Гугл создала модель для общения с дельфинами».

Смешная альтернатива: «Нейросеть от Гугл обрабатывает видеопоток с камеры в свинарнике. ИИ следит, сколько свинья находится возле кормушки, не отталкивают ли ее собратья. Недокормленных докармливают, а переевшие пропускают следующую кормешку».

📅 Сроки: с 29 апреля по 11 мая включительно

Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8

Ждем ваших новостей!
👍21🔥1
В чем разница между композицией и агрегацией?

Композицией и агрегацией называют разные типы отношений между объектами в ООП.

🔵 Композиция — это более сильная форма связи, когда один объект является частью другого, и его существование не может быть независимым от контейнера. То есть, если объект-контейнер уничтожен, все его компоненты тоже уничтожаются. Пример: класс Дом и класс Комната. Комната не может существовать без дома, и если дом уничтожен, комнаты исчезнут.

🔵 Агрегация — это более слабая форма связи, когда один объект использует другой, но оба могут существовать независимо. То есть, если контейнер уничтожен, его компоненты могут продолжать существовать. Пример: класс Университет и класс Студент. Студент может быть связан с университетом, но его существование не зависит от того, существует ли университет.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3👏1
Почему микросервис виснет?

Q: В микросервисе на Spring Boot с REST API начали замечать зависания и таймауты при обращении к стороннему API. Подключение через RestTemplate. Как можно диагностировать и устранить проблему?

A: Проблема, скорее всего, в отсутствии или неправильной настройке таймаутов у RestTemplate. По умолчанию они не выставлены, и поток может висеть бесконечно, дожидаясь ответа от внешнего сервиса.

Что делать:

Проверить и настроить таймауты (.setConnectTimeout(Duration.ofSeconds(Х)) и .setReadTimeout(Duration.ofSeconds(Х)) )
Добавить Circuit Breaker (например, через Resilience4j) — чтобы сервис не падал, если внешнее API умирает.
Логировать время ответа, чтобы видеть деградацию раньше.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍151🔥1😢1
Что такое антипаттерн? Какие антипаттерны вы знаете?

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

На практике встречаются такие антипаттерны:

▪️ God Object / God Class – класс, берущий на себя слишком много ответственности, нарушая принцип единственной ответственности (SRP).
▪️ Spaghetti Code – код без чёткой структуры и связей, сложно читаемый и сопровождаемый.
▪️ Golden Hammer – использование одного известного подхода (или технологии) для всех задач, независимо от уместности.
▪️ Lava Flow – фрагменты устаревшего кода, которые остались в системе без ясного понимания их назначения, но продолжают использоваться.
▪️ Copy-Paste Programming – дублирование кода вместо выделения повторяющейся логики.
▪️ Premature Optimization – оптимизация до выявления реальных узких мест, часто усложняющая систему без ощутимой пользы.
▪️ Magic Numbers / Strings – использование "жёстко забитых" значений вместо констант с понятными именами.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍131🔥1
В чём смысл CAP-теоремы?

CAP-теорема утверждает, что распределённая система не может одновременно гарантировать все три свойства:

▪️ Consistency (согласованность) — все узлы видят одинаковые данные в одно и то же время
▪️ Availability (доступность) — каждый запрос получает ответ, даже если часть системы вышла из строя
▪️ Partition Tolerance (устойчивость к разделению) — система продолжает работать, несмотря на сетевые сбои, нарушающие связь между узлами.

Согласно теореме, в условиях сетового разделения, система должна выбирать между доступностью и согласованностью.

Пример:

▪️ CP-система жертвует доступностью ради согласованности.
▪️ AP-система жертвует согласованностью ради доступности.

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

В текущем формате в ответах на вопросы под спойлер прячется только часть информации — чтобы сохранялся контекст. Насколько это удобно, или лучше скрывать под спойлер весь ответ?

🔥 — Удобно, из контекста можно понять, какие части спрятаны
🌚 — Неудобно, и так всё понятно, лучше прятать всё
😁 — Есть предложения по улучшению (в комменты)

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥37🌚4🤔2😁1
Что такое ACID?

ACID — это набор принципов, которые обеспечивают надежность и целостность базы данных при обработке транзакций:

▪️ Atomicity (Атомарность) — транзакция выполняется полностью или не выполняется вовсе. Если часть транзакции не может быть выполнена, все изменения откатываются, как если бы транзакция не была запущена.

▪️ Consistency (Согласованность) — транзакция переводит базу данных из одного согласованного состояния в другое. Все правила целостности данных должны соблюдаться.

▪️ Isolation (Изолированность) — изменения, сделанные одной транзакцией, недоступны другим транзакциям до тех пор, пока текущая транзакция не завершится. Это предотвращает конфликты при параллельной работе с базой данных.

▪️ Durability (Долговечность) — после завершения транзакции все изменения фиксируются и сохраняются в базе данных, даже если система выйдет из строя.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥5👏1
🔥 Конкурс: 30 000 ₽ за самую смешную IT-новость

Напоминаем о конкурсе «Библиотеки программиста»: напишите самую смешную версию реальной новости про технологии.

👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.

🎁 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе

🏆 Как будем оценивать:
Мы выложим новости всех участников в одном из наших телеграм-каналов. Те новости, которые наберут больше всего охвата, войдут в шорт-лист. Из шорт-листа подписчики и жюри выберут победителя.

📅 Сроки: прием новостей до 11 мая включительно

Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8

Осталась неделя — ждем ваших новостей!
👍3👏1😁1
Что значит ключевое слово var в Java?

Ключевое слово var (начиная с Java 10) позволяет компилятору самостоятельно выводить тип переменной на основе инициализатора. Это синтаксический сахар, упрощающий запись, но тип переменной по-прежнему строго статичен.

Использовать var стоит там, где тип очевиден, чтобы не терять читаемость.

⚠️ Ограничения:

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

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8👾21🔥1
Что такое сервлет?

Сервлет — это Java-класс, который обрабатывает HTTP-запросы и формирует HTTP-ответы в веб-приложениях. Он работает на стороне сервера в контейнере сервлетов (например, Tomcat), реализуя интерфейс javax.servlet.Servlet (чаще — через абстрактный класс HttpServlet).

Основная задача сервлета — выступать в роли контроллера в архитектуре MVC: принимать запросы от клиента, обрабатывать данные (либо делегировать бизнес-логике), и передавать результат обратно клиенту (обычно через HTML или JSON).

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

@RestController — это сокращение для @Controller + @ResponseBody.
Она используется, когда контроллер возвращает данные (JSON/XML), а не представления (JSP/HTML).

Кратко:

@Controller используется для возврата HTML через шаблонизаторы (например, Thymeleaf).
@RestController — для API, где ответ — это тело (body) с данными, а не страница.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥5👏1
Назовите инструменты для версионирования СУБД.

Среди популярных инструментов для версионирования базы данных чаще всего используются:

▪️ Flyway — простой в настройке инструмент, основанный на SQL- или Java-скриптах, подходит для большинства проектов.

▪️ Liquibase — более гибкий, поддерживает формат XML, YAML, JSON и SQL, имеет возможность откатов, работы с changelog'ами и генерацией диффов.

▪️ Liquibase + Hibernate — можно использовать вместе для генерации changelog'ов из JPA-сущностей.

▪️ Sqitch — мощный, но менее популярный инструмент, ориентирован на работу через VCS и требует ручного управления зависимостями.

💬 Что используете на проекте?

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍911🔥1
Что такое «аутентификация» и «авторизация»?

Аутентификация — это процесс проверки личности пользователя (кто он есть). Обычно реализуется через логин и пароль, токены или биометрию. Аутентификация отвечает на вопрос "Кто ты?"

Авторизация — это процесс проверки, имеет ли пользователь доступ к определённым ресурсам или операциям (что он может делать). Авторизация — "Что тебе разрешено?"

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

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

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

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍75🔥32👾28😁4
В чем плюсы Spring Boot относительно чистого Spring?

— Spring Boot предлагает механизм автоматической настройки, который автоматически подбирает параметры конфигурации для вашего приложения в зависимости от добавленных зависимостей, снижая количество необходимого для настройки кода.

— В Spring Boot не нужно писать boilerplate-код для настройки приложения.

— Spring Boot поставляется с встраиваемыми серверами, такими как Tomcat, Jetty или Undertow, что позволяет запускать приложение как standalone Java-программу без необходимости развертывать его на внешнем сервере.

— Spring Boot облегчает настройку тестов, предоставляя встроенные механизмы для тестирования различных аспектов приложения.

— Spring Boot предлагает стандартную структуру каталогов и конфигурационных файлов, что ускоряет запуск и упрощает поддержку проекта.

— Инструменты, такие как Spring Boot CLI и Maven/Gradle плагины, позволяют легко собирать, тестировать и деплоить приложения.

— Spring Boot активно развивается, имеет обширную документацию и поддерживает множество интеграций с другими технологиями.

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

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

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥3👏2
Почему Java считается платформонезависимым языком?

Java достигает платформонезависимости благодаря архитектуре "Write Once, Run Anywhere" (WORA). Исходный код компилируется в байт-код, который выполняется на Java Virtual Machine (JVM). JVM адаптирует байт-код под конкретную операционную систему, обеспечивая совместимость без необходимости перекомпиляции.

🐸 Библиотека собеса по Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3👏1
🚨 Смешные новости про IT теперь в одном канале

Мы запустили @hahacker_news — наш новый юмористический IT-канал.

Туда будем постить лучшие шутки до 19го мая, которые вы присылали на конкурс.

👉 @hahacker_news — голосование уже идёт, переходите, читайте, угарайте и оставляйте реакции
🥱5👍1😁1