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

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

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

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

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
ℹ️ Что такое 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
Как зарегистрировать класс как Spring Bean?

1. Через аннотации: @Component, @Service, @Repository и др.
2. Использовать @Bean внутри @Configuration класса.
3. Через XML-конфигурацию.
4. Создание в BeanDefinitionRegistry
5. Через интерфейс FactoryBean
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое исключение?

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

▪️ Иерархия:


— Все исключения наследуются от класса Throwable.
— Основные подклассы:
- Error: критические ошибки, связанные с JVM (например, OutOfMemoryError), обработка обычно невозможна.
- Exception: обрабатываемые ошибки (например, IOException, SQLException).

▪️ Типы исключений:

— Checked (проверяемые):
Должны быть либо обработаны с помощью try-catch, либо объявлены в сигнатуре метода через throws. Пример: IOException.
— Unchecked (непроверяемые):
Наследуются от RuntimeException, могут не обрабатываться явно. Пример: NullPointerException.
Please open Telegram to view this post
VIEW IN TELEGRAM
💬 ТОП-8 фраз, которые испортят впечатление о вас на собеседовании

Представьте, вы попали на собеседование мечты. Всё идёт гладко, но пара неудачных фраз могут свести на нет все ваши старания. Например, если вы слишком скромны или, наоборот, перегибаете с самоуверенностью, это может вызвать недоверие. Или фраза, которая должна показать вашу гибкость, внезапно делает акцент на недостатке опыта. Знакомо?

Есть проверенные подходы, которые помогут избежать таких ситуаций, выстроить грамотное общение и оставить положительное впечатление. Готовы узнать больше? 🌟

🔗 Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
Вакансии «Библиотеки программиста» — ждем вас в команде!

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

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾