Технические вопросы 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 не будет опубликован. Обязательные поля помечены *