Мок-интервью Java-разработчика: многопоточность и PostgreSQL
Кандидат решает задачу на deadlock и отвечает на вопросы о синхронизации, Singleton и потоках Java. Затем интервьюер проверяет знания PostgreSQL: индексы, транзакции, MVCC и WAL.
- Опубликовано на YouTube:
- Просмотры на YouTube: 2,5 тыс.
- Лайки на YouTube: 27
Таймлайн
Коротко о видео
Открытое мок-интервью с Java-разработчиком начинается с обсуждения опыта и live-coding задачи на взаимную блокировку двух локов. Кандидат ищет способ задать единый порядок захвата, разбирает коллизии hashCode, race condition, volatile, AtomicInteger и синхронизацию статических данных. Далее обсуждается double-checked locking Singleton и пулы потоков. Большой блок посвящён PostgreSQL: выбору B-tree и hash-индексов, селективности, EXPLAIN ANALYZE, ACID, аномалиям транзакций, уровням изоляции, MVCC, VACUUM и WAL. В конце затрагиваются SQL-команды и Saga, затем интервьюер даёт кандидату фидбэк и оценивает его как Middle–Middle+ с перспективой роста. После основной части есть реклама и вопросы зрителей.
Затронутые темы
Что взять на заметку
- Для предотвращения deadlock нужен единый порядок захвата локов, а случай равных hashCode требует отдельного tie-breaker.
- volatile обеспечивает видимость, но не делает составное изменение атомарным; для этого используют синхронизацию или CAS-операции.
- Double-checked locking Singleton требует корректной синхронизации и volatile-ссылки на экземпляр.
- Выбор индекса в PostgreSQL нужно проверять по селективности и плану запроса, а не делать только по названию поля.
- MVCC даёт снимки данных для конкурентной работы, но требует учитывать накопление мёртвых версий и VACUUM.