Загрузка…
Загрузка…
backend / middle / tech_deep
Формат
online
Стадия
tech_deep
Когда
within_quarter
Длительность
90 мин
01
Теория
Какие есть новые фичи в Java (нововведения последних версий языка)?
Кандидат рассказал про var (local variable type inference) и про structured concurrency. Вопрос на проверку интереса к новинкам языка.
02
Теория
Какая разница между стеком и хипом (stack и heap)?
Затронули также сборщик мусора (garbage collector) и выделение памяти JVM.
03
Теория
Где хранятся объекты в Java?
04
Теория
Где хранятся примитивные типы данных, и где хранятся примитивные поля, если они являются членами объекта?
Вопрос с подвохом: примитивы в стеке, но примитивные поля объекта хранятся в хипе вместе с объектом.
05
Теория
Зачем нужен класс Object в Java?
06
Теория
Какие методы есть в классе Object?
07
Теория
Расскажите про метод toString (зачем он нужен и почему его переопределяют)?
08
Теория
Расскажите про методы equals и hashCode (зачем нужны, когда переопределять)?
Обсудили reference-сравнение vs сравнение по состоянию, применение в хеш-коллекциях.
09
Теория
В чём заключается контракт между equals и hashCode?
Если объекты равны по equals — у них одинаковый hashCode; одинаковый hashCode не гарантирует равенства.
10
Теория
В чём заключаются различия между интерфейсами Iterable и Iterator?
Затронули цикл for-each и то, что Iterator — это шаблон проектирования.
11
Теория
Что такое fail-fast?
Исключение при модификации коллекции во время обхода, modCount.
12
Теория
Какие коллекции для многопоточного программирования вы знаете?
Ожидались современные решения из java.util.concurrent: ConcurrentHashMap, CopyOnWriteArrayList.
13
Теория
Что такое атомарность и консистентность (согласованность данных) в многопоточном программировании?
14
Теория
Объясните принцип happens-before.
Затронули race condition.
15
Теория
В чём проблема ключевого слова synchronized?
Блокировка вырождает параллельность в линейность; есть более современные средства в java.util.concurrent.
16
Теория
Какие основные преимущества Spring Boot?
Executable jar, BOM (управление версиями зависимостей), стартеры и автоконфигурация, централизованная конфигурация application.yml/properties.
17
Теория
Как провалидировать входные данные со стороны клиента в Spring?
Jakarta/javax валидация бинов, аннотации @Email, @Max, @Pattern, @NotNull и т.д., кастомные аннотации; валидация query-параметров и тела запроса.
18
Теория
В чём различие между реактивным и нереактивным веб-приложением в Spring?
Вопрос с подвохом: DispatcherServlet (сервлеты) vs WebHandler для реактивного программирования, нюансы развертывания.
19
Теория
Что такое Docker и какова его цель?
Изолированная среда, масштабирование, микросервисы.
20
Теория
В чём различие между Dockerfile и docker-compose?
21
Теория
Что такое Docker image и Docker container, в чём их различие?
Аналогия: image — класс, container — объект/процесс.
22
Теория
В чём различие между командами COPY и ADD в Dockerfile?
ADD дополнительно умеет скачивать удалённые ресурсы по URL.
23
Теория
Что такое мониторинг и observability в микросервисной архитектуре?
Метрики, алерты, Spring Boot Actuator, формат Prometheus, Grafana, AWS CloudWatch.
24
Теория
Что такое трассирование запросов (trace id) в микросервисах?
Сбор логов одного запроса через цепочку микросервисов по уникальному идентификатору.
Заметки
Разбор реального технического интервью на позицию Middle Java Developer (запись с YouTube-канала JitBit / Макс Добрынин). Работодатель — логистическая компания (название не указано), бизнес по континентальной Европе и Азии. Удалённая работа, требуется Java-разработчик с опытом 2-3 года, знание баз данных, основ микросервисной архитектуры, Docker и сборки приложений. Интервью покрывало темы: новинки Java, JVM/память, класс Object, коллекции, многопоточность, Spring Boot, Docker, микросервисы. По многопоточности кандидат показал слабые познания, поэтому вопросов было немного.
Подготовка
Интересоваться нововведениями языка Java (var, structured concurrency). Знать устройство памяти JVM (stack/heap, GC). Уметь объяснять контракт equals/hashCode. Читать документацию к интерфейсам и реализациям коллекций, особенно для многопоточной среды. Знать базовые команды и концепции Docker. Начинать подготовку по микросервисам с базовых тем (мониторинг, observability, трассировка), а не со сложных паттернов вроде Saga.
Стиль интервьюера
Интервьюер (Макс Добрынин) ведёт интервью по записной книжке, идёт от простых вопросов к сложным, даёт кандидату много говорить, использует вопросы для оценки кругозора и интереса к технологиям, а не только знаний. Адаптирует глубину под уровень кандидата (по многопоточности не углублялся, видя слабые знания). Считает нормальной длительностью интервью 60-90 минут.