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