> Чтобы сэкономить нам обоим время, предлагаю договориться так: если в какой-то момент собеседования я пойму, что вы точно не подходите, или вы поймёте, что мы вам точно не подходим, озвучиваем этот момент сразу, даже если это произойдёт через несколько минут после начала нашей беседы.
- Представь, что у нас есть транзакционный метод. В этом методе мы находим запись в БД по id и меняем поле флага, потом идем в другой сервис. Сервис нам может вернуть либо true, либо false. Если false, то мы должны вернуть флаг в изначальное состояние. Разработчик решил бросать исключение, чтобы транзакция откатила эти изменения.
- [ ] Что часто используют для сортировки коллекции?
- [ ] Что важнее `Comparable` или **Comparator** при использовании в `TreeSet`?
- **Middle**
- Слышал про `Spliterator`?
#### ArrayList и LinkedList
- **Junior**
- [ ] Можешь коротко рассказать про устройство `ArrayList`?
- [ ] Можешь коротко рассказать про устройство `LinkedList`?
- **Middle**
- [ ] Доводилось ли работать с реализациями `List`, кроме `ArrayList` и `LinkedList`
#### HashMap
- **Junior**
- [ ] Что такое `Map`?
- [ ] Может ли `null` быть ключом в `HashMap`?
- **Middle**
- [ ] Можешь коротко описать как происходит добавление в `HashMap`?
- [ ] Какая ожидаемая скорость доступа к элементу по ключу в `HashMap`?
- [ ] Почему `String` это хороший выбор для ключа?
- [ ] Что может ухудшить сложность доступа?
- [ ] Есть ли какая-то защита от ухудшения сложности доступа?
- [ ] [Задача 4](Задача%204.md)
- [ ] [Задача 13](Задача%2013.md)
#### HashSet
- [ ] Можешь коротко рассказать про устройство HashSet?
### Stream API
- **Junior**
- [ ] Знаешь что такое Stream API?
- [ ]У Stream API методы могут быть двух типов, какие это типы?
- [ ] Сможешь назвать какие-нибудь методы, а также их тип?
- [ ] Можешь сказать в чем отличие методов `map()` от `flatMap()`?
- [ ] [Задача 7](Задача%207.md)
- [ ] Можно ли собрать результаты стрима в `Map`?
- [ ]А можно ли собрать результаты стрима в строку?
## Многопоточность
* [ ]А в чем отличие Parallel от Concurrent?
* [ ] Что такое блокировка и как она работает в Java?
* [ ] Расскажи о потокобезопасных коллекциях.
* [ ] Как работают и когда использовать `Callable` и `Future`?
* [ ] Объясните разницу между методами `wait()` и `sleep()`.
* [ ]~~Что такое «монитор» в Java?~~
* [ ]У стримов есть метод `parallel()`. Знаешь как он под капотом работает?
* [ ]А есть ли проблема в этой реализации?
* [ ] Можешь рассказать про `ForkJoinPool`? Какая у него особенность?
* [ ] Что называют состоянием гонки?
* [ ] Что такое исполнительские сервисы (Executor Services) в Java?
* [ ] Расскажи про ключевое слово `volatile`
* [ ] Можешь рассказать что такое DeadLock:
* [ ]А как обнаружить DeadLock?
* [ ]А как не допускать DeadLock?
* [ ] Слышал что-нибудь про LiveLock?
## Секция работы с данными
### Базы данных и SQL
- [ ] Что такое «нормализация»?
- [ ] Что такое «денормализация»? Для чего она применяется?
- [ ] Что такое точка сохранения?
- [ ]~~Что такое оконная функция?~~
- **Senior**
- [ ] Какие знаешь способы для ускорения запросов к БД?
- [ ] Использование индексов
- [ ] Кэширование результатов на стороне приложения
- [ ] Анализ плана выполнения запроса
- [ ] Денормализация
- [ ] Пакетная обработка
### Java
- [ ] Объясни принцип работы [JDBC](JDBC.md)?
### Hibernate
- [ ] Что такое JPA и в чем его преимущества?
- [ ] Можешь рассказать про основные компоненты Hibernate и за что они отвечают?
- [ ] Сможешь рассказать, в каких [состояниях может находиться объект](Жизненный%20цикл%20объекта%20Hibernate.md), который отслеживает Hibernate и переходы между этими состояниями?
- [ ] Что Hibernate использует под капотом для доступа к БД? JDBC или что-то свое?
- [ ] Что можешь рассказать про уровни кэша в Hibernate?
- Кэш первого уровня. Используется в рамках одной и той же сессии Hibernate.
### Транзакции
- [ ] Назовешь какими [свойствами](Свойства%20транзакции%20БД%20(ACID).md) должны обладать транзакции БД?
- [ ] Какие [проблемы](Проблемы%20при%20параллельном%20выполнении%20нескольких%20транзакций.md) могут возникать при параллельном доступе с использованием транзакции?
* [ ] Как можно решить эти проблемы?
* Какие существуют [уровни изоляций транзакций БД](Уровни%20изоляций%20транзакций%20БД.md)?
* [ ] [Задача 15](Задача%2015.md)
## Реактивная разработка
- [ ] Доводилось работать с реактивным стеком?
- [ ] Можешь описать в чем суть реактивной разработки?
- [ ] Что такое блокирующие операции? Сможешь привести примеры?
- [ ] Есть ли какая-то проблема с`ThreadLocal` при реактивном подходе?
- [ ] Что такое [Event Loop](Event%20Loop.md)?
## Фреймворки
### Spring
- **Junior**
- [ ] Как можно создать бин из чужой библиотеки?
- **Middle**
* [ ] Есть ли смысл делать интерфейс для сервиса?
* [Создание прокси-объектов в SpringBoot](Создание%20прокси-объектов%20в%20SpringBoot.md)
- [ ] Как работает стартер?
- [ ] Как можно реализовать пагинацию в SpringBoot?
- [ ] Знаешь какие запросы генерируются для выполнения такой пагинации?
- [ ]А в чем проблема этого запроса?
- [ ] Есть ли какой-то другой способ пагинации?
### Quarkus
- [ ] Как тебе работа с кваркусом?
- [ ] Какие проблемы встречал при работе с кваркусом?
- [ ] Есть ли смысл работать с`Optional` в `Uni`?
- [ ] [Задача 18](Задача%2018.md)
- [ ] [Задача 19](Задача%2019.md)
- [ ] Какие есть особенности, если необходимо [выполнить](Выполнение%20блокирующего%20кода%20в%20реактивном%20потоке.md) блокирующий код?
- [ ] Как можно [перейти из реактивного стиля в императивный](Переход%20из%20реактивного%20стиля%20в%20императивный.md)?
- [ ] Чем метод `invoke()` отличается от метода `call()`?
- [ ] Что можно предпринять при вызове другого микросервиса, чтобы избежать кратковременную недоступность этого сервиса?
- [ ]У нас есть два разных сервиса с эндпойнтами, которые отдают какую-то информацию о пользователе нашей системы по идентификатору. Как мы можем объединить результаты работы этих двух сервисов?
## Системы сборки
- [ ] Что такое BOM файл?
## Kafka
- [ ] Расскажи составляющие кафки
- [ ] Сообщения в кафке удаляются после прочтения?
- [ ] Влияет ли как-то количество сообщений на производительность?
- [ ] Есть ли смысл создавать консьюмер группу с количеством консьюмеров больше, чем есть партиций в топике, из которого мы будем читать?
- [ ]А что такое кафка-конект?
## Docker
- **Middle**
- [ ] Как можно дебажить приложение, которое запущено в Docker?
- [ ] Есть ли какая-нибудь проблема при горизонтальном масштабировании сервисов в WebSocket?
- [ ]В проекте понадобилось хранить файлы, что можно использовать?
- [ ] Хорошо, начали использовать S3. Кто-то предложил сделать сервис прокси, с которым будут работать все сервисы и фронт. Идет активное обсуждение этого решения. Что скажешь? Какие есть плюсы, какие минусы?
- [ ] Как отнесешься к идеи, если все сервисы в микросервисной архитектуре будут использовать единый BOM файл?
- [ ] Проблемы кэширования
- [ ] Допустим у нас есть сервис, который запускается в N репликах, какие тут есть проблемы с кэшированием?
- [ ] Что если у нас входные параметры метода это коллекция?
### Задачи по архитектуре
- [ ] Допустим у нас есть 2 сервиса. Один сервис хранит сущность «компании», другой «сделки». У нас у сделок есть идентификатор компании. Как мы на фронте можем получить сделки с именем компании.
- BFF
- Api Gateway
- Один сервис вызывает другой
- [ ] Есть приложение, которое умеет принимать какие-то запросы, к примеру, по http. Считаем, что приложение однопоточное и требуется каким-то образом сделать ограничение по запросам за ПОСЛЕДНЮЮ минуту, чтобы 100 проходило, а 101 уже нет. Как будешь реализовывать такую проверку?
- [ ] Нужно реализовать безопасность в приложении. У в проекте всё на простых сервлетах, и начальник говорит, что пишем на них и точка. Как будешь подходить к этой задаче?