Вопросы по основам 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.
—
**Читайте также:**