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

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

Backend собеседования - @frontview_backend
Java работа - @frontview_java_vacancies
Все IT вакансии - @frontview_all_vacancies
Download Telegram
🔥 this — это ключевое слово, которое ссылается на текущий объект, в контексте которого выполняется метод или конструктор. Оно используется для различения полей класса от параметров метода или конструктора, когда их имена совпадают.


public class Example {
private int value;

public Example(int value) {
this.value = value; // 'this.value' — поле класса, 'value' — параметр конструктора
}

public void setValue(int value) {
this.value = value; // 'this.value' — поле класса, 'value' — параметр метода
}
}


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

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

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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3
▶️ Метод filter используется для обработки потоков данных, позволяя отфильтровать элементы на основе заданного условия, возвращая новый поток только с теми элементами, которые удовлетворяют этому условию. Он часто применяется в сочетании с лямбда-выражениями для повышения читаемости и лаконичности кода.

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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥1
😎Интерфейсы могут содержать методы с реализацией, используя ключевое слово default. Это позволяет добавлять новые методы в интерфейсы без нарушения существующего кода, реализующего интерфейс.


interface MyInterface {
// Обычный метод интерфейса
void existingMethod();

// Метод с реализацией по умолчанию
default void newDefaultMethod() {
System.out.println("Default implementation");
}
}


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

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

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

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


import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Example {
public static void main(String[] args) {
// Создание пула потоков с фиксированным размером
ExecutorService executor = Executors.newFixedThreadPool(5);

// Отправка задач на выполнение
for (int i = 0; i < 10; i++) {
executor.submit(() -> {
System.out.println("Task executed by " + Thread.currentThread().getName());
});
}

// Завершение работы ExecutorService
executor.shutdown();
}
}


Этот код создает пул из 5 потоков и выполняет 10 задач, распределяя их между потоками.

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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍131
Ключевое слово 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