Sobes.tech

public class MoneyTransferService { /** * @param fromAccountId уникален идентификатор на потребителя, който прехвърля средства * @param toAccountId уникален идентификатор на потребителя, на когото се прехвърлят средствата * @param amount сума на превода. Положително число */ @Transactional public void transferMoney(Long fromAccountId, Long toAccountId, BigDecimal amount) { if (amount.compareTo(BigDecimal.ZERO) <= 0) { throw new RuntimeException("Сумата трябва да е положителна"); } if (fromAccountId.equals(toAccountId)) { throw new RuntimeException("Сметката не може да е същата"); } Long firstId = Math.min(fromAccountId, toAccountId); Long secondId = Math.max(fromAccountId, toAccountId); Account first = accountRepository.findByIdForUpdate(firstId) .orElseThrow(() -> new RuntimeException("Сметка не е намерена")); Account second = accountRepository.findByIdForUpdate(secondId) .orElseThrow(() -> new RuntimeException("Сметка не е намерена")); Account from = fromAccountId.equals(firstId) ? first : second; Account to = fromAccountId.equals(firstId) ? second : first; if (from.getBalance().compareTo(amount) < 0) { throw new RuntimeException("Недостатъчен баланс"); } from.setBalance(from.getBalance().subtract(amount)); to.setBalance(to.getBalance().add(amount)); accountRepository.save(to); accountRepository.save(from); } } @Entity @Data public class Account { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private BigDecimal balance; }

274

Как да реализираме обработката на изключения в приложения, използващи Spring Framework?

Junior — Middle
272

Как е организирана съвместната работа във вашия екип и какви процеси се използват за изпълнение на задачите?

Junior — Middle
270

Как се различават HashMap и ConcurrentHashMap в Java по функционалност и използване в многопоточни сегменти?

269

Как правилно да промените обект, за да може да се използва в колекцията HashMap?

Junior — Middle
268

Можеш ли да дадеш пример за идеята за обръщане на зависимостите в проектирането на софтуерни системи?

Junior — Middle
267

Как беше формулиран последният SQL-заявка, който използвахте във вашия проект?

Junior — Middle
267

Можете ли да обясните какво представляват обектите, които не могат да бъдат променяни след създаването им?

Junior — Middle
264

Четири състояния на същностите в Hibernate — обяснете как това е свързано с необходимостта от извикване на save().

263

В кои ситуации е възможна загуба на данни в Kafka?

Junior — Middle
262

Осигурява ли Kafka сигурност при съхранението и преноса на данни?

Junior — Middle
261

Работили ли сте някога със системи, които осигуряват висок ниво на отказоустойчивост и устойчивост към сривове?

Junior — Middle
259

Имали ли сте практически опит със Spring Boot?

Junior — Middle
255

Какви са основните принципи на дизайна на услуги за минимизиране на загубата на данни или ресурси?

Junior — Middle
254

Как механизмите за събиране на отпадъци определят обектите, които трябва да бъдат унищожени?

254

Допустимо ли внедряването на обработка на изключения директно в бизнес логиката на приложението?

Junior — Middle
253

Какви са предимствата и недостатъците на съхраняването на данни за състоянието на сървъра?

Junior — Middle
249

Кои фактори не влияят на работата на HashMap?

Junior — Middle
248

Използвали ли сте преобразуване или оптимизация на SQL заявки в последния си проект?

Junior — Middle
247

Какви са предимствата и недостатъците на релационните системи за управление на бази данни?

Junior — Middle
246
/11