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
📌 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
🛑 Comparator — это интерфейс, используемый для сравнения двух объектов. Он позволяет задать пользовательский порядок сортировки для объектов, которые не поддерживают естественный порядок (не реализуют Comparable).


Comparator<String> lengthComparator = (s1, s2) -> s1.length() - s2.length();


Здесь создается Comparator, который сравнивает строки по их длине. Лямбда-выражение принимает две строки и возвращает разницу их длин.

Compar
ator часто используется в методах сортировки:


List<String> list = Arrays.asList("apple", "banana", "cherry");
list.sort(lengthComparator);


В этом примере список строк сортируется по длине с использованием созданного Comparator.

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

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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
RuntimeException — это unchecked-исключение, которое не требует обязательного объявления в сигнатуре метода или обработки через try-catch. Оно используется для ошибок, которые могут возникнуть во время выполнения программы, таких как NullPointerException, IllegalArgumentException или ArrayIndexOutOfBoundsException.


public void divide(int a, int b) {
if (b == 0) {
throw new IllegalArgumentException("Divisor cannot be zero");
}
System.out.println(a / b);
}


В примере выбрасывается RuntimeException, если делитель равен нулю. Такие исключения обычно указывают на ошибки в логике программы.

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

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

Java собеседования
👍71
➡️ Функция представляет собой блок кода, который выполняет определённую задачу и может быть вызван по имени. Функции определяются с использованием ключевого слова void, если они не возвращают значение, или с указанием типа возвращаемого значения.


int add(int a, int b) {
return a + b;
}


Функции могут принимать параметры и возвращать результат. Они используются для организации кода, устранения дублирования и улучшения читаемости.


void printMessage(String message) {
System.out.println(message);
}


Функции могут быть статическими, если принадлежат классу, а не экземпляру, и вызываться без создания объекта.


class MathUtils {
static int multiply(int a, int b) {
return a * b;
}
}


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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤔1
filter используется для отбора элементов коллекции, удовлетворяющих определённому условию, возвращая только те элементы, которые соответствуют предикату. map преобразует каждый элемент коллекции в другой объект, применяя к нему заданную функцию, и возвращает новую коллекцию с результатами преобразования.

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
🔹REST и SOAP — это два подхода к созданию веб-сервисов. REST основан на архитектурных принципах, использует стандартные HTTP-методы (GET, POST, PUT, DELETE) и работает с данными в форматах JSON, XML или других. SOAP — это протокол, который строго определяет структуру сообщений в XML и требует использования WSDL для описания сервисов.

🔹REST легче в реализации и интеграции, так как он более гибкий и использует стандартные веб-технологии. SOAP, напротив, более строгий и безопасный, поддерживает встроенные механизмы для транзакций и безопасности (WS-Security). Выбор между ними зависит от требований проекта.

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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101
Iterator — это объект, который позволяет последовательно обходить элементы коллекции без необходимости знать её внутреннюю структуру. Он предоставляет методы для проверки наличия следующего элемента (hasNext) и его получения (next), что делает обход коллекции удобным и безопасным.

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
➡️ HashSet и TreeSet — это реализации интерфейса Set, но с разными характеристиками.

HashSet хранит элементы в хэш-таблице, обеспечивая вставку и поиск за O(1) в среднем случае. Порядок элементов не гарантируется.


Set<String> hashSet = new HashSet<>();
hashSet.add("apple");
hashSet.add("banana");


TreeSet использует красно-черное дерево для хранения элементов, обеспечивая вставку и поиск за O(log n). Элементы хранятся в отсортированном порядке.


Set<String> treeSet = new TreeSet<>();
treeSet.add("apple");
treeSet.add("banana");


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

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

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


public void methodA() {
methodB(); // Вызов methodB
}

public void methodB() {
methodC(); // Вызов methodC
}

public void methodC() {
throw new RuntimeException("Error in methodC"); // Исключение
}


При возникновении исключения стек вызовов показывает цепочку методов, которые привели к ошибке. Например, если исключение произошло в methodC, стек будет выглядеть так:


methodC
methodB
methodA


Это помогает определить, где именно возникла ошибка и как программа дошла до этого момента.

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

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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
🪅 Методы default и static в интерфейсах позволяют добавлять реализацию методов непосредственно в интерфейс. Это расширяет функциональность интерфейсов без нарушения обратной совместимости.


interface Example {
void abstractMethod();

default void defaultMethod() {
System.out.println("Default implementation");
}

static void staticMethod() {
System.out.println("Static method in interface");
}
}


Метод default предоставляет реализацию по умолчанию, которую можно переопределить в классах. Метод static позволяет добавлять утилитарные методы, которые вызываются через интерфейс, а не через экземпляр класса. Это упрощает расширение интерфейсов и уменьшает дублирование кода.

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

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91
Микросервисная архитектура — это подход к разработке приложений, при котором система разбивается на небольшие независимые сервисы, каждый из которых выполняет определённую бизнес-задачу. Сервисы взаимодействуют через API, что позволяет разрабатывать, тестировать и масштабировать их независимо друг от друга.

✈️ Java собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
▶️Конструкции if-else используются для выполнения кода на основе условий. Основные правила включают:

- Условие в if должно быть булевым выражением.
- Блок else не обязателен и выполняется, если условие в if ложно.
- Можно использовать else if для проверки нескольких условий последовательно.


int x = 10;
if (x > 0) {
// выполняется, если x больше 0
} else if (x < 0) {
// выполняется, если x меньше 0
} else {
// выполняется, если x равно 0
}


- Фигурные скобки {} обязательны, если блок содержит более одной строки кода.
- Для улучшения читаемости рекомендуется избегать вложенных if-else и использовать ранний возврат или тернарные операторы, где это уместно.

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

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

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