Java Backend | YeaHub
933 subscribers
238 photos
28 videos
3 files
415 links
Теория, подготовка к интервью и курсы для Java разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#Собес #java
🤔 Какие типы данных в Java? Чем отличается объект от простых типов данных?

💬 Кратко:
В Java есть 8 примитивных типов данных (byte, short, int, long, float, double, char, boolean ), которые хранят значения в стеке. Объекты же создаются на основе классов, хранятся в куче и обладают методами. Примитивные типы проще, быстрее и используют меньше памяти, в то время как объекты более функциональны, но требуют больше ресурсов.

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#Собес #java
🤔 Назовите все методы класса Object.

💬 Кратко:
Класс object содержитметоды: equals(), hashCode(), toString(), getClass(), clone(), finalize(), wait(), notify() , notifyAll() и методы для синхронизации потоков (wait(long timeout), wait(long timeout, int nanos) ). Эти методы предоставляют базовый функционал, доступный для всех объектов в Java.

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥1
#Собес #java
🤔 Что такое стектрейс? Как его получить?

💬 Кратко:
Стектрейс - это список методов, которые были вызваны до момента возникновения ошибки. Он помогает понять, где произошла ошибка, и выявить проблемные участки кода. Получить его можно из исключений через printStackTrace() ИЛИ getStackTrace() .

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #java
🤔 Что такое OutOfMemoryError?

💬 Кратко:
OutOfMemoryError возникает, когда программа не может выделить достаточно памяти для выполнения операции. Это может произойти из-за утечек памяти, создания слишком большого количества объектов или ограничений JVM.

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #java
🤔 Какие признаки JavaBean?

💬 Кратко:
JavaBean — это класс в Java с определенными стандартами, которые делают его удобным для использования в фреймворках. Признаки: он имеет конструктор без параметров, предоставляет доступ к свойствам через геттеры и сеттеры, а также реализует интерфейс Serializable ДЛЯ ПОддержки сериализации.

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #java
🤔 Что такое bytecode?

💬 Кратко:
Байткод - это промежуточный код, который создается после компиляции Java-программы. Он независим от конкретной платформы и выполняется JVM, которая интерпретирует его в машинный код.

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #java
🤔 Зачем используют JVM?

💬 Кратко:
JVM используется для выполнения Java-программ, обеспечивая платформонезависимость и управление памятью. Она позволяет запускать программы на разных операционных системах без необходимости перекомпиляции.

📌 Полный разбор + примеры использования — на платформе:
👉
Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #java #threading #postgres

🤔 Middle Java Backend Developer в компанию Тбанк

Техническое собеседование. Осень 2024. Вилка: 300-350к. Опыт в резюме: 5 лет. Было код-ревью, обсуждали теорию и оптимизацию БД.

💬 Вопросы:

- Решение проблемы N+1 для связанных сущностей

- Использование DTO вместо сущностей

- Почему внедрение зависимостей через конструктор (@RequiredArgsConstructor) предпочтительнее, чем @Autowired в поле? Какие проблемы решает?

- Как избежать перегрузки внешнего сервиса при синхронных вызовах из высоконагруженной системы?

- Как сделать вызов внешнего сервиса (например, отправку алерта) надёжным при высокой нагрузке?

👉 Все вопросы из этого собеседования (25)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
1
#Собес #oop #java #spring

🤔 Middle Java Backend разработчик в компанию Яндекс (Вертикали)

Техническое собеседование. Лето 2025. Зарплатная вилка: 250-280к. Опыт в резюме: 4.2 года. Проект: Разработка интеграционного слоя (микросервисы на Spring Boot) для системы расчета штрафов и оценки поставщиков для сети гипермаркетов. Был лайвкодинг.

💬 Вопросы:

- Как вы создавали и использовали кастомные запросы в Hibernate?

- Работали ли вы со Spring Profiles? Для чего они используются?

- Как работает Dependency Injection (DI) в Spring? Как вы его использовали?

- Как настроить конфигурацию с использованием аннотаций в ваших Spring-приложениях?

- Как работает аннотация @Transactional в Spring?

👉 Все вопросы из этого собеседования (26)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
👍2🔥21🤣1
#Собес #java #sql #microservices

🤔 Middle Java Backend разработчик в компанию Билайн

Техническое собеседование. Лето 2024. Вилка: 250к+. Проект: обещанный платеж. Опыт в резюме: 3 года.

💬 Вопросы:

- Какие механизмы аутентификации и авторизации применяются в микросервисной архитектуре (например, через Spring Security)?

- Что такое миграции баз данных и какие инструменты применяются для их реализации?

- Какие существуют подходы к обработке исключений в Java? В чём отличие обработки через try/catch от предварительной проверки условий?

- Какие механизмы асинхронного программирования есть в Java (например, CompletableFuture) и как они применяются?

- В чём преимущества и недостатки написания SQL-запросов вручную по сравнению с использованием ORM (например, Hibernate)?

👉 Все вопросы из этого собеседования (21)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
2
Maven vs npm/pnpm: Битва менеджеров зависимостей

Привет, коллеги! 👋

Сегодня на примере моего стека (Java/Spring и NestJS) сравним менеджеры зависимостей.

Maven (Java)

Как работает:
- Файл конфигурации pom.xml
- Скачивание зависимостей в локальный кэш (`~/.m2/repository`)
- Жесткая версионность
- Плагины для сборки, тестирования, деплоя

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.2.0</version>
</dependency>


Особенности:
- Стабильность и предсказуемость
- Единые версии зависимостей для всех разработчиков
- Медленная загрузка зависимостей
- Сложная настройка кастомных сборочных процессов

npm/pnpm (NestJS)

Как работает:
- Файл package.json с семантическим версионированием
- node_modules для хранения зависимостей
- npm — стандартный менеджер
- pnpm — альтернатива с жесткими ссылками

{
"dependencies": {
"@nestjs/common": "^10.0.0",
"@nestjs/core": "^10.0.0"
}
}


Особенности:
- Гибкое версионирование (^, ~, *)
- Быстрая установка (особенно в pnpm)
- Риск конфликта версий
- package-lock.json`/`pnpm-lock.yaml для фиксации версий

#### Сравнение производительности

Скорость установки:
- pnpm — самый быстрый за счет жестких ссылок
- npm — значительно улучшил скорость в последних версиях
- Maven — самый медленный, но стабильный

Надежность:
- Maven — строгая версионность минимизирует риски
- npm/pnpm — lock-файлы решают проблему "у меня работает", но требуют дисциплины

Выводы

Maven выбирают для enterprise-проектов, где важна стабильность. npm/pnpm предпочтительнее для быстрой разработки и CI/CD.

В моем ed-tech проекте использую pnpm за скорость, на работе — Maven за надежность.

А какие инструменты используете вы? Сталкивались с проблемами зависимостей?

#maven #npm #pnpm #java #nestjs #dependencymanagement #ci_cd
1❤‍🔥1🔥1🤝1
#Собес #docker #java #deploy
🤔 Как осуществляется контейнеризация Java-приложений с помощью Docker?

💬 Кратко:

Java-приложение можно контейнеризовать, создав Dockerfile, в котором указывается базовый образ с JDK или JRE, копируется jar-файл и прописывается команда запуска. Это позволяет запускать приложение изолированно, независимо от настроек окружения. Основные шаги — сборка jar-файла, написание Dockerfile и сборка образа с помощью команды docker build.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
1
ArrayList vs LinkedList: что выбрать на практике? 🎯

Привет, коллеги! 👋

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

Первый на очереди — вечный спор: ArrayList vs LinkedList.

Ключевые различия

ArrayList:
- Основан на массиве
- Быстрый доступ по индексу O(1)
- Медленная вставка/удаление в середине O(n)
- Оптимизирован под чтение

LinkedList:
- Двусвязный список
- Медленный доступ по индексу O(n)
- Быстрая вставка/удаление в середине O(1)
- Оптимизирован под модификации

Практический пример

// ArrayList - быстрое чтение
List<String> arrayList = new ArrayList<>();
arrayList.get(1000); // Мгновенно

// LinkedList - быстрое изменение
List<String> linkedList = new LinkedList<>();
linkedList.add(0, "new element"); // Быстро


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

ArrayList:
- Частое чтение по индексу
- Итерация по элементам
- Предсказуемый размер данных

LinkedList:
- Частые вставки/удаления в начале/середине
- Реализация очередей (Queue/Deque)
- Динамически изменяемые данные

Бенчмарк на реальных операциях

// Вставка в начало
arrayList.add(0, "new"); // O(n) - медленно
linkedList.addFirst("new"); // O(1) - быстро

// Доступ по индексу
arrayList.get(1000); // O(1) - быстро
linkedList.get(1000); // O(n) - медленно


Выводы

В 95% случаев выбирайте ArrayList — он эффективнее по памяти и быстрее для большинства операций.

LinkedList используйте только для специфических сценариев с частыми модификациями в середине списка.

Следующий в серии — HashMap vs ConcurrentHashMap! Ждите скоро

А вы часто используете LinkedList в своих проектах? Делитесь опытом в комментариях! 👇

#java #interview #arraylist #linkedlist #collections
5👍1🔥1
Многопоточность в Java: synchronized, volatile и Lock 🛡️ (Часть 2)

Привет, коллеги! 👋

Вторая часть про многопоточность. Сегодня разбираем механизмы синхронизации.

synchronized методы

class SafeCounter {
private int count = 0;

public synchronized void increment() {
count++; // Теперь безопасно
}

public synchronized int getCount() {
return count;
}
}


synchronized блоки

class Resource {
private final Object lock = new Object();

public void doWork() {
synchronized(lock) {
// критическая секция
}
}
}


volatile переменные

class TaskProcessor {
private volatile boolean running = true;

public void stop() {
running = false; // Видимость между потоками
}

public void process() {
while (running) {
// работа
}
}
}


ReentrantLock

class LockedCounter {
private final ReentrantLock lock = new ReentrantLock();
private int count = 0;

public void increment() {
lock.lock();
try {
count++;
} finally {
lock.unlock();
}
}
}


Сравнение подходов

synchronized:
- Простота использования
- Автоматическое управление
- Встроено в язык

ReentrantLock:
- Гибкость (tryLock, fair lock)
- Явное управление
- Требует аккуратности

В третьей части разберем Concurrent коллекции, пулы потоков и современные подходы!

Какие механизмы синхронизации используете вы? 👇

#java #interview #multithreading #synchronized
1🔥1
#Собес #java #collections #multithreading

🤔 Middle+ Java Backend разработчик в компанию Госуслуги

Техническое собеседование. Лето 2024. Вилка: 300-350к. Опыт в резюме: 4+ года. В конце собеседования были задачи на структуры данных, оптимизацию запросов и работу с БД.

💬 Вопросы:

- Как логировать время выполнения методов в бинах Spring унифицированно?

- Как централизованно обрабатывать исключения в REST-контроллерах?

- Как работает @Transactional и что происходит, если метод без аннотации вызывает метод с аннотацией?

- Как спроектировать доступ к балансам пользователей из разных потоков, чтобы операции были консистентны?

- Какие механизмы синхронизации можно использовать, кроме synchronized и Atomic?

👉 Все вопросы из этого собеседования (17)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
1
Spring Boot: автоконфигурация и REST API (Часть 2)

Привет, коллеги! 👋

Вторая часть про Spring. Сегодня — Spring Boot и создание REST API.

Что такое Spring Boot?

Spring Boot упрощает настройку Spring-приложений:
- Автоконфигурация
- Встроенные серверы (Tomcat, Jetty)
- Starter-зависимости
- Готовые production-фичи

Создание приложения

Структура проекта:
src/main/java/
└── com/example/demo/
├── DemoApplication.java
├── controller/
├── service/
└── repository/


Основной класс:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}


Создание REST контроллера

@RestController
@RequestMapping("/api/users")
public class UserController {

private final UserService userService;

public UserController(UserService userService) {
this.userService = userService;
}

@GetMapping
public List<User> getAllUsers() {
return userService.findAll();
}

@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
return userService.findById(id);
}

@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public User createUser(@RequestBody User user) {
return userService.create(user);
}
}


Spring Boot Starters

<!-- В pom.xml -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>


Конфигурация через application.yml

# application.yml
server:
port: 8081

spring:
datasource:
url: jdbc:postgresql://localhost:5432/mydb
username: user
password: pass

jpa:
hibernate:
ddl-auto: update
show-sql: true


Spring Boot Actuator

# Мониторинг приложения
management:
endpoints:
web:
exposure:
include: health,info,metrics


В третьей части разберем Spring Data JPA, транзакции и тестирование!

Какой ваш любимый Spring Boot starter? 👇

#springboot #restapi #java #spring
2🔥1🤝1