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

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

Backend собеседования - @frontview_backend
Java работа - @frontview_java_vacancies
Все IT вакансии - @frontview_all_vacancies
Download Telegram
➡️ Создание объекта в Java происходит с помощью ключевого слова new, за которым следует вызов конструктора класса. Конструктор может быть как по умолчанию, так и пользовательским.


ClassName obj = new ClassName();


Если класс имеет параметризованный конструктор, объект создается с передачей аргументов:


ClassName obj = new ClassName(arg1, arg2);


Пример с классом Person:


class Person {
String name;
int age;

Person(String name, int age) {
this.name = name;
this.age = age;
}
}

Person person = new Person("Alice", 30);


Объект создается в куче, а переменная person хранит ссылку на этот объект.

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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
Основные методы интерфейса Set включают add(), remove(), contains(), size() и isEmpty(). Эти методы позволяют добавлять элементы, удалять их, проверять наличие элемента, получать размер набора и проверять его на пустоту.

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


for (int i = 0; i < 5; i++) {
if (i == 2) {
continue; // Пропустить итерацию при i == 2
}
System.out.println(i); // Выведет 0, 1, 3, 4
}


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

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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
Метод getMessage() возвращает текстовое сообщение об ошибке, которое обычно содержит краткое описание причины исключения. Метод printStackTrace() выводит полный стек вызовов, включая информацию о том, где именно произошло исключение, что полезно для отладки.

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
Comparable и Comparator используются для сравнения объектов, но имеют разные подходы.

Comparable — это интерфейс, который реализуется самим классом. Он содержит метод compareTo, определяющий естественный порядок сортировки объектов.


class Person implements Comparable<Person> {
private String name;
public int compareTo(Person other) {
return this.name.compareTo(other.name);
}
}


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


Comparator<Person> byName = (p1, p2) -> p1.getName().compareTo(p2.getName());


Comparable задает естественный порядок, а Comparator предоставляет гибкость для множества вариантов сортировки.

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

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

Анонимный класс создает новый класс на лету с полным синтаксисом:


Runnable r = new Runnable() {
@Override
public void run() {
System.out.println("Running");
}
};


Лямбда-выражение предоставляет более компактный синтаксис для реализации функционального интерфейса:


Runnable r = () -> System.out.println("Running");


Лямбда-выражения не создают новый объект класса, что делает их более эффективными по памяти. Они также улучшают читаемость кода, особенно для простых операций. Анонимные классы могут использоваться для более сложных сценариев, где требуется несколько методов или состояние.

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

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

1. Вызов конструктора родительского класса:


public class Child extends Parent {
public Child() {
super(); // Вызов конструктора родительского класса
// или super(параметры) для вызова конкретного конструктора
}
}


2. Обращение к методам или полям родительского класса:


public class Child extends Parent {
@Override
public void display() {
super.display(); // Вызов метода родительского класса
System.out.println("Дополнительная логика");
}

public void accessField() {
System.out.println(super.field); // Доступ к полю родительского класса
}
}


super особенно полезен при переопределении методов, когда нужно расширить, а не полностью заменить поведение родительского класса.

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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🔴Iterator и ListIterator - интерфейсы для перебора элементов коллекций, но с существенными различиями:

1. Направление обхода:
- Iterator: только вперед (методы hasNext(), next())
- ListIterator: в обоих направлениях (дополнительно hasPrevious(), previous())

2. Позиционирование:
- ListIterator позволяет узнать текущую позицию (nextIndex(), previousIndex())

3. Модификация:
- Iterator: только удаление (remove())
- ListIterator: удаление, добавление (add()) и замена (set())

4. Применимость:
- Iterator: для любых коллекций
- ListIterator: только для списков (List)


List<String> list = new ArrayList<>();
// Получение итераторов
Iterator<String> iterator = list.iterator();
ListIterator<String> listIterator = list.listIterator();


ListIterator предоставляет больше возможностей, но применим только к спискам.

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

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

Основные особенности:
- Автоматическая обработка исключений (не выбрасывает IOException)
- Методы print() и println() для разных типов данных
- Возможность автоматического сброса буфера (autoFlush)
- Поддержка форматирования через printf() и format()


// Запись в файл
try (PrintWriter writer = new PrintWriter(new FileWriter("output.txt"))) {
writer.println("Привет, мир!"); // Запись строки с переносом
writer.print(42); // Запись числа без переноса
writer.printf("Число Pi: %.2f", Math.PI); // Форматированный вывод
}

// Запись в консоль
PrintWriter consoleWriter = new PrintWriter(System.out, true); // autoFlush=true
consoleWriter.println("Текст в консоль");


PrintWriter часто используется для создания текстовых файлов и форматированного вывода.

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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Хранение данных:
- Has
hMap использует хеш-таблицу, элементы хранятся без гарантии порядка.
- Tre
eMap основан на красно-черном дереве, элементы сортируются по ключам (естественный порядок или Comparator).

Производительно
сть:
- Has
hMap обеспечивает O(1) для операций put() и get() в среднем случае.
- Tre
eMap имеет O(log n) для этих операций из-за необходимости поддерживать упорядоченность.

Дополнительные возможно
сти:
- Tre
eMap предоставляет методы для работы с отсортированными данными (firstKey(), lastKey(), headMap(), tailMap()).
- Has
hMap позволяет использовать null в качестве ключа и значения, TreeMap — только в качестве значения.


Map<String, Integer> hashMap = new HashMap<>();
hashMap.put("key", 1); // порядок не гарантируется

Map<String, Integer> treeMap = new TreeMap<>();
treeMap.put("key", 1); // автоматическая сортировка


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

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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Автоматическая буферизация:
PrintWriter оборачивает выходные потоки, уменьшая количество операций ввода-вывода за счет буферизации.

Удобные методы записи:
Поддерживает методы print(), println(), printf() для простого форматированного вывода данных.

Гибкость работы с разными источниками:
Может писать в OutputStream (байтовые потоки) или Writer (символьные потоки), включая файлы, сокеты и консоль.

Обработка ошибок:
Автоматически проверяет ошибки через checkError(), упрощая отладку.


PrintWriter writer = new PrintWriter("output.txt");
writer.println("Text"); // запись с переводом строки
writer.printf("Formatted: %d", 123); // форматированный вывод
writer.close();


Используется для удобного и эффективного вывода текстовых данных.

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

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