Как настроить переменные окружения в Spring Boot через Kubernetes (ConfigMap/Secrets)?
Чем Kafka отличается от RabbitMQ?
Что такое промежуточные и терминальные методы в стримах?
Расскажи о себе, чем занимался последние 2-3 года?
Как дружите с Linux на уровне командной строки? Приходилось сталкиваться с проблемами, например, когда порт занят?
Хорошо тестируемый код — какой он? Минимум 3 критерия. И что такое сильный coupling и в чём его минус? Чем плохо слишком слабый coupling?
Какие плюсы есть у монолитной архитектуры?
В чём отличие Spring Boot Starter от обычной библиотеки?
Почему LongAdder эффективнее AtomicLong при высокой конкуренции? При каких условиях LongAdder работает эффективно?
Можешь рассказать поподробнее про переход на асинхронную модель? Что было до, что поменялось? Какие микросервисы были?
Что нужно изменить в этом коде, чтобы была корректная потокобезопасная реализация паттерна Синглтон? public class Singleton { private static final Singleton instance; public Singleton() { } public Singleton getInstance() { if (instance != null) { synchronized (instance) { if (instance == null) { instance = new Singleton(); } } } return instance; } }
Есть 3 сущности - пользователь, чат, сообщение - У пользователя есть имя и дата регистрации - У чата есть название и дата создания - У сообщения есть текст, автор и дата создания - Пользователь может состоять в нескольких чатах одновременно - Сообщение обязательно принадлежит чату, сообщение не может принадлежать более чем 1 чату одновременно - Нужно описать предметную область в виде таблиц
Оценить модель для использования в ArrayList, HashMap, TreeSet static public final class Transaction<T extends Number> implements Comparable<Transaction> { private final T id; private final Double amount; private final java.util.Date timestamp; public Transaction(T id, double amount, java.util.Date timestamp) { this.id = id; this.amount = amount; this.timestamp = timestamp; } public T getId() { return id; } public Double getAmount() { return amount; } public java.util.Date getTimestamp() { return timestamp; } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof Transaction t)) return false; return id == t.id && Double.compare(amount, t.amount) == 0 && timestamp.equals(t.timestamp); } @Override public int hashCode() { return Objects.hash(id, timestamp); } @Override public int compareTo(Transaction other) { return this.timestamp.compareTo(other.timestamp); } }
В чём основная причина некорректного поведения кода Нарушена иммутабельность объектов Не обрабатывается состояние прерывания Ухудшение производительности из-за блокировки Конфликт объектов блокировки приводит к тупиковой ситуации Избыточная синхронизация ресурсов Неинициализированные состояния объектов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(); } }
Как сделать отправку invoice во внешнюю систему более надёжной? Чтобы при недоступности платёжного сервиса клиент всё равно мог забронировать место и оплатить позже (в течение 10 минут).
Что такое multi-catch в Java? Какие есть ограничения и правила?
Приложение работало нормально, потом при росте нагрузки до 15k RPS начались ошибки OutOfMemoryError. Каков план действий?
Опишите, какие проблемы с согласованностью данных могут возникнуть при реализации распределённых транзакций между несколькими сервисами, использующими PostgreSQL, и как вы обычно их решаете?
Какой побочный эффект возникает при выполнении кода BEGIN; SET TRANSACTION ISOLATION LEVEL READ COMMITTED; START TRANSACTION; SELECT progress INTO @current_progress FROM courses WHERE course_id = 101; SET @current_progress = @current_progress + 60; UPDATE courses SET progress = @current_progress WHERE course_id = 101; COMMIT; END; BEGIN; SET TRANSACTION ISOLATION LEVEL READ COMMITTED; START TRANSACTION; SELECT progress INTO @current_progress FROM courses WHERE course_id = 101; SET @current_progress = @current_progress + 40; UPDATE courses SET progress = @current_progress WHERE course_id = 101; COMMIT; END;
Расскажите коротко про проект в [компания] — что делали там?