Sobes.tech

Как анализировать дедлоки в многопоточном приложении и как их избегать?

Senior
СБЕРСБЕР
9

Опишите рабочий процесс с использованием AI-инструментов от получения задачи до деплоя.

Senior
Альфа-БанкАльфа-Банк
9

Как организована идемпотентность у вас?

Senior
атон
9

Какой вывод вы сделали из ситуации с дублями начислений?

Senior
ОТП БанкОТП Банк
9

Перечисли уровни изоляции транзакций и в общих чертах объясни, для чего они нужны

Senior
Сбер Право
9

Расскажите о ситуации, когда вы предложили улучшение процесса или внедрили что-то новое.

Middle
Небольшая компания
9

Расскажи по архитектуре сервиса коротко.

Senior
СБК ПАРУС
9

Расскажи про виды гарантии доставки в Kafka, чем они отличаются, в каком случае лучше использовать какие

Senior
Сбер Право
9

Что ты понимаешь под высоконагруженной платформой? Сколько RPS?

Senior
СБЕРСБЕР
9

таблица employee | name | lang | | Nick | C# | | Nick | SQL | | Eva | Rust | | Vika | SQL | | Ivan | Java | | Ivan | SQL | Нужно составить запрос, который найдет имена сотрудников, знающих SQL и как минимум еще один другой язык select name from employee group by name having COUNT(DISTINCT lang) >= 2;

Senior
РайффайзенРайффайзен
9

Расскажите принцип работы HashMap

Senior
СБЕРСБЕР
9

Что такое классы Atomic и для чего они нужны?

Senior
СБЕРСБЕР
9

Знаете ли вы хак в Java для игнорирования checked исключений?

Senior
СБЕРСБЕР
9

Если исключение выпало и в try, и при закрытии ресурса (try-with-resources), что поймаем в catch?

Senior
IT OneIT One
9

Почему решил искать новое место работы?

Senior
Росгосстрах
9

Где именно может возникнуть ошибка без volatile в Double-Checked Locking?

Middle+
Мираполис
9

/** * Интерфейс для взаимодействия с аппаратной частью банкомата. */ interface Hardware { /** * Возвращает массив с количеством купюр по номиналам 50, 100, 500, 1000, 5000. * Метод работает медленно и создает шум. * * @return массив, где каждый элемент соответствует количеству купюр определенного номинала. * Например, [10, 20, 30, 40, 50] означает: * - 10 купюр номиналом 50 рублей * - 20 купюр номиналом 100 рублей * - 30 купюр номиналом 500 рублей * - 40 купюр номиналом 1000 рублей * - 50 купюр номиналом 5000 рублей */ int[] getBillsCounts(); /** * Загружает в бокс выдачи указанные купюры. * * @param billsCounts массив с количеством купюр по номиналам [50, 100, 500, 1000, 5000]. * Например, [0, 1, 0, 2, 0] означает: * - 0 купюр номиналом 50 рублей * - 1 купюру номиналом 100 рублей * - 0 купюр номиналом 500 рублей * - 2 купюры номиналом 1000 рублей * - 0 купюр номиналом 5000 рублей */ void giveBills(int[] billsCounts); } /** * Класс для реализации логики работы банкомата. * Тут нужно писать код */ class MyATM { /** * Аппаратная часть банкомата. */ Hardware hardware; public boolean withdraw(int amount) { int[] counts = hardware.getBillsCounts(); int[] nom = {50, 100, 500, 1000, 5000}; int[] toGive = new int[5]; for (int i = 4; i >= 0; i--) { int needed = amount / nom[i]; int use = Math.min(needed, counts[i]); toGive[i] = use; amount -= use * nom[i]; } if (amount != 0) { return false; } hardware.giveBills(toGive); return true; } }

Senior
РайффайзенРайффайзен
9

Чем Kafka лучше прямой point-to-point отправки при обновлении данных?

Middle
Ecom
9

Как исправить нарушение принципа инверсии зависимостей — предложите рефакторинг с выделением отдельного хранилища?

Senior
VKVK
9

Что такое абстракция в ООП? Как вы её понимаете?

Middle
Небольшая компания
9
/713