Загрузка…
Загрузка…
backend / junior / tech_deep
Формат
online
Стадия
tech_deep
Когда
within_quarter
Длительность
60 мин
01
Поведенческий
Расскажи о своем текущем опыте, проектах, на которых работал, стеке технологий и о том, что входило в твои обязанности.
02
Теория
Какие есть плюсы у микросервисов перед монолитом?
03
Теория
Какие минусы у микросервисов?
Интервьюер просил назвать дополнительные минусы.
04
Теория
Слышал ли ты про проблему с транзакционностью у микросервисов?
05
Теория
Заметки
Собеседование на позицию Java Junior разработчик в компанию Андерсен, проводил действующий Java-разработчик Юрий, кандидат — Виталий. Опыт кандидата около года коммерческой разработки на Java, последний проект — CRM/бот для корпоративных клиентов (личный кабинет), команда ~7 человек, работа по Scrum. Стек: Java 11, Spring, Spring Cloud (Gateway, проксирование), Spring Batch, Hibernate/JPA, PostgreSQL, Bitbucket, частично Jenkins, OpenSearch, миграция монолита на микросервисы. CI/CD почти не было (деплой руками). По итогу интервьюер однозначно рекомендует кандидата на позицию Junior Java разработчик.
Подготовка
Глубоко знать внутреннее устройство коллекций (ArrayList, HashMap, треефикация бакетов), области памяти JVM, многопоточность (volatile, happens-before, ForkJoinPool, java.util.concurrent), Spring (IoC/DI, прокси JDK vs CGLIB, scope бинов, циклические зависимости, Spring Boot, Spring Cloud), JPA/Hibernate (стратегии наследования, требования к entity), JDBC и защиту от SQL-инъекций, индексы и нормальные формы БД, паттерны (GoF, Circuit Breaker, Saga), а также HTTP/HTTPS и TLS. Полезно уметь связывать теорию с практикой проекта.
Стиль интервьюера
Интервьюер ведёт собеседование структурированно по темам, начиная с опыта и плавно переходя от микросервисов и SOLID к коллекциям, многопоточности, Spring, JPA, БД и REST. Часто задаёт уточняющие follow-up вопросы и постепенно усложняет/упрощает вопрос в зависимости от ответа. Доброжелателен, в конце даёт кандидату задать свои вопросы и подробно рассказывает о грейдах и росте в компании.
Какие ты знаешь способы обойти проблему транзакционности в микросервисах?
06
Теория
Слышал ли ты про паттерн Сага? Чем отличаются оркестрация и хореография?
07
Теория
Есть суперкласс Птица с методом летать и подкласс Пингвин — нарушение какого принципа SOLID здесь будет?
Ответ — принцип подстановки Барбары Лисков (LSP).
08
Поведенческий
Как у вас на проекте обстояло дело с CI/CD?
09
Кейс
У вас две ветки — dev и master. Ты залил свою фичу в dev, после этого кто-то накидал сверху коммиты, которые сломали dev, а твою рабочую фичу надо переместить в релиз. Как это можно сделать?
Ответ — cherry-pick / починить dev / откатить force-push.
10
Теория
С какими паттернами проектирования ты знаком?
11
Теория
Расскажи про паттерн Proxy — что это за паттерн?
12
Теория
С помощью чего создаются прокси в Spring?
13
Теория
Какой из видов прокси (Dynamic Proxy или CGLIB) Spring использует сейчас по умолчанию и почему?
14
Теория
В каких случаях ты бы выбрал абстрактный класс, а в каких интерфейс?
15
Поведенческий
Использовались ли на проектах инструменты мониторинга и траблшутинга, как отслеживали проблемы?
16
Теория
Знаком ли ты с ELK-стеком (Elasticsearch/Logstash/Kibana)?
17
Теория
Какие структуры данных ты чаще всего использовал на практике?
18
Теория
Чем отличаются Set и List?
19
Теория
Как ArrayList расширяется сам?
20
Теория
Почему ArrayList не может просто расширить существующий массив, а вынужден создавать новый и копировать элементы?
21
Теория
Какая сложность операций у ArrayList и LinkedList?
22
Теория
Как работает HashMap под капотом, когда мы пытаемся вставить элемент?
23
Теория
Что происходит со списком в бакете HashMap (преобразование LinkedList в дерево после 8 элементов)?
24
Теория
Зачем нужна треефикация бакета в HashMap (как меняется сложность поиска: лучший/средний/худший случай)?
25
Теория
Может ли ключ в HashMap быть null?
26
Теория
Есть ли какие-то рекомендации для ключей в HashMap (про неизменяемость ключей)?
27
Теория
Как ты понимаешь термин иммутабельность? Как сделать класс неизменяемым?
28
Поведенческий
Как у вас на проектах обрабатывались исключения?
29
Теория
Какие есть группы исключений (проверяемые и непроверяемые), как устроена иерархия?
Уточнение про Throwable.
30
Теория
Использовал ли ты try-with-resources? Как он работает?
31
Теория
Есть параметризованная коллекция с конструкцией wildcard <? extends Number> — чем её можно параметризовать?
Followup про наследников Number и обёртки/примитивы.
32
Теория
Какие есть виды операций у Stream API?
33
Теория
Чем параллельные стримы отличаются от обычных?
34
Теория
Если запустить parallelStream и после него forEachOrdered — будет ли гарантирован порядок?
35
Теория
Что ты можешь рассказать про ForkJoinPool?
36
Теория
Что такое Executor и какие executor-сервисы ты ещё знаешь?
37
Теория
С чем из пакета java.util.concurrent ты знаком (атомики, синхронизаторы, concurrent-коллекции)?
38
Теория
Знакомо ли тебе ключевое слово volatile, в чём его суть?
39
Теория
Что за общая память, в которую записывается volatile-переменная (про кэши ядер)?
40
Теория
Какие области памяти в JVM ты знаешь?
41
Теория
Где хранится пул строк (String pool)?
42
Теория
Слышал ли про пул Integer (кэш Integer), где он находится?
43
Теория
В чём основная концепция Spring?
Followup про принципы DI/IoC.
44
Теория
Что из себя представляет контейнер Spring?
45
Теория
Все ли бины попадают в контейнер (учитывая скоупы, например prototype)?
46
Теория
Чем отличаются аннотации @Component, @Service, @Repository, @Controller?
47
Теория
В каких случаях стоит использовать аннотацию @Bean?
48
Теория
Слышал ли про циклические зависимости, от чего они и как от них спастись (через конструктор)?
49
Теория
Чем Spring Boot отличается от Spring Core?
50
Теория
Доводилось ли писать пользовательские стартеры или знаешь, как это сделать?