Java
How to add constraints to a database?
What do you know about the RandomAccessFile class?
What does 'sleeping' a thread mean in Java?
How can dependent related objects be processed when fetching data from the database?
What design patterns do you know?
Can the implementation of a static method in a subclass be changed by overriding it?
Tell us about your knowledge and experience working with Java.
What methods can be used to obtain a new instance of a component configured with the prototype pattern in Spring or similar frameworks?
What factors are affected by using CGLib when dynamically creating proxy objects?
Can you explain the concept of contract testing and its role in microservices integration?
How to call a static method of an interface?
What are access modifiers in Java and what are they?
Where exactly in memory is the reference located if the variable is a reference type?
On which platform was your last project built?
What is the role of stereotype annotations in the Spring framework and why are they used?
Were REST API principles applied in your last project?
public class MoneyTransferService { /** * @param fromAccountId unique identifier of the user transferring funds * @param toAccountId unique identifier of the user receiving funds * @param amount transfer amount. Positive number */ @Transactional public void transferMoney(Long fromAccountId, Long toAccountId, BigDecimal amount) { if (amount.compareTo(BigDecimal.ZERO) <= 0) { throw new RuntimeException("Amount must be +"); } if (fromAccountId.equals(toAccountId)) { throw new RuntimeException("Account can't be the same"); } Long firstId = Math.min(fromAccountId, toAccountId); Long secondId = Math.max(fromAccountId, toAccountId); Account first = accountRepository.findByIdForUpdate(firstId) .orElseThrow(() -> new RuntimeException("Account not found")); Account second = accountRepository.findByIdForUpdate(secondId) .orElseThrow(() -> new RuntimeException("Account not found")); Account from = fromAccountId.equals(firstId) ? first : second; Account to = fromAccountId.equals(firstId) ? second : first; if (from.getBalance().compareTo(amount) < 0) { throw new RuntimeException("Balance is less 0"); } from.setBalance(from.getBalance().subtract(amount)); to.setBalance(from.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; }
How can you temporarily disable the execution of tests during a Maven project build?