- SELECT — выборка.
- INSERT — вставка.
- UPDATE — обновление.
- DELETE — удаление.
- DDL (Data Definition Language) — создание, изменение структуры (CREATE, ALTER, DROP).
- DML (Data Manipulation Language) — работа с данными (INSERT, UPDATE, DELETE).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊7🔥3🤔2
В
TreeMap поиск элемента по ключу выполняется за O(log n). TreeMap основан на красно-чёрном дереве (Red-Black Tree). Красно-чёрное дерево – это самобалансирующееся бинарное дерево.
В худшем случае, глубина дерева ≈
log₂(n), поэтому: Поиск (
get(key)) выполняется за O(log n). Вставка (
put(key, value)) тоже O(log n), так как требует балансировки. import java.util.TreeMap;
public class TreeMapExample {
public static void main(String[] args) {
TreeMap<Integer, String> treeMap = new TreeMap<>();
treeMap.put(10, "Ten");
treeMap.put(20, "Twenty");
treeMap.put(30, "Thirty");
System.out.println(treeMap.get(20)); // Поиск за O(log n)
}
}
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
- spring-boot-starter-web — для создания REST API.
- spring-boot-starter-data-jpa — для работы с БД через JPA.
- spring-boot-starter-security — для настройки безопасности.
- spring-boot-starter-test — всё для тестов.
- spring-boot-starter-thymeleaf — шаблонизация UI.
- spring-boot-starter-actuator — метрики и мониторинг.
Стартеры — это наборы зависимостей, которые подключаются одной строкой и конфигурируются по умолчанию.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍6
В контексте Java, Heap (куча) и Stack (стек) являются областями памяти, используемыми JVM для управления памятью, необходимой для выполнения программы. Каждая из этих областей имеет свои характеристики и используется для разных целей.
Heap — это область памяти, выделенная для динамического распределения памяти объектов и массивов. Все объекты, созданные с использованием оператора
new, размещаются в куче.Куча разделена на поколения: молодое поколение (Young Generation) и старое поколение (Old Generation).
Молодое поколение включает в себя области Eden Space и Survivor Spaces (S0 и S1).
Старое поколение хранит долгоживущие объекты.
Куча управляется сборщиком мусора (Garbage Collector), который автоматически освобождает память, занятую объектами, которые больше не используются.
Куча используется для хранения объектов, массивов и классов, информация о которых сохраняется на протяжении всего времени их жизни.
public class Example {
public static void main(String[] args) {
Example obj = new Example(); // obj создается в куче
}
}Стек — это область памяти, используемая для управления вызовами методов и хранения локальных переменных, параметров методов и информации о возвратах.
Каждый поток имеет свой собственный стек.
Стек хранит кадры (frames) для каждого вызова метода. Каждый кадр содержит локальные переменные метода и информацию о вызовах.
Память в стеке автоматически управляется при вызове методов и выходе из них. Когда метод вызывается, создается новый кадр в стеке; когда метод завершает выполнение, его кадр удаляется из стека.
Стек используется для хранения примитивных типов данных и ссылок на объекты, которые находятся в куче.
Локальные переменные методов и параметры методов хранятся в стеке.
public class Example {
public static void main(String[] args) {
int localVar = 10; // localVar хранится в стеке
Example obj = new Example(); // Ссылка на obj хранится в стеке, а сам объект — в куче
obj.method();
}
public void method() {
int anotherVar = 20; // anotherVar хранится в стеке
}
}Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Да, монитор — это механизм синхронизации. Управлять им можно через блокировку доступа к объекту. Также есть более гибкие инструменты управления, такие как объекты блокировок и условные переменные.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2🤔1
Ограничения (constraints) – это правила, которые ограничивают возможные значения данных или ограничивают поведение системы.
В SQL ограничения гарантируют корректность данных в таблицах.
CREATE TABLE Users (
id INT PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
age INT CHECK (age > 0),
country VARCHAR(50) DEFAULT 'Unknown'
);
Ограничения в Generics позволяют задавать допустимые типы.
class Box<T> {
T value;
public Box(T value) { this.value = value; }
}
Box<String> strBox = new Box<>("Hello");
Box<Integer> intBox = new Box<>(10);class NumberBox<T extends Number> { // Ограничение: T должно быть числом
T value;
public NumberBox(T value) { this.value = value; }
public double square() {
return value.doubleValue() * value.doubleValue();
}
}В многопоточности ограничения помогают избежать гонок потоков.
class Counter {
private int count = 0;
public synchronized void increment() { // Только один поток может изменять count одновременно
count++;
}
}Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Кооперативная многозадачность — это режим, при котором выполнение задач переключается только тогда, когда текущая задача добровольно уступает управление другим задачам, например, явно вызывая операцию ожидания.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9
🤔 Какие типы данных есть в контексте JVM?
В контексте JVM (Java Virtual Machine) типы данных делятся на два основных класса: примитивные типы данных и ссылочные типы данных.
🚩Примитивные типы данных
Примитивные типы данных представляют собой базовые типы, которые не являются объектами и хранят непосредственно значения. Они делятся на числовые типы, логический тип и символьный тип.
🟠Числовые типы
Целочисленные типы
byte: 8-битный знаковый целочисленный тип данных (диапазон от -128 до 127).
short: 16-битный знаковый целочисленный тип данных (диапазон от -32,768 до 32,767).
int: 32-битный знаковый целочисленный тип данных (диапазон от -2^31 до 2^31-1).
long: 64-битный знаковый целочисленный тип данных (диапазон от -2^63 до 2^63-1).
Типы с плавающей точкой
float: 32-битный IEEE 754 тип данных с плавающей точкой одинарной точности.
double: 64-битный IEEE 754 тип данных с плавающей точкой двойной точности.
🟠Логический тип
🟠Символьный тип
🚩Ссылочные типы данных
Ссылочные типы данных представляют собой объекты и массивы. Они хранят ссылку на область памяти, где хранятся данные объекта или массива.
🟠Классы (Classes)
Любой объектный тип данных является экземпляром класса. Классы могут быть как стандартными (например,
🟠Интерфейсы (Interfaces)
Интерфейсы определяют набор методов, которые должны быть реализованы классами, которые их реализуют.
🟠Массивы (Arrays)
Массивы могут быть одномерными или многомерными и могут хранить как примитивные, так и ссылочные типы данных.
🚩Пример примитивных и ссылочных типов данных
Ставь 👍 и забирай 📚 Базу знаний
В контексте JVM (Java Virtual Machine) типы данных делятся на два основных класса: примитивные типы данных и ссылочные типы данных.
🚩Примитивные типы данных
Примитивные типы данных представляют собой базовые типы, которые не являются объектами и хранят непосредственно значения. Они делятся на числовые типы, логический тип и символьный тип.
🟠Числовые типы
Целочисленные типы
byte: 8-битный знаковый целочисленный тип данных (диапазон от -128 до 127).
short: 16-битный знаковый целочисленный тип данных (диапазон от -32,768 до 32,767).
int: 32-битный знаковый целочисленный тип данных (диапазон от -2^31 до 2^31-1).
long: 64-битный знаковый целочисленный тип данных (диапазон от -2^63 до 2^63-1).
Типы с плавающей точкой
float: 32-битный IEEE 754 тип данных с плавающей точкой одинарной точности.
double: 64-битный IEEE 754 тип данных с плавающей точкой двойной точности.
🟠Логический тип
boolean: Представляет логическое значение (true или false).🟠Символьный тип
char: 16-битный тип данных, представляющий символ Unicode (диапазон от '\u0000' до '\uffff').🚩Ссылочные типы данных
Ссылочные типы данных представляют собой объекты и массивы. Они хранят ссылку на область памяти, где хранятся данные объекта или массива.
🟠Классы (Classes)
Любой объектный тип данных является экземпляром класса. Классы могут быть как стандартными (например,
String, Integer), так и пользовательскими.🟠Интерфейсы (Interfaces)
Интерфейсы определяют набор методов, которые должны быть реализованы классами, которые их реализуют.
🟠Массивы (Arrays)
Массивы могут быть одномерными или многомерными и могут хранить как примитивные, так и ссылочные типы данных.
🚩Пример примитивных и ссылочных типов данных
public class DataTypesExample {
public static void main(String[] args) {
// Примитивные типы данных
byte aByte = 10;
short aShort = 100;
int anInt = 1000;
long aLong = 10000L;
float aFloat = 10.5f;
double aDouble = 10.55;
boolean aBoolean = true;
char aChar = 'A';
// Ссылочные типы данных
String aString = "Hello, World!";
Integer anInteger = 1000;
int[] anArray = {1, 2, 3, 4, 5};
// Вывод примитивных типов данных
System.out.println("byte: " + aByte);
System.out.println("short: " + aShort);
System.out.println("int: " + anInt);
System.out.println("long: " + aLong);
System.out.println("float: " + aFloat);
System.out.println("double: " + aDouble);
System.out.println("boolean: " + aBoolean);
System.out.println("char: " + aChar);
// Вывод ссылочных типов данных
System.out.println("String: " + aString);
System.out.println("Integer: " + anInteger);
System.out.println("Array: " + java.util.Arrays.toString(anArray));
}
}Ставь 👍 и забирай 📚 Базу знаний
👍5💊1
🤔 Какие методы класса File есть?
Класс File в Java предоставляет методы для работы с файлами и директориями, например: createNewFile(), delete(), exists(), getName(), getPath(), isDirectory(), isFile(), length(), list(), mkdir(), renameTo(File dest) и многие другие. Они позволяют создавать, удалять, переименовывать файлы и папки, а также получать о них информацию.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Класс File в Java предоставляет методы для работы с файлами и директориями, например: createNewFile(), delete(), exists(), getName(), getPath(), isDirectory(), isFile(), length(), list(), mkdir(), renameTo(File dest) и многие другие. Они позволяют создавать, удалять, переименовывать файлы и папки, а также получать о них информацию.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍5🔥2
🤔 Что такое heap, stack?
В контексте Java, Heap (куча) и Stack (стек) являются областями памяти, используемыми JVM для управления памятью, необходимой для выполнения программы. Каждая из этих областей имеет свои характеристики и используется для разных целей.
🚩Heap (Куча)
Heap — это область памяти, выделенная для динамического распределения памяти объектов и массивов. Все объекты, созданные с использованием оператора
🟠Особенности
Куча разделена на поколения: молодое поколение (Young Generation) и старое поколение (Old Generation).
Молодое поколение включает в себя области Eden Space и Survivor Spaces (S0 и S1).
Старое поколение хранит долгоживущие объекты.
🟠Управление памятью
Куча управляется сборщиком мусора (Garbage Collector), который автоматически освобождает память, занятую объектами, которые больше не используются.
🟠Использование
Куча используется для хранения объектов, массивов и классов, информация о которых сохраняется на протяжении всего времени их жизни.
🚩Stack (Стек)
Стек — это область памяти, используемая для управления вызовами методов и хранения локальных переменных, параметров методов и информации о возвратах.
🟠Особенности
Каждый поток имеет свой собственный стек.
Стек хранит кадры (frames) для каждого вызова метода. Каждый кадр содержит локальные переменные метода и информацию о вызовах.
🟠Управление памятью
Память в стеке автоматически управляется при вызове методов и выходе из них. Когда метод вызывается, создается новый кадр в стеке; когда метод завершает выполнение, его кадр удаляется из стека.
🟠Использование
Стек используется для хранения примитивных типов данных и ссылок на объекты, которые находятся в куче.
Локальные переменные методов и параметры методов хранятся в стеке.
Ставь 👍 и забирай 📚 Базу знаний
В контексте Java, Heap (куча) и Stack (стек) являются областями памяти, используемыми JVM для управления памятью, необходимой для выполнения программы. Каждая из этих областей имеет свои характеристики и используется для разных целей.
🚩Heap (Куча)
Heap — это область памяти, выделенная для динамического распределения памяти объектов и массивов. Все объекты, созданные с использованием оператора
new, размещаются в куче.🟠Особенности
Куча разделена на поколения: молодое поколение (Young Generation) и старое поколение (Old Generation).
Молодое поколение включает в себя области Eden Space и Survivor Spaces (S0 и S1).
Старое поколение хранит долгоживущие объекты.
🟠Управление памятью
Куча управляется сборщиком мусора (Garbage Collector), который автоматически освобождает память, занятую объектами, которые больше не используются.
🟠Использование
Куча используется для хранения объектов, массивов и классов, информация о которых сохраняется на протяжении всего времени их жизни.
public class Example {
public static void main(String[] args) {
Example obj = new Example(); // obj создается в куче
}
}🚩Stack (Стек)
Стек — это область памяти, используемая для управления вызовами методов и хранения локальных переменных, параметров методов и информации о возвратах.
🟠Особенности
Каждый поток имеет свой собственный стек.
Стек хранит кадры (frames) для каждого вызова метода. Каждый кадр содержит локальные переменные метода и информацию о вызовах.
🟠Управление памятью
Память в стеке автоматически управляется при вызове методов и выходе из них. Когда метод вызывается, создается новый кадр в стеке; когда метод завершает выполнение, его кадр удаляется из стека.
🟠Использование
Стек используется для хранения примитивных типов данных и ссылок на объекты, которые находятся в куче.
Локальные переменные методов и параметры методов хранятся в стеке.
public class Example {
public static void main(String[] args) {
int localVar = 10; // localVar хранится в стеке
Example obj = new Example(); // Ссылка на obj хранится в стеке, а сам объект — в куче
obj.method();
}
public void method() {
int anotherVar = 20; // anotherVar хранится в стеке
}
}Ставь 👍 и забирай 📚 Базу знаний
👍5
🤔 Что такое механизм CAS?
CAS (Compare-And-Swap) — это безблокирующий механизм синхронизации, при котором значение обновляется только если оно соответствует ожидаемому. Применяется в многопоточности для атомарных операций, используется в Atomic* классах и конкурентных структурах данных.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
CAS (Compare-And-Swap) — это безблокирующий механизм синхронизации, при котором значение обновляется только если оно соответствует ожидаемому. Применяется в многопоточности для атомарных операций, используется в Atomic* классах и конкурентных структурах данных.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥8👍4
🤔 Как бороться в БД с SQL Injection?
SQL Injection – это атака, при которой злоумышленник вставляет вредоносный SQL-код в запрос, чтобы получить несанкционированный доступ к данным.
Допустим, у нас есть код
Если злоумышленник введёт
🚩Способы защиты от SQL Injection
🟠Использование `PreparedStatement` (РЕКОМЕНДУЕТСЯ)
Подготовленные запросы автоматически экранируют входные данные, предотвращая SQL-инъекции.
🟠Использование ORM (например, Hibernate)
ORM-фреймворки (Hibernate, JPA) автоматически генерируют безопасные SQL-запросы.
🟠Проверка и экранирование входных данных
Если по какой-то причине
🟠Минимизация прав в БД
Создавайте отдельного пользователя БД с ограниченными правами:
Запрет на
Только доступ к нужным таблицам
🟠Использование Web Application Firewall (WAF)
WAF анализирует HTTP-запросы и блокирует подозрительные SQL-запросы. Пример: ModSecurity – популярный WAF для защиты веб-приложений.
Ставь 👍 и забирай 📚 Базу знаний
SQL Injection – это атака, при которой злоумышленник вставляет вредоносный SQL-код в запрос, чтобы получить несанкционированный доступ к данным.
Допустим, у нас есть код
String query = "SELECT * FROM users WHERE username = '" + username + "' AND password = '" + password + "'";
Если злоумышленник введёт
' OR '1'='1 в поле пароля, запрос превратится в: SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1'
🚩Способы защиты от SQL Injection
🟠Использование `PreparedStatement` (РЕКОМЕНДУЕТСЯ)
Подготовленные запросы автоматически экранируют входные данные, предотвращая SQL-инъекции.
String sql = "SELECT * FROM users WHERE username = ? AND password = ?";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, username);
stmt.setString(2, password);
ResultSet rs = stmt.executeQuery();
🟠Использование ORM (например, Hibernate)
ORM-фреймворки (Hibernate, JPA) автоматически генерируют безопасные SQL-запросы.
TypedQuery<User> query = entityManager.createQuery(
"SELECT u FROM User u WHERE u.username = :username AND u.password = :password", User.class);
query.setParameter("username", username);
query.setParameter("password", password);
User user = query.getSingleResult();
🟠Проверка и экранирование входных данных
Если по какой-то причине
PreparedStatement использовать нельзя, экранируйте опасные символы (', " и ;). String safeInput = input.replace("'", "\\'");🟠Минимизация прав в БД
Создавайте отдельного пользователя БД с ограниченными правами:
Запрет на
DROP, DELETE, UPDATE без WHERE Только доступ к нужным таблицам
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'securepassword';
GRANT SELECT, INSERT, UPDATE ON mydb.users TO 'app_user'@'localhost';
🟠Использование Web Application Firewall (WAF)
WAF анализирует HTTP-запросы и блокирует подозрительные SQL-запросы. Пример: ModSecurity – популярный WAF для защиты веб-приложений.
Ставь 👍 и забирай 📚 Базу знаний
👍10
🤔 В Java аргументы передаются по ссылке или значению?
Всегда по значению.
Но если передаётся объект, копируется ссылка, а не сам объект. Поэтому:
- Примитивы — копируются.
- Объекты — копируется ссылка, изменения внутри метода видны снаружи, если они касаются полей.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Всегда по значению.
Но если передаётся объект, копируется ссылка, а не сам объект. Поэтому:
- Примитивы — копируются.
- Объекты — копируется ссылка, изменения внутри метода видны снаружи, если они касаются полей.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍21🔥2💊1
🤔 Что такое шардирование?
Шардирование – это метод горизонтального разделения базы данных на несколько частей (шардов) для повышения производительности и масштабируемости.
🚩Популярные стратегии шардирования
🟠По диапазону (Range-Based Sharding)
Данные делятся по диапазону значений (например,
🟠По хешу (Hash-Based Sharding)
Данные распределяются с помощью хеш-функции.
🟠Географическое (Geo-Based Sharding)
Данные разделяются по географическому признаку (например, Европа, Азия, США). Минимальная задержка (пользователь получает данные ближе к себе)
Некоторые регионы могут перегружаться.
Ставь 👍 и забирай 📚 Базу знаний
Шардирование – это метод горизонтального разделения базы данных на несколько частей (шардов) для повышения производительности и масштабируемости.
🚩Популярные стратегии шардирования
🟠По диапазону (Range-Based Sharding)
Данные делятся по диапазону значений (например,
ID 1–1000, 1001–2000). 🟠По хешу (Hash-Based Sharding)
Данные распределяются с помощью хеш-функции.
int shardNumber = userId % numberOfShards;
🟠Географическое (Geo-Based Sharding)
Данные разделяются по географическому признаку (например, Европа, Азия, США). Минимальная задержка (пользователь получает данные ближе к себе)
Некоторые регионы могут перегружаться.
Ставь 👍 и забирай 📚 Базу знаний
👍10🤔2💊2
🤔 Что в Java не является объектом?
- Примитивные типы данных: int, long, float, boolean, char и др.
- Они не наследуются от Object.
- Не имеют методов и работают на уровне значений.
Java позволяет оборачивать их в объекты через классы-обёртки (Integer, Boolean и др.).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- Примитивные типы данных: int, long, float, boolean, char и др.
- Они не наследуются от Object.
- Не имеют методов и работают на уровне значений.
Java позволяет оборачивать их в объекты через классы-обёртки (Integer, Boolean и др.).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍18💊3
🤔 В чем разница между Spring аннотациями Component, Repository и Service?
Все три аннотации используются в Spring для создания бинов, но у каждой есть своё предназначение.
🚩`@Component` – базовая аннотация для бина
Является универсальной аннотацией.
Можно применять к любым классам, которые должны управляться Spring-контейнером.
🚩`@Service` – для бизнес-логики
Упрощает понимание кода (показывает, что этот класс содержит бизнес-логику).
🚩`@Repository` – для работы с базой данных
Автоматически перехватывает SQL-исключения (
Ставь 👍 и забирай 📚 Базу знаний
Все три аннотации используются в Spring для создания бинов, но у каждой есть своё предназначение.
🚩`@Component` – базовая аннотация для бина
@Component помечает класс как Spring-бин (компонент). Является универсальной аннотацией.
Можно применять к любым классам, которые должны управляться Spring-контейнером.
@Component
public class MyComponent {
public void doWork() {
System.out.println("Работа компонента");
}
}
🚩`@Service` – для бизнес-логики
@Service – это специализированный @Component, используемый для сервисных классов (логика приложения). Упрощает понимание кода (показывает, что этот класс содержит бизнес-логику).
@Service
public class UserService {
public String getUser() {
return "Пользователь Иван";
}
}
🚩`@Repository` – для работы с базой данных
@Repository – это специализированный @Component для слоя доступа к данным (DAO, Repository). Автоматически перехватывает SQL-исключения (
PersistenceExceptionTranslationPostProcessor) и преобразует их в DataAccessException. @Repository
public class UserRepository {
public String findUserById(int id) {
return "Пользователь с ID " + id;
}
}
Ставь 👍 и забирай 📚 Базу знаний
👍15
🤔 Что такое кеширование?
Кеширование — это временное хранение данных в более быстром доступе, чтобы:
- Уменьшить нагрузку на систему или БД.
- Повысить производительность.
- Сократить задержки при повторном использовании одинаковых данных.
Кеш может быть в памяти (например, Map, Redis), в браузере или на уровне CDN.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Кеширование — это временное хранение данных в более быстром доступе, чтобы:
- Уменьшить нагрузку на систему или БД.
- Повысить производительность.
- Сократить задержки при повторном использовании одинаковых данных.
Кеш может быть в памяти (например, Map, Redis), в браузере или на уровне CDN.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍11
🤔 Обеспечит ли Stream API RandomAcess?
Нет, Stream API не поддерживает
🚩Почему Stream API не поддерживает `RandomAccess`?
🟠Stream – это поток данных
который не обязательно хранится в памяти в виде структуры, поддерживающей случайный доступ.
🟠Нет индексов
в отличие от
🟠Обход последовательный
элементы проходятся один за другим, что делает случайный доступ невозможным.
Ставь 👍 и забирай 📚 Базу знаний
Нет, Stream API не поддерживает
RandomAccess, потому что он работает с потоком данных, а не с индексированными структурами. 🚩Почему Stream API не поддерживает `RandomAccess`?
🟠Stream – это поток данных
который не обязательно хранится в памяти в виде структуры, поддерживающей случайный доступ.
🟠Нет индексов
в отличие от
List, Stream не позволяет получить элемент по индексу (get(index) отсутствует). 🟠Обход последовательный
элементы проходятся один за другим, что делает случайный доступ невозможным.
List (с RandomAccess)List<Integer> list = new ArrayList<>(List.of(1, 2, 3, 4, 5));
System.out.println(list.get(2)); // Быстрое получение элемента по индексу
Stream (без RandomAccess)Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
stream.skip(2).findFirst().ifPresent(System.out::println); // Ищем 3-й элемент
Ставь 👍 и забирай 📚 Базу знаний
👍3
Каналы с Junior IT вакансиями
и стажировками
Подписывайся и забирай свой оффер
1. Стажировки и вакансии по России и миру
2. IT вакансии по СНГ
3. IT стажировки по СНГ
4. ИИ-ассистент для автооткликов
5. DIGITAL и IT стажировки и вакансии
6. IT стажировки в топовых компаниях мира
7. Удалённые IT вакансии и стажировки
8. Python вакансии и стажировки
9. БИГТЕХ вакансии и стажировки
10. Design вакансии и стажировки
11. QA вакансии и стажировки
12. Junior вакансии и стажировки
13. Frontend вакансии и вопросы собесов
14. Вакансии и стажировки для аналитиков
15. Вакансии в русских стартапах за границей
16. Вакансии и стажировки для DevOps
17. Вакансии, которых нет на ХХ.РУ
Please open Telegram to view this post
VIEW IN TELEGRAM
FRONTENDFRONTENDFRONTENDFRONTENDFRONTENDFRONTENDFRONTEND
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
💊39🤔25🔥2👍1