Технические вопросы Java Core на собеседовании


Вопросы по основам Java встречаются практически на каждом собеседовании.

## == и equals()

**Вопрос:** В чём разница между == и equals()?

**Ответ:** == сравнивает ссылки, а equals() сравнивает содержимое объекта. Для строк важно понимать пул строк.

«`java
String a = «hello»;
String b = «hello»;
String c = new String(«hello»);

a == b // true — один объект из пула
a == c // false — разные объекты
a.equals(b) // true
a.equals(c) // true
«`

## Autoboxing и unboxing

Автобоксинг — автоматическое преобразование примитивов в объекты (int → Integer). Важно понимать, что это создаёт объекты в памяти.

«`java
Integer a = 100; // autoboxing
int b = a; // unboxing
«`

Integer кэширует значения от -128 до 127.

## Collection

**Что выбрать:** List, Set или Map?

— List — упорядоченная коллекция с дубликатами (ArrayList, LinkedList)
— Set — уникальные элементы (HashSet, TreeSet)
— Map — ключ-значение (HashMap, TreeMap)

**ArrayList vs LinkedList:**
— ArrayList — быстрый доступ по индексу, медленные вставки
— LinkedList — быстрые вставки, медленный доступ

## Multithreading

**Synchronized vs Lock:**
— synchronized — встроенный, простой
— Lock — более гибкий (tryLock, lockInterruptibly)

**Volatile:** обеспечивает видимость изменений между потоками, не атомарность.

**Thread states:** NEW, RUNNABLE, BLOCKED, WAITING, TERMINATED.

**Читайте также:**


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *