Java | Вопросы собесов
11.4K subscribers
35 photos
2 videos
1.12K links
Download Telegram
🤔 Что такое DTD?

DTD (Document Type Definition) — это более старая форма определения структуры XML-документа. Она описывает допустимые элементы и их вложенность, но поддерживает меньше возможностей валидации, чем XSD.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6💊3🤔2👍1
🤔 Какие весовые рамки у integer?

В Java тип int занимает 4 байта (32 бита) и имеет диапазон:
-2^{31} \text{ до } 2^{31} - 1

🚩Точный диапазон `int`

🟠Минимальное значение
Integer.MIN_VALUE = -2,147,483,648
🟠Максимальное значение
Integer.MAX_VALUE = 2,147,483,647

public class Main {
public static void main(String[] args) {
System.out.println("Минимальный int: " + Integer.MIN_VALUE);
System.out.println("Максимальный int: " + Integer.MAX_VALUE);
}
}


Вывод:
Минимальный int: -2147483648  
Максимальный int: 2147483647


🚩Почему именно такой диапазон?

4 байта (32 бита) означают, что у нас 2³² возможных значений.
Поскольку int знаковый (поддерживает отрицательные и положительные числа), половина значений отводится подотрицательные числа.
Один бит используется для знака (0 – положительное число, 1 – отрицательное).
\text{Диапазон} = - (2^{31}) \text{ до } (2^{31} - 1)

🚩Что будет, если выйти за пределы `int`?
Если сложить два максимальных значения int, произойдёт переполнение (overflow)
int a = Integer.MAX_VALUE;
int b = 1;
int c = a + b;
System.out.println(c); // Выведет -2147483648 (переполнение!)


🟠Как работать с числами больше `int`?
Использовать `long` (8 байт, диапазон от -2^63 до 2^63 - 1):
long bigNumber = 2_147_483_648L;  // Обязательно добавлять "L" в конце


Использовать BigInteger (неограниченный размер):
BigInteger bigNum = new BigInteger("999999999999999999999999");


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🤔 Как можно оптимизировать высоконагруженный веб-сервис?

- Использовать кеширование (в памяти или внешнее);
- Добавить балансировку нагрузки;
- Применить асинхронную обработку;
- Оптимизировать запросы к БД (индексы, джоины, лимиты);
- Использовать пулы потоков и соединений;
- Минимизировать зависимости и лишние операции.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
🤔 Слышал ли что то про цикл ForEach?

Цикл forEach – это удобный способ перебора элементов коллекций в Java.

🚩Что такое `forEach`?

Это специальный цикл, который упрощает перебор элементов коллекций и массивов. Он пришёл на замену классическому for и while, делая код чище.
List<String> names = List.of("Alice", "Bob", "Charlie");

for (int i = 0; i < names.size(); i++) {
System.out.println(names.get(i));
}


Современный forEach
for (String name : names) {
System.out.println(name);
}


🚩`forEach` как метод (Java 8+)

С выходом Java 8 в интерфейсе Iterable появился метод forEach(), который принимает лямбда-выражение.
List<String> names = List.of("Alice", "Bob", "Charlie");

names.forEach(name -> System.out.println(name));


Или с ссылкой на метод (::)
names.forEach(System.out::println);


🚩Как работает `forEach()` с Map?

Метод forEach() можно применять и к Map, передавая BiConsumer<K, V>.
Map<Integer, String> users = Map.of(1, "Alice", 2, "Bob");

users.forEach((id, name) -> System.out.println(id + " -> " + name));


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
🤔 В чём разница между классами java.util.Collection и java.util.Collections?

- Collection — интерфейс, базовый для всех коллекций (List, Set).
- Collections — утилитарный класс, предоставляет методы (sort, shuffle, unmodifiable) для работы с коллекциями.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как работать на Spring?

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

🚩Основные шаги для работы на Spring

1⃣Настроить проект
2⃣Создать контроллеры (обрабатывают HTTP-запросы).
3⃣Добавить сервисы (логика приложения).
4⃣Работать с базой данных (Spring Data JPA, Hibernate).
5⃣Запустить приложение и тестировать.

🚩Настройка проекта (Spring Boot)

🟠Создание проекта через Spring Initializr
Самый быстрый способ – использовать [Spring Initializr](https://start.spring.io/).

Заходим на [start.spring.io](https://start.spring.io/)
Выбираем:
Maven / Gradle
Java 17+
Spring Boot 3+
Зависимости: Spring Web, Spring Data JPA, PostgreSQL/MySQL (если нужна БД)
Скачиваем и открываем в IntelliJ IDEA или VS Code.
<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- Spring Boot JPA + Hibernate -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<!-- Драйвер для PostgreSQL -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>

<!-- Lombok (автоматически генерирует геттеры/сеттеры) -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>


🚩Создание контроллера (REST API)

Контроллер обрабатывает HTTP-запросы (GET, POST, PUT, DELETE).
@RestController
@RequestMapping("/hello")
public class HelloController {

@GetMapping
public String sayHello() {
return "Привет, Spring!";
}
}


Запрос в браузере
https://localhost:8080/hello


Ответ
Привет, Spring!


🚩Добавление бизнес-логики (Service Layer)
Сервисы обрабатывают данные и реализуют бизнес-логику.
@Service
public class UserService {

public String getUserGreeting(String name) {
return "Привет, " + name + "!";
}
}


Использование сервиса в контроллере
@RestController
@RequestMapping("/user")
public class UserController {

private final UserService userService;

@Autowired // Внедрение зависимости
public UserController(UserService userService) {
this.userService = userService;
}

@GetMapping("/{name}")
public String getUserGreeting(@PathVariable String name) {
return userService.getUserGreeting(name);
}
}


Запрос в браузере:
https://localhost:8080/user/Иван


Ответ
Привет, Иван!


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что такое Deque?

Это двусторонняя очередь, которая позволяет добавлять и удалять элементы с обоих концов. Она может работать как стек (LIFO) и как очередь (FIFO). Примеры реализаций в Java: ArrayDeque, LinkedList.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4💊1
Please open Telegram to view this post
VIEW IN TELEGRAM