Добре ли са съвместими реактивният код с синхронните транзакции?
Java
В кои случаи трябва да използвате нативни SQL заявки и в кои Hibernate?
select name from employee group by name having COUNT(DISTINCT lang) >= 2;
Как да решите проблема с несъответствието на данните: външният повик беше успешен, но запазването в базата данни се провали?
/** * Интерфейс за взаимодействие с хардуера на банкомата. */ 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; } }
Разкажи за последния си проект: с какво се занимаваше, какви бяха задачите, какъв стек използва?
Как оценявате инициативата на VK за създаване на собствена база данни и как бихте оценили нейното качество и ефективност?
Какви са последствията от създаването на ObjectMapper като поле на класа (не чрез Spring)?
Какви интересни задачи имаше в проекта?
/** * Методът изчислява колко точки е спечелил кандидатът, * запазва резултата в базата данни и извиква callback в външен сервис */ public void process(Candidate c) { transactionTemplate.executeWithoutResult(status -> { Score s = interviewScoreMLService.compute(c); String body = objectMapper.writeValueAsString(Map.of(c.getName(), s)); Mono<ResponseEntity<Void>> request = WebClient.create() .post() .body(BodyInserters.fromValue(body)) .retrieve() .toBodilessEntity(); scoreRepository.saveScore(s); }); }
Какви са недостатъците на реализираното решение за банкомата?