У нас класс, в нём два метода. Над каждым стоит @Transactional propagation REQUIRES_NEW, и мы из первого метода вызываем второй. Сколько транзакций откроется?
Писал ли Spring Boot стартер? Зачем? С какими особенностями столкнулся?
Как работает HashMap: бакеты, хэш-функция, коллизии, LinkedList и красно-чёрное дерево внутри?
Проводили ли тестирование своего кода? Какой был процент покрытия?
Какие бывают исключения в Java? Checked и unchecked.
Расскажи об интересной задаче, которой ты гордишься
В чём основная причина некорректного поведения кода Нарушена иммутабельность объектов Не обрабатывается состояние прерывания Ухудшение производительности из-за блокировки Конфликт объектов блокировки приводит к тупиковой ситуации Избыточная синхронизация ресурсов Неинициализированные состояния объектовimport java.util.concurrent.*; class Competition { private final Object lock = new Object(); public void syncMethodA(Competition competitor) { synchronized (lock) { try { Thread.sleep(100); } catch (InterruptedException e) {} competitor.syncMethodB(this); } } public void syncMethodB(Competition competitor) { synchronized (lock) { try { Thread.sleep(100); } catch (InterruptedException e) {} competitor.syncMethodA(this); } } } public class FitnessApp { public static void main(String[] args) { Competition comp1 = new Competition(); Competition comp2 = new Competition(); Thread t1 = new Thread(() -> comp1.syncMethodA(comp2)); Thread t2 = new Thread(() -> comp2.syncMethodB(comp1)); t1.start(); t2.start(); } }
Прочитайте код и подсчитайте ошибки ```java @Component public class AuthorSearchService { @Autowired private AuthorRepository authorRepository; @Autowired private StatisticsRepository statisticsRepository; private AlertRestClient arc = new AlertRestClient(); // В query может быть как полностью ввд, так и часть имени, например "Вадим Павло" или "павло" @Transactional public List<Author> search(String query) { List<Author> authors = authorRepository.findByNameContainingIgnoreCase(query); Statistics s = statisticsRepository.findById(query).orElse(null); if (s == null) s = new Statistics(query); s.setNumbers(s.getNumbers() + 1); statisticsRepository.save(s); if (s.getNumbers() > 1000 && authors.size() > 1000) { System.out.println("too popular search with too much data, sending an alert..."); arc.send(query, s.getNumbers(), authors.size()); } return authors; } } @Entity @Data public class Author { @Id @GeneratedValue private Long id; private String name; @OneToMany(mappedBy = "author") private List<Book> books; public Author(String name) { this.name = name; } } ```
Есть бэкенд, есть юай. Стек стандартный: Java, Spring, React, Postgres. Задача: Спроектировать рест-эндпоинт в котором надо взять данные из 3 источников и отдать на ui, при этом необходимо обеспечить максимально возможную пропускную способность и минимально возможное время отклика (критерии макс\мин исходя из наших конкретных условий, т.к. по сути, у нас тут нет серебряной пули и надо найти некий компромисс). Известно, что ожидаемый пиковый rps на этот рест-эндпоинт будет равен 200. Известные детали по источникам: 1 источник - наша бд, запрос около 15 сек. 2 источник - смежный сервис рест, деградирует до 2 минут при 100 rps на него, в норм режиме ответ отдает за 5 сек. Мы не можем как-то изменить поведение этого источника на их стороне. 3 источник - смежный сервис рест, рандомно (каких-либо паттернов такого поведения не удалось выяснить) отдает 503, в норм режиме ответ приходит за 10 сек. Мы не можем как-то изменить поведение этого источника на их стороне.
Выбери шаблон проектирования для системы логирования (в БД, текстовый файл, через запрос)
Есть бэк, есть юай. Стек стандартный: Java, Spring, React, Postgres. Задача: Спроектировать рест-ендпоинт в котором надо взять данные из 3 источников и отдать на ui, при этом необходимо обеспечить максимально возможную пропускную способность и минимально возможное время отклика (критерии макс\мин исходя из наших конкретных условий, т.к. по сути, у нас тут нет серебряной пули и надо найти некий компромисс). Известно, что ожидаемый пиковый rps на этот рест-ендпоинт будет равен 200. Известные детали по источникам: 1 источник - наша бд, запрос около 3 сек. 2 источник - смежный сервис рест, деградирует до 2 минут при 100 rps на него, в норм режиме ответ отдает за 5 сек. Мы не можем как-то изменить поведение этого источника на их стороне. 3 источник - смежный сервис рест, рандомно (каких-либо паттернов такого поведения не удалось выяснить) отдает 503, в норм режиме ответ приходит за 10 сек. Мы не можем как-то изменить поведение этого источника на их стороне.
Как у вас процессы разработки были построены на предыдущем месте работы? Как задачи поступали?
Как вы обычно маппите объекты из entity в DTO и обратно?
Если две партиции и три консюмера в одной группе — что произойдёт? А если три партиции и два консюмера?
Расскажи про сборщик мусора в Java.
Использовали ли Kilo Code в IntelliJ IDEA в рабочих задачах?
Расскажите коротко про проект в [компания] — что делали там?
Опишите, какие проблемы с согласованностью данных могут возникнуть при реализации распределённых транзакций между несколькими сервисами, использующими PostgreSQL, и как вы обычно их решаете?
Как сделать отправку invoice во внешнюю систему более надёжной? Чтобы при недоступности платёжного сервиса клиент всё равно мог забронировать место и оплатить позже (в течение 10 минут).
Приложение работало нормально, потом при росте нагрузки до 15k RPS начались ошибки OutOfMemoryError. Каков план действий?