Contents

Основные вопросы с java собеседований

Note

Весь исходный код доступен на github

Полный список тем для изучения на java ссылка

Первая часть видео о вопросах с интервью

Вопросы первой части

  • Примитивы и сравнение по значению
  • Как работает HashMap
    • Особенность работы с плохим распределением ключей
    • Работает ли equals
  • Optional
    • of
    • ofNullable
  • ThreadLocal
  • Иерархия фреймворка коллекций
  • Иерархия исключение, разница
  • Жизненный цикл бинов в спринге
  • @ConditionalOn…
  • Что такое докер и как работает
    • Особенности на разных ос
    • Почему не виртуалка на линуксе
  • Стримы
    • Как их писать
    • Какие функции знаешь
    • Стримы примитивов
    • Типы операций
    • Как работают
    • Ленивость
  • try-with-resource
  • try-catch-finally-return invalid

Вторая часть видео о вопросах с интервью

Вопросы второй части

  • Про бины, конфигурации, контексты, скоупы
    • Популярный вопрос про скоупы бинов и что они дают
  • Прокси, AOP
    • Как работает аннотация transactional под капотом
    • Как использовать транзакции в приватных методах
    • Self-inject на примере
    • Проблемы долгих транзакций
  • Ивенты и обработчики в спринге
    • Простейший листенер встроенных ивентов
  • Сборщики maven и другие, общие слова и bom как способ управления версиями
  • Многопоточка
    • Классическая проблема суммы
    • Проблемы тестирования многопоточки
    • Добавляем volatile, почему не поможет
    • Atomic*, cas алгоритмы
    • Зачем реально volatile, happens before
    • Способы запуска потоков, в чем разница
    • Порядок не гарантирован

Третья часть видео о вопросах с интервью

Вопросы третьей части

  • Параллельные стримы, когда они не параллельные
    • Что будет при падаении операции
  • Блокировки, synchronized, ReadWriteLocks, atomics
    • Когда выбрать Lock
    • Когда выбирать synchronized
    • Когда выбирать ReadWriteLock
    • Когда выбирать Atomic
  • Happens before, концепция, что значит простыми словами
    • Запись в final, начало потока
  • Большой раздел про дедлоки
    • Простейший способ получить дедлок
    • Thread dump для поиска дедлоков
    • Простейший анализ дампа
    • Получение дедлока на CyclicBarrier
    • Запаркованные треды
  • Как делать вложенные блокировки правильно
    • Захват вложенных блокировок через tryLock, возможный механизм предотвращения дедлока
  • Ввод вывод в java. IO и NIO, различия
  • Про работу с HTTP клиентами
    • Про RestTemplate, самое важное что надо знать
    • Про мониторинг RestTemplate
    • Про разгон Http клиента, keepAlive
    • Пулл потоков для клиента
    • Рассказываю реальную проблему при плохой настройке
  • Хитрости прокси (Spring AOP)
    • Циклические зависимости - это плохо, но как это работает
    • Сочетание нескольких прокси Async + Transactional, какое правило надо знать
  • Вопросы на общие темы
    • Какие проблемы можно встретить в логировании
    • Как не завалить внешнюю систему логами
  • Реальный вопрос про реализацию собственного кэша
    • Проблема сампоисных кэшей
    • Какие готовые решения есть для кэша, как разорвать этот вопрос