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

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

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

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
🎄 Как работает String.intern()

Метод String.intern() возвращает строку из пула строк (String Pool), если такая строка уже существует, либо добавляет строку в пул, если её там ещё нет. Это может быть полезно для оптимизации памяти, особенно при работе с большим количеством дублирующихся строк.

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

String Pool — это специальная область памяти в JVM, где хранятся уникальные строковые литералы. Когда мы вызываем intern(), JVM ищет строку в пуле:

Если строка найдена, возвращается ссылка на неё.
Если строка не найдена, она добавляется в пул, и возвращается новая ссылка.

🧨 Опасности использования:


— Перегрузка пула строк:
Если бездумно вызывать intern() на огромном количестве уникальных строк, можно исчерпать доступную память.

— Скрытые проблемы многопоточности:
Если несколько потоков одновременно вызывают intern() на строке, это может привести к задержкам или даже к дедлокам в JVM.
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🎄 Чем отличается абстрактный класс от интерфейса?

Абстрактные классы и интерфейсы используются для обеспечения полиморфизма, но у них разные сценарии применения:

- Наследование: Абстрактный класс поддерживает единичное наследование, интерфейс — множественное.
- Реализация: Абстрактный класс может содержать поля и методы с реализацией. В то время как интерфейс (до Java 8) не мог иметь методы, после Java 8 в интерфейсах появились default методы. Поля в интерфейсах могут быть только public static final.
- Когда выбирать: Абстрактный класс — для объектов с общим поведением, интерфейсы — для описания возможностей или контрактов.


Абстрактные классы — это про кто я такой, интерфейсы — про что я могу делать.
Please open Telegram to view this post
VIEW IN TELEGRAM
🎄 Что такое JDBC?

JDBC (Java Database Connectivity) — это стандартный API для взаимодействия с реляционными базами данных. Он предоставляет набор интерфейсов и классов для выполнения следующих задач:

1️⃣ Подключение к базе данных с помощью драйверов, которые обеспечивают взаимодействие с конкретной СУБД.
2️⃣ Выполнение SQL-запросов, таких как SELECT, INSERT, UPDATE, DELETE.
3️⃣ Получение и обработка результатов, включая чтение данных из ResultSet.
4️⃣ Обработка транзакций, включая их коммит или откат.
5️⃣ Управление ресурсами, например, закрытие соединений, чтобы предотвратить утечки памяти.
Please open Telegram to view this post
VIEW IN TELEGRAM
ℹ️ Что такое Dependency Injection?

Dependency Injection (внедрение зависимостей) — это один из основных паттернов проектирования в программировании, который позволяет объектам получать свои зависимости извне, вместо того чтобы создавать их внутри себя.

DI способствует:

— Слабой связанности между компонентами.
— Легкости тестирования за счет использования mock-объектов.
— Повторному использованию кода.

Основные способы внедрения зависимостей:

🔹 Constructor Injection
Зависимости передаются через конструктор.
public class Service {
private final Repository repository;

public Service(Repository repository) {
this.repository = repository;
}
}


🔹Setter Injection
Зависимости передаются через сеттеры.
public class Service {
private Repository repository;

public void setRepository(Repository repository) {
this.repository = repository;
}
}


🔹 Field Injection
Зависимости внедряются напрямую в поля класса (обычно с помощью фреймворков, например Spring).
@Component
public class Service {
@Autowired
private Repository repository;
}
Please open Telegram to view this post
VIEW IN TELEGRAM
Можно ли переопределить метод toString() для Enum?

Да, можно переопределить так же, как и в любом другом классе. По умолчанию toString() для Enum возвращает имя перечисления (то, что задано при объявлении). Однако, если вам нужно вернуть другое значение, вы можете переопределить этот метод.
Please open Telegram to view this post
VIEW IN TELEGRAM
В чем разница между BeanFactory и ApplicationContext в Spring?

BeanFactory и ApplicationContext — это контейнеры Spring для управления бинами, но их возможности различаются:

🔹 Основная разница:

BeanFactory предоставляет базовую функциональность для управления бинами (инициализация, внедрение зависимостей, жизненный цикл).
ApplicationContext расширяет BeanFactory, добавляя больше возможностей, таких как обработка событий, интеграция с AOP, и интернационализация.

🔹 Ленивая загрузка бинов:


BeanFactory загружает бины лениво — только при их запросе.
ApplicationContext загружает все бины сразу при старте приложения (если они не настроены как ленивые).

🔹 Дополнительные возможности ApplicationContext:

Обработка событий (ApplicationEvent и ApplicationListener).
Поддержка аннотаций, таких как @PostConstruct и @PreDestroy.
Упрощенная интеграция с Environment для работы с настройками приложения.

🔹 Использование:

BeanFactory обычно используется для легковесных приложений или если нужна только базовая функциональность.
ApplicationContext — выбор для большинства реальных приложений благодаря богатому набору функций.
Please open Telegram to view this post
VIEW IN TELEGRAM
🎄 Начни 2025-й с апгрейдом навыков,
которые откроют двери в мир IT!

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

🔗 Собери свой план и начни путь в IT

Почему это выгодно?

📚 Несколько программ по цене одной — максимальная эффективность: учишься сразу тому, что действительно нужно.

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

💸 Знания, которые окупятся — навыки, востребованные в любой точке мира.
Какие навыки ты можешь прокачать?

💡 Математика для Data Science + Алгоритмы и структуры данных
— Подготовка к собеседованиям в FAANG и поступлению в ШАД. Решай сложные задачи, работай с данными и моделями на профессиональном уровне.

💡 Алгоритмы и структуры данных + ML
— Улучшай своё алгоритмическое мышление и изучай базовые методы машинного обучения, чтобы создавать интеллектуальные приложения.

💡 Frontend Basic + Базовые модели ML
— Построй свою первую веб-страницу и погрузись в мир ML: от нейросетей до ML-бустинга.

💡 Архитектуры и шаблоны проектирования + Математика для Data Science
— Развивай аналитическое мышление и учись проектировать устойчивые системы.

💡 Алгоритмы и структуры данных + Frontend Basic
— Получи полный набор навыков: от оптимизации алгоритмов до создания современных веб-приложений.

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

🔗 Составь свой IT-маршрут сейчас или выбери курс по новогодней скидке
Что такое сигнатура метода?

Сигнатура метода — это его уникальная идентификация в пределах класса. Она включает:

▪️ Имя метода
▪️ Типы и порядок параметров (но не их названия)

Важно: возвращаемый тип и модификаторы доступа не входят в сигнатуру.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое MVC?

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

1️⃣ Model (Модель):

- Отвечает за бизнес-логику и данные.
- Содержит состояние приложения и методы для его обработки.
- Не знает о представлении (View) и контроллере (Controller).

2️⃣ View (Представление):

- Отображает данные пользователю.
- Реализует интерфейс взаимодействия, но не содержит бизнес-логики.
- Получает данные только из модели.

3️⃣ Controller (Контроллер):

- Обрабатывает пользовательские действия и запросы.
- Вызывает методы модели для изменения состояния.
- Обновляет представление на основе изменений в модели.

MVC помогает разделить ответственность, упростить поддержку кода и облегчить тестирование.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое MVP?

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

Ключевые аспекты MVP:

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

— MVP создаётся для тестирования рыночного спроса или реакции пользователей на продукт с минимальными затратами времени и ресурсов.

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

Важно: MVP — это не просто "сырой" продукт, он должен решать основную задачу, при этом быть полезным и функциональным.
Please open Telegram to view this post
VIEW IN TELEGRAM
ℹ️ Что такое DispatcherServlet?

DispatcherServlet — это центральный компонент Spring MVC, который играет роль "фронт-контроллера" (Front Controller).

🔹 Он выполняет следующие функции:


▪️ Обработка входящих запросов:
Получает HTTP-запросы и перенаправляет их к соответствующим обработчикам (контроллерам).

▪️ Делегирование задач:
- Определяет, какой контроллер должен обработать запрос.
- Обращается к компонентам, таким как HandlerMapping и HandlerAdapter, чтобы найти подходящий обработчик.

▪️ Формирование ответа:
После обработки запроса контроллер возвращает ModelAndView, который DispatcherServlet использует для генерации ответа через ViewResolver.

🔹 Пример процесса:


- Клиент отправляет запрос /home.
- DispatcherServlet ищет соответствующий метод контроллера через HandlerMapping.
- Вызывает найденный метод контроллера, передаёт данные.
- Получает ModelAndView с данными и названием представления.
- Генерирует HTML с помощью ViewResolver и отправляет ответ клиенту.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Spring Boot?

Spring Boot — это фреймворк на базе Spring, который упрощает создание приложений на Java. Он предоставляет:

▪️ Автоконфигурацию — автоматическая настройка компонентов приложения на основе зависимостей и классов в проекте.
▪️ Встроенные серверы — возможность запустить приложение как автономный сервис (например, с помощью встроенного Tomcat или Jetty).
▪️ Starter-пакеты — преднастроенные зависимости для ускорения разработки. Например, spring-boot-starter-web для веб-приложений.
▪️ Поддержку production-ready функций — встроенные метрики, логирование, мониторинг через Spring Actuator.

Spring Boot упрощает старт проекта и уменьшает объем конфигурации, позволяя сосредоточиться на логике приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования

🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
В чём разница между @Controller и @RestController в Spring?

🔹 @Controller
Используется для определения классов, которые обрабатывают HTTP-запросы и возвращают представление (например, HTML или JSP). Обычно применяется совместно с ViewResolver для рендеринга страниц.
Методы внутри
@Controller возвращают ViewName (строку), а данные добавляются в модель через объект Model или ModelAndView.

🔹
@RestController
Это сокращение для @Controller + @ResponseBody.
Каждый метод автоматически сериализует возвращаемые данные в JSON или XML и отправляет их в ответе. Используется для создания REST API.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое GraphQL?

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

🔵 Ключевые особенности GraphQL:

Клиент сам определяет структуру данных в запросе и получает именно то, что запрашивает.
Все запросы обрабатываются через один эндпоинт, что упрощает архитектуру API.
В GraphQL используется строгая типизация данных с помощью схемы, что облегчает разработку и валидацию.
Позволяет избежать избыточной передачи данных по сравнению с REST, что снижает нагрузку на сеть.
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Что такое Реактивное программирование?

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

Ключевые принципы:

Асинхронность: задачи выполняются без блокировки потоков.
Потоки данных: данные представляются в виде потоков, которые можно преобразовывать, фильтровать или комбинировать.
Обратное давление (Backpressure): механизм управления скоростью данных между источником и получателем, чтобы избежать перегрузки.
Декларативность: разработчик описывает, что должно быть сделано с данными, а не как именно.
Please open Telegram to view this post
VIEW IN TELEGRAM