🤔 Перечисли основные виды селекторов.
Основные виды селекторов:
- Селектор по тегу (div, p);
- Селектор по классу (.my-class);
- Селектор по идентификатору (#my -id);
- Групповые селекторы (h1, h2);
- Потомковые (div p);
- Дочерние (div > p);
- Соседние (h1 + p);
- Универсальный (*).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Основные виды селекторов:
- Селектор по тегу (div, p);
- Селектор по классу (.my-class);
- Селектор по идентификатору (
- Групповые селекторы (h1, h2);
- Потомковые (div p);
- Дочерние (div > p);
- Соседние (h1 + p);
- Универсальный (*).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
💊10🔥3🤔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
🤔 Зачем добавили ArrayList, если уже был Vector?
- Vector — синхронизирован, что делает его менее производительным;
- ArrayList — не синхронизирован, работает быстрее;
- Добавление ArrayList даёт контроль над потокобезопасностью.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- Vector — синхронизирован, что делает его менее производительным;
- ArrayList — не синхронизирован, работает быстрее;
- Добавление ArrayList даёт контроль над потокобезопасностью.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍6💊3
🤔 Чем отличается обычный объект от Bean?
В Spring термин Bean (бин) означает объект, управляемый Spring-контейнером.
🟠Обычный объект (Java POJO)
Создаётся вручную, Spring о нём ничего не знает
🟠Spring Bean (управляемый объект)
Spring создаёт и управляет бином через аннотации.
Теперь объект создаётся Spring-контейнером
Ставь 👍 и забирай 📚 Базу знаний
В Spring термин Bean (бин) означает объект, управляемый Spring-контейнером.
🟠Обычный объект (Java POJO)
Создаётся вручную, Spring о нём ничего не знает
class Car {
void drive() {
System.out.println("Машина едет...");
}
}
public class Main {
public static void main(String[] args) {
Car car = new Car(); // Создаём объект вручную
car.drive();
}
}🟠Spring Bean (управляемый объект)
Spring создаёт и управляет бином через аннотации.
import org.springframework.stereotype.Component;
@Component // Сообщает Spring, что этот класс - Bean
class Car {
void drive() {
System.out.println("Spring-машина едет...");
}
}
Теперь объект создаётся Spring-контейнером
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
Car car = context.getBean(Car.class); // Получаем Bean из Spring-контейнера
car.drive();
}
}
Ставь 👍 и забирай 📚 Базу знаний
👍6
🤔 Что будет, если применить volatile к объектам?
volatile применимо к ссылке на объект, но не к самому объекту.
Это значит:
- ссылка будет видна всем потокам;
- поля объекта не становятся volatile, если они изменяются напрямую;
- это не защищает от состояний гонки внутри объекта.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
volatile применимо к ссылке на объект, но не к самому объекту.
Это значит:
- ссылка будет видна всем потокам;
- поля объекта не становятся volatile, если они изменяются напрямую;
- это не защищает от состояний гонки внутри объекта.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍5
🤔 Чем stub отличается от mock?
В тестировании разница между Stub и Mock заключается в их предназначении и способе использования.
🚩Stub (Заглушка)
Stub – это простейший объект-заглушка, который возвращает заранее заданные данные. Он не проверяет, какие методы были вызваны, а просто отвечает на запросы.
🚩Mock (Макет)
Mock – это объект, который имитирует поведение реального объекта и позволяет проверять вызовы методов (сколько раз был вызван, с какими аргументами и т. д.).
Ставь 👍 и забирай 📚 Базу знаний
В тестировании разница между Stub и Mock заключается в их предназначении и способе использования.
🚩Stub (Заглушка)
Stub – это простейший объект-заглушка, который возвращает заранее заданные данные. Он не проверяет, какие методы были вызваны, а просто отвечает на запросы.
class UserRepositoryStub implements UserRepository {
@Override
public User findById(Long id) {
return new User(id, "Иван"); // Просто возвращает статичные данные
}
}🚩Mock (Макет)
Mock – это объект, который имитирует поведение реального объекта и позволяет проверять вызовы методов (сколько раз был вызван, с какими аргументами и т. д.).
UserRepository userRepository = mock(UserRepository.class);
when(userRepository.findById(1L)).thenReturn(new User(1L, "Иван"));
User user = userRepository.findById(1L);
verify(userRepository, times(1)).findById(1L); // Проверяем, что метод был вызван 1 раз
Ставь 👍 и забирай 📚 Базу знаний
👍2
🤔 Какой механизм используется при реализации параллельных стримов?
Параллельные стримы используют ForkJoinPool, а именно его общий (common) пул потоков.
Он применяет алгоритм fork-join:
- разбивает задачи на подзадачи,
- распределяет их между потоками.
Это позволяет выполнять операции над потоками в разных потоках параллельно, если они не зависят друг от друга.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Параллельные стримы используют ForkJoinPool, а именно его общий (common) пул потоков.
Он применяет алгоритм fork-join:
- разбивает задачи на подзадачи,
- распределяет их между потоками.
Это позволяет выполнять операции над потоками в разных потоках параллельно, если они не зависят друг от друга.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥1
🤔 Что такое 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 хранится в стеке
}
}Ставь 👍 и забирай 📚 Базу знаний
👍2
🤔 Перечисли принципы, которым вы следуете в многопоточном программировании.
- Минимизировать общение между потоками;
- Использовать высокоуровневые примитивы (Executors, Locks, Concurrent collections);
- Предпочитать неизменяемость;
- Чётко проектировать критические секции;
- Обрабатывать прерывания правильно;
- Стараться избегать блокировок и deadlock-ов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- Минимизировать общение между потоками;
- Использовать высокоуровневые примитивы (Executors, Locks, Concurrent collections);
- Предпочитать неизменяемость;
- Чётко проектировать критические секции;
- Обрабатывать прерывания правильно;
- Стараться избегать блокировок и deadlock-ов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1🔥1🤔1