Implementare il trasferimento di fondi tra due conti. Si consideri che questa è una soluzione di produzione Parametri di input: @param fromAccountId identificativo unico dell'utente che trasferisce fondi @param toAccountId identificativo unico dell'utente a cui vengono trasferiti i fondi @param amount importo del trasferimento. Numero positivo public void transferMoney(Long fromAccountId, Long toAccountId, BigDecimal amount) { if (amount.compareTo(BigDecimal.ZERO) <= 0) { throw new RuntimeException("L'importo deve essere > 0"); } if (fromAccountId.equals(toAccountId)) { throw new RuntimeException("L'account non può essere lo stesso"); } Long firstId = Math.min(fromAccountId, toAccountId); Long secondId = Math.max(fromAccountId, toAccountId); Account first = accountRepository.findByIdForUpdate(firstId) .orElseThrow(() -> new RuntimeException("Account non trovato")); Account second = accountRepository.findByIdForUpdate(secondId) .orElseThrow(() -> new RuntimeException("Account non trovato")); Account from = fromAccountId.equals(firstId) ? first : second; Account to = fromAccountId.equals(firstId) ? second : first; if (from.getBalance().compareTo(amount) < 0) { throw new RuntimeException("Saldo insufficiente"); } from.setBalance(from.getBalance().subtract(amount)); to.setBalance(to.getBalance().add(amount)); accountRepository.save(to); accountRepository.save(from); }
Java
Hai esperienza con il framework Spring per lo sviluppo di applicazioni?
Qual è il ruolo e lo scopo delle interfacce funzionali nella programmazione?
Perché ora nella ricerca di lavoro?
Qual è la differenza tra le aree di Singleton e Prototype nel contesto di Spring Framework?
Hai eseguito operazioni di gestione delle transazioni con l'annotazione @Transactional?
Quali componenti include l'architettura di Kafka e come interagiscono tra loro?
Hai mai avuto un'esperienza di disaccordo con una decisione tecnica o architettonica del team? Come hai agito?
Qual è la complessità temporale di inserire un elemento nel mezzo di una lista collegata se hai già un array pieno?
Parlami di te, della tua esperienza e dei tuoi principali successi.
Come misurare l'efficacia del lavoro con i dati e a cosa influisce?
Cosa influisce sui tempi di inserimento di un elemento alla fine di una lista collegata?
Quale struttura dati è alla base dell'implementazione di HashMap e come funziona?
Puoi spiegare cos'è Gson e come funziona con i campi durante la serializzazione e deserializzazione?
Come si può attraversare gli elementi di una collezione implementata tramite LinkedList?
Spiega cosa fa l'annotazione @Transactional nel contesto della gestione delle transazioni nelle applicazioni Java.
Spiega il concetto di coerenza dei dati nei sistemi di archiviazione delle informazioni.
Puoi spiegare cosa significa il termine 'oggetto immutabile' e quali sono le sue caratteristiche principali?
Come distinguere i diversi tipi di raccoglitori di rifiuti e quali sono le loro caratteristiche?
Perché separare gli oggetti from e to (anziché lavorare direttamente con first e second)?