Вернуться в видеотеку

Собеседование Java | Backend mock interview

Mock-собеседование по Java для подготовки к Junior/Middle-вопросам: от equals/hashCode и JVM до Spring, ACID и изоляции транзакций.

Источник: Павел Сорокин

Открыть на YouTube

Таймлайн

Коротко о видео

Автор проводит mock-собеседование Java-разработчика с Дмитрием, который говорит, что готовится искать первую работу. Вопросы охватывают Java Core, сборщик мусора, строки и коллекции, многопоточность, Spring и транзакции в базах данных; интервьюер уточняет и корректирует отдельные ответы кандидата. В конце подробно разбираются ACID, уровни изоляции и аномалии параллельных транзакций.

Затронутые темы

Что взять на заметку

  • Контракт equals/hashCode требует, чтобы равные по equals объекты имели одинаковый hashCode; изменяемые поля ключа HashMap могут сделать ключ недоступным при поиске.
  • Garbage Collector определяет живые объекты обходом графа от GC Roots: ссылок со стеков потоков, статических полей, загруженных классов и других корней.
  • String Pool хранит строковые литералы; результат конкатенации значений во время выполнения можно явно добавить в пул через intern(). Для накопления строк подходят StringBuilder, а StringBuffer нужен при требуемой потокобезопасности.
  • ArrayList обеспечивает доступ по индексу за O(1), но вставка в начало или середину требует сдвига элементов; LinkedList быстро вставляет элемент при уже найденной ноде, но поиск позиции остаётся O(n).
  • Для предотвращения deadlock следует задавать единый порядок захвата нескольких блокировок; таймаут лишь помогает выйти из ситуации, но не устраняет её причину.
  • volatile даёт видимость изменений и отношение happens-before, но инкремент счётчика не делает атомарным; AtomicInteger использует атомарное compare-and-swap.
  • В Spring рассматриваются IoC и Dependency Injection через конструктор, сеттер или поле; Spring Boot упрощает подключение согласованных зависимостей стартерами и автоконфигурацией.
  • ACID задаёт требования к транзакциям, а уровни изоляции выбираются как компромисс между параллелизмом и риском аномалий, включая dirty read, non-repeatable read и phantom read.

Рекомендуем посмотреть