Java собеседования
665 subscribers
106 photos
224 links
Подготовка к собеседованиям на позицию Java-разработчик

Еще больше на сайте https://frontview-it.ru

Backend собеседования - @frontview_backend
Java работа - @frontview_java_vacancies
Все IT вакансии - @frontview_all_vacancies
Download Telegram
😎Collections.unmodifiableList — это метод из Java Collections Framework, который возвращает неизменяемый вид списка. Он используется для создания "read-only" представления списка, что предотвращает его изменение после создания.

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");

List<String> unmodifiableList = Collections.unmodifiableList(list);


😎Попытка изменить unmodifiableList вызовет UnsupportedOperationException. Это полезно для защиты данных от непреднамеренных изменений, особенно при передаче коллекций между методами или классами.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91
В Java Stream API, peek() и map() — это методы для работы с потоками данных, но они служат разным целям.

1️⃣peek() используется для промежуточных операций, позволяя выполнять действие для каждого элемента в потоке без изменения элементов. Это полезно для отладки или логирования.

Stream.of("a", "b", "c")
.peek(System.out::println)
.collect(Collectors.toList());


2️⃣map() преобразует каждый элемент потока, применяя функцию и возвращая новый поток с преобразованными элементами.

Stream.of("a", "b", "c")
.map(String::toUpperCase)
.collect(Collectors.toList()); // ["A", "B", "C"]


💡peek() не изменяет элементы, а map() преобразует их.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥2
В Java ключевые слова this и super используются для разных целей в контексте объектно-ориентированного программирования.

▶️ this ссылается на текущий объект класса. Используется для доступа к полям и методам текущего объекта, а также для вызова конструктора из другого конструктора в том же классе.

public class Example {
private int value;

public Example(int value) {
this.value = value;
}
}


▶️ super ссылается на суперкласс объекта. Используется для доступа к полям и методам суперкласса, а также для вызова конструктора суперкласса.

public class Subclass extends Superclass {
public Subclass() {
super();
}
}


Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍153
✏️ Оператор break в Java используется для немедленного выхода из цикла или блока switch. Он позволяет прервать выполнение текущей итерации и перейти к следующему коду за пределами цикла или блока. Пример использования в цикле for:


for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // Прерывает цикл, когда i равно 5
}
System.out.println(i);
}


Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🤔1
▶️ Стек вызовов — это структура данных, которая управляет порядком выполнения методов в программе, сохраняя информацию о каждом активном методе, включая его параметры и локальные переменные. Когда метод вызывается, он добавляется в стек, а после завершения его выполнения удаляется, что помогает отслеживать текущий контекст выполнения и поддерживать правильный порядок возврата из методов.

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥3
ArrayList — это класс из Java Collections Framework, который реализует интерфейс List. Он представляет собой динамический массив, который может изменять свой размер при добавлении или удалении элементов.

Внутри ArrayList используется массив для хранения элементов. При добавлении элемента, если массив заполнен, создается новый массив большего размера, и все элементы копируются в него. Это делает операции добавления и удаления элементов более затратными по времени в худшем случае.


import java.util.ArrayList;

public class Example {
public static void main(String[] args) {
// Создание ArrayList
ArrayList<String> list = new ArrayList<>();

// Добавление элементов
list.add("A");
list.add("B");

// Получение элемента
String element = list.get(0); // "A"

// Удаление элемента
list.remove("B");
}
}


ArrayList обеспечивает быстрый доступ по индексу, но операции вставки и удаления могут быть медленными из-за необходимости сдвига элементов.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥5
Поток ввода-вывода (I/O) в Java — это механизм, который позволяет программе взаимодействовать с внешними источниками данных, такими как файлы, сети или консоль, посредством чтения и записи данных. Java предоставляет различные классы и интерфейсы в пакете java.io для работы с потоками ввода-вывода, обеспечивая как байтовый, так и символьный ввод-вывод.

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
🛑 Spring Framework — это фреймворк для разработки приложений на Java, который упрощает создание корпоративных приложений. Он предоставляет комплексную инфраструктуру для разработки, включая поддержку инверсии управления (IoC), аспектно-ориентированного программирования (AOP) и управления транзакциями. Основной компонент Spring — контейнер IoC, который управляет жизненным циклом объектов и их зависимостями.


@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}


Spring также поддерживает интеграцию с различными технологиями, такими как JPA, JMS и REST, что делает его универсальным инструментом для разработки.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
⚫️ Stream API в Java предоставляет удобный способ работы с последовательностями данных. Он позволяет выполнять операции над элементами коллекций, такие как фильтрация, сортировка и преобразование, в декларативном стиле.


import java.util.Arrays;
import java.util.List;

public class StreamExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

// Фильтрация и вывод чётных чисел
numbers.stream()
.filter(n -> n % 2 == 0)
.forEach(System.out::println); // Вывод: 2, 4
}
}


Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Создание объекта осуществляется с помощью оператора new, который вызывает конструктор класса. Например, MyClass obj = new MyClass(); создает новый экземпляр класса MyClass и сохраняет ссылку на него в переменной obj.

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥1
Лямбда-выражение — это краткая форма записи анонимного класса с одним методом, которая позволяет передавать поведение как параметр. Оно упрощает код, делая его более читаемым и лаконичным, особенно при работе с функциональными интерфейсами.


// Лямбда-выражение для интерфейса Runnable
Runnable runnable = () -> System.out.println("Лямбда в действии!");


Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Java Memory Model (JMM) определяет, как потоки взаимодействуют через память и какие изменения в памяти одного потока видны другим потокам. JMM обеспечивает согласованность и предсказуемость многопоточного поведения, устанавливая правила для чтения и записи переменных в памяти.

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1
😊 Блок try-catch используется для обработки исключений, позволяя программе продолжать выполнение после возникновения ошибки.

🔘 Внутри блока try размещается код, который может вызвать исключение, а в блоке catch — код, который обрабатывает это исключение, обеспечивая безопасное завершение программы или выполнение альтернативных действий.


try {
// Код, который может вызвать исключение
} catch (ExceptionType e) {
// Обработка исключения
}


Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Объектно-ориентированное программирование (ООП) — это парадигма программирования, основанная на концепции объектов, которые содержат данные и методы для их обработки. Основные принципы ООП включают инкапсуляцию, наследование, полиморфизм и абстракцию, что способствует созданию гибких и масштабируемых программ.

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🔘Интерфейс — это абстрактный тип, который используется для определения контракта, который должны реализовать классы. Он содержит объявления методов, но не их реализацию. Интерфейсы позволяют создавать гибкие и масштабируемые архитектуры, обеспечивая возможность полиморфизма.

🔘Класс, реализующий интерфейс, обязан предоставить реализацию всех его методов. Это позволяет использовать интерфейсы для достижения множественного наследования, так как класс может реализовывать несколько интерфейсов.

Пример интерфейса:


public interface Animal {
// Метод, который должен быть реализован в классе
void makeSound();
}


Класс, реализующий интерфейс:


public class Dog implements Animal {
// Реализация метода интерфейса
public void makeSound() {
System.out.println("Woof");
}
}


🔘Интерфейсы также могут содержать статические методы и методы по умолчанию с реализацией, начиная с Java 8.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍131
Ключевое слово private используется для ограничения доступа к полям и методам класса, делая их доступными только внутри самого класса. Это способствует инкапсуляции, защищая внутреннее состояние объекта от внешнего вмешательства и обеспечивая контроль над изменениями данных.

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91
➡️ Оператор == используется для сравнения примитивных типов данных на равенство. Он проверяет, равны ли значения двух переменных.

int a = 5;
int b = 5;
boolean result = (a == b); // true, так как значения равны


➡️ Оператор != проверяет на неравенство значений двух переменных.

int a = 5;
int b = 10;
boolean result = (a != b); // true, так как значения не равны


⚠️Для объектов == и != сравнивают ссылки, а не содержимое. Для сравнения содержимого объектов следует использовать метод equals().

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍141
Heap — это область памяти, используемая для динамического распределения памяти, где хранятся объекты и классы, которые создаются во время выполнения программы. Управление памятью в heap осуществляется сборщиком мусора, который автоматически освобождает память, занятую объектами, которые больше не используются.

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1
📎 HashMap — это структура данных в Java, реализующая интерфейс Map. Она хранит пары "ключ-значение" и обеспечивает быстрый доступ к значениям по ключам.

Основы работы:

HashMap использует хеширование для вычисления индекса, по которому хранится пара "ключ-значение". Метод hashCode() ключа определяет этот индекс. При коллизиях (когда два ключа имеют одинаковый хеш) используется связанный список или дерево для хранения нескольких пар в одном индексе.

Пример использования:

import java.util.HashMap;

public class Example {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<>();

// Добавление элементов
map.put("Alice", 30);
map.put("Bob", 25);

// Получение значения по ключу
int age = map.get("Alice"); // age: 30

// Проверка наличия ключа
boolean hasBob = map.containsKey("Bob"); // true
}
}


Особенности:

HashMap допускает null в качестве ключей и значений, не гарантирует порядок элементов и обеспечивает амортизированную сложность операций O(1).

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥1
Поток — это отдельная последовательность выполнения в программе, которая позволяет выполнять несколько операций одновременно, улучшая производительность и отзывчивость приложения. Потоки управляются с помощью класса Thread или интерфейса Runnable, и их использование требует внимательного управления ресурсами и синхронизации для предотвращения состояния гонки и взаимоблокировок.

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥1