Вопрос проверяет понимание thread-safety и умение отличать стандартные классы, не предназначенные для работы в многопоточной среде.
Многие классы стандартной библиотеки Java по умолчанию не являются потоконебезопасными.
Они не защищают своё состояние от одновременного доступа.
При использовании из нескольких потоков возможны гонки данных.
Для корректной работы требуется внешняя синхронизация.
Это осознанное дизайнерское решение ради производительности.
Важно понимать, что «непотокобезопасный» не значит «плохой».
Потоконебезопасный класс — это класс, корректная работа которого не гарантируется при одновременном доступе из нескольких потоков без синхронизации.
Чаще всего на собеседованиях ожидают следующие ответы:
ArrayList
HashMap
HashSet
LinkedList
StringBuilder
SimpleDateFormat
Причины:
отсутствие внутренней синхронизации
ориентация на однопоточные сценарии
минимальные накладные расходы
Варианты:
внешняя синхронизация (synchronized)
потокобезопасные аналоги (ConcurrentHashMap)
неизменяемые структуры
Большинство базовых коллекций Java не потокобезопасны и требуют осознанного использования в многопоточной среде.