Сколько было RPS на пике? На запись сколько?
Какие ещё проблемы есть в коде? (SecurityContextHolder, персональные данные, финансовые расчёты)
Есть ли опыт работы на Kotlin?
Расскажи о сложной задаче из опыта работы — интеграция с API и решение проблемы таймаутов.
Использовали ли вы TDD и юнит-тесты?
Как устроен AtomicInteger в Java?
Как решить проблему с НФТ 50ms при текущих RT 150ms + 350ms? Предложи архитектурное решение.
Какова сложность алгоритма вставки (put) в TreeMap?
Почему Map не является коллекцией (Collection)?
Что выведет этот код? public class StreamApi { @Data @AllArgsConstructor public static class Client { private String name; private String city; } public static Map<String, Long> countBy(Stream<Client> clients, Function<Client, String> clientParameterGetter) { return clients.collect(Collectors.groupingBy(clientParameterGetter, TreeMap::new, Collectors.counting())); } public static void main(String[] args) { List<Client> clients = List.of( new Client("Иванов", "Москва"), new Client("Михайлов", "Санкт-Петербург"), new Client("Сергеев", "Санкт-Петербург"), new Client("Иванов", null), new Client("Сергеев", null) ); long count = clients.stream() .peek(client -> { if (client.getCity() == null) { client.setCity("Москва"); } }) .count(); Predicate<Client> clientPredicate = client -> client.getCity() != null; Stream<Client> validClients = clients.stream().filter(clientPredicate); System.out.println(count); System.out.println(countBy(validClients, Client::getName)); System.out.println(countBy(validClients, Client::getCity)); } }
Есть система, которая дает юзерам возможность работать с файлами в браузере. Стек стандартный: Java, Spring, React, Postgres. Файлы хранятся в файловой системе на бэке, метаданные файлов в БД. Команда реализовала фичу - переименование файла. Этот метод по сути ключевой для переименования файла на бэке. Нужно провести его ревью, где необходимо выявить потенциальные проблемы в существующем коде и предложить варианты их исправления. @Transactional public void process(String oldName, String newName) { Long id = exec("select id from file where name='" + oldName + "'"); processFile(oldName, newName); // переименование файла на диске exec("update file set name='" + newName + "' where id = " + id); }
Почему вы выбрали именно Saga паттерн?
В чём суть паттерна Inversion of Control (IoC) в Spring?
Что такое offset в Kafka? Как происходит смещение? Когда использовать ручной коммит vs автоматический?
Как система понимала, что нужно пойти по одному пути или по другому? За что цеплялась при различении документов?
Почему построение отчётности велось на PostgreSQL при нагрузке ~2000 RPS? Почему не использовалось OLAP-решение вместо OLTP для отчётности?
Есть таблица со 100 миллионами записей. Нужно выбрать все записи, где value > 100. Какие рекомендации для минимизации времени выполнения запроса?
Что такое REST и чем он отличается от обычного HTTP API?
В чём разница между HashMap и ConcurrentHashMap?
Примитивное поле объекта — где будет лежать, в heap или в стеке?