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
Ключевое слово private используется для ограничения доступа к членам класса, делая их доступными только внутри самого класса. Это обеспечивает инкапсуляцию, защищая внутреннее состояние объекта от внешнего вмешательства и позволяя контролировать доступ к данным.

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
++i — префиксный инкремент. Сначала увеличивает значение переменной i, затем возвращает новое значение.

i++ — постфиксный инкремент. Сначала возвращает текущее значение переменной i, затем увеличивает его.

Префиксный инкремент полезен, когда требуется сразу использовать увеличенное значение, а постфиксный — когда важно сохранить текущее значение до увеличения.

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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍131
OutputStream — это абстрактный класс, представляющий поток вывода байтов, который используется для записи данных в различные источники, такие как файлы или сетевые соединения. Для использования OutputStream необходимо создать его подкласс, например, FileOutputStream, и использовать методы write() для записи данных в поток.

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥2
⚡️Инкапсуляция достигается путем сокрытия данных класса и предоставления доступа к ним через методы. Это защищает внутреннее состояние объекта и обеспечивает контроль над изменениями.


public class Person {
// Приватные поля, доступ к которым ограничен
private String name;
private int age;

// Публичные методы для доступа и изменения полей
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
if (age > 0) {
this.age = age;
}
}
}


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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍141
JVM (Java Virtual Machine) — это виртуальная машина, которая исполняет Java байт-код, обеспечивая платформонезависимость. JRE (Java Runtime Environment) включает JVM и библиотеки для выполнения Java приложений, тогда как JDK (Java Development Kit) содержит JRE и инструменты для разработки, такие как компилятор javac.

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

1⃣ Predicate представляет собой условие, возвращающее boolean. Он имеет метод test(T t), который принимает объект типа T и возвращает true или false. Пример использования:

Predicate<Integer> isEven = x -> x % 2 == 0;
// Проверяет, является ли число четным


2⃣ Function преобразует объект одного типа в объект другого. Он имеет метод apply(T t), который принимает объект типа T и возвращает объект типа R. Пример использования:

Function<String, Integer> stringLength = s -> s.length();
// Возвращает длину строки


Таким образом, Predicate используется для проверки условий, а Function — для преобразования данных.

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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍161
FileReader и FileWriter используются для чтения и записи текстовых данных в файлы соответственно. FileReader читает символы из файла, а FileWriter записывает символы в файл, обеспечивая удобную работу с текстовыми данными в приложениях.

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3
➡️ Статический внутренний класс объявляется с ключевым словом static. Он не имеет доступа к нестатическим полям и методам внешнего класса без создания его экземпляра. Такой класс может быть использован без создания объекта внешнего класса.


class Outer {
static class StaticInner {
// Статический внутренний класс
}
}


Нестатический внутренний класс имеет доступ ко всем полям и методам внешнего класса. Для его создания требуется экземпляр внешнего класса.


class Outer {
class NonStaticInner {
// Нестатический внутренний класс
}
}


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

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

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


public enum Day {
// Определение констант перечисления
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

public class EnumExample {
public static void main(String[] args) {
Day today = Day.MONDAY;
System.out.println("Today is: " + today);
}
}


Перечисления помогают избежать ошибок, связанных с использованием "магических" чисел или строк.

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

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

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

Future используется для выполнения задач в отдельных потоках, что позволяет избежать блокировок основного потока.


ExecutorService executor = Executors.newFixedThreadPool(2);
Future<Integer> future = executor.submit(() -> {
// Долговременная задача или вычисление
Thread.sleep(2000);
return 42;
});

try {
// Ожидание результата, если задача завершилась
Integer result = future.get(); // может выбросить InterruptedException или ExecutionException
System.out.println(result);
} catch (InterruptedException | ExecutionException e) {
// Обработка исключений
} finally {
executor.shutdown();
}


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

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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2
📌 Java Memory Model (JMM) определяет, как потоки взаимодействуют с памятью в многопоточной среде. Она обеспечивает видимость изменений переменных между потоками и гарантирует порядок выполнения операций. Без JMM потоки могли бы видеть устаревшие данные из-за кэширования или переупорядочивания операций.

Ключевые аспекты JMM:
- Happens-before: Отношение, гарантирующее, что одна операция видна другой.
- Volatile: Переменные с этим модификатором всегда читаются из основной памяти, а не из кэша потока.
- Synchronized: Блоки и методы с этим ключевым словом обеспечивают взаимное исключение и видимость изменений.


class Example {
private volatile boolean flag = false;

public void toggleFlag() {
flag = !flag; // Изменение видно всем потокам
}
}


В этом примере volatile гарантирует, что изменения flag будут видны всем потокам сразу. JMM критична для написания корректных многопоточных приложений.

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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91
Константа создается с использованием ключевого слова final при объявлении переменной. Значение константы должно быть присвоено сразу при объявлении и не может быть изменено в дальнейшем.

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
📌 HashMap и Hashtable — это структуры данных для хранения пар ключ-значение. Основные различия:

1. Синхронизация: Hashtable потокобезопасен, все его методы синхронизированы. HashMap не потокобезопасен, но работает быстрее в однопоточных сценариях. Для многопоточности можно использовать Collections.synchronizedMap или ConcurrentHashMap.

2. Null-значения: HashMap позволяет использовать null как ключ и значение. Hashtable выбрасывает NullPointerException при попытке добавить null.

3. Наследование: Hashtable — устаревший класс, появился в Java 1.0. HashMap — часть Java Collections Framework, появился в Java 1.2.


// Пример использования HashMap
Map<String, Integer> hashMap = new HashMap<>();
hashMap.put("key", null); // Работает

// Пример использования Hashtable
Hashtable<String, Integer> hashtable = new Hashtable<>();
hashtable.put("key", null); // NullPointerException


HashMap предпочтителен в большинстве случаев из-за производительности и гибкости. Hashtable используется редко, в основном в legacy-коде.

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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Цикл for выполняет итерацию, пока условие выполняется, и состоит из трех частей: инициализации, условия и шага. На каждой итерации проверяется условие, и если оно истинно, выполняется тело цикла.

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
🔵Dependency Injection (DI) — это подход, при котором зависимости объекта передаются извне, а не создаются внутри самого объекта. Это упрощает тестирование, улучшает модульность и делает код более гибким.

Spring поддерживает три основных типа инъекций:
1. Constructor Injection — зависимости передаются через конструктор.
2. Setter Injection — зависимости устанавливаются через setter-методы.
3. Field Injection — зависимости внедряются напрямую в поля класса с помощью аннотаций.

Пример:

@Service
public class UserService {
private final UserRepository userRepository;

@Autowired // Constructor Injection
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}

Конструкторное внедрение рекомендуется как наиболее предпочтительный способ, так как оно обеспечивает неизменяемость и упрощает тестирование.

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

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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3
➡️ Оператор new используется для создания нового объекта. При вызове new выделяется память для объекта, вызывается конструктор класса для инициализации этого объекта, и возвращается ссылка на созданный объект.


ClassName obj = new ClassName();


В данном примере new ClassName() создает объект типа ClassName. Конструктор ClassName() вызывается для инициализации объекта, а ссылка на этот объект присваивается переменной obj.

Оператор new также используется для создания массивов:


int[] arr = new int[10];


Здесь создается массив из 10 элементов типа int, и ссылка на этот массив присваивается переменной arr.

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

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