Обяснете принципа на работа на метода за оптимистично заключване при управлението на конкурентен достъп до данни.
Java
Какви стъпки ще предприемеш, за да определиш причините за редовните рестартирания на услугата, свързани с грешката OutOfMemoryError?
Какво може да доведе до влошаване на производителността при изпълнение на функция?
Можете ли да обясните концепцията за Stream API в Java и как се използва за обработка на данни?
Имали ли сте опит в взаимодействието с доставчици на данни или ресурси?
Какви са предимствата и недостатъците на използването на индекси за отделни колони в база данни?
Могат ли цикличните зависимости да доведат до изтичане на памет в програма?
Как да разберете изпълнения SQL-заявка в PostgreSQL?
Защо при едновременна модификация на ArrayList по време на итерация възниква изключението ConcurrentModificationException?
Прочетете кода и подчертайте грешките /** * Клиент с закупен билет може срещу допълнително заплащане да избере конкретно място. * Основната цена на местата се определя от тарифите (външен сервиз). * За клиенти с определени тарифи (PREMIUM, ULTRA) трябва да се приложи отстъпка при плащане. * При резервация се издава фактура за плащане. Управлението на плащанията се извършва във външен сервиз. */ @Service public class SeatBookingService { @Autowired private SeatBookingRepository seatBookingRepository; @Autowired private TicketRepository ticketRepository; @Autowired private TariffClient tariffClient; @Autowired private CustomerClient customerClient; @Autowired private PaymentClient paymentClient; /** * Резервация. * @param seatCode код на мястото (например 19A) * @param ticketId ID на билета */ @Transactional public void bookSeat(String seatCode, UUID ticketId) { var ticket = ticketRepository.findById(ticketId); //резервираме var seatBooking = new SeatBooking(seatCode, ticket.get().getFlightId(), ticketId, BookingStatus.BOOKED); seatBookingRepository.save(seatBooking); //търсим основната тарифа за мястото в самолета var basePrice = tariffClient.getBasePrice(ticket.get().getPlaneModel(), seatCode); //търсим данните за клиента Long userId = (Long) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); var userData = customerClient.getCustomer(userId); System.out.println("Намерен потребител " + userData.getFio() + " номер на документ " + userData.getDocument()); var price = basePrice; if (userData.getTariff() == "PREMIUM") { //50% отстъпка price = basePrice * 0.5d; } if (userData.getTariff() == "ULTRA") { //20% отстъпка price = basePrice * 0.8d; } var invoice = new Invoice(price, ticketId, userId); //издаваме фактура paymentClient.sendInvoice(invoice); System.out.println("Фактура изпратена"); } @Data @Table("seat_booking") public class SeatBooking { @Column private String seatCode; @Column private UUID flightId; @Column private UUID ticketId; @Column private BookingStatus status; } public enum BookingStatus { BOOKED, PAID; }
Можете ли да изброите основните методи, предоставени от Stream API в Java?
По какви начини можеш да увеличиш скоростта на изпълнение на този метод?
Какви методи могат да се използват за увеличаване на скоростта на търсене в таблица?
Можете ли да обясните какво се разбира под атомен тип данни?
Какви действия ще предприемеш, ако при увеличаване на натоварването системата, закъсненията при изпълнение на заявките към базата данни станат значителни?
Можете ли да обясните принципа на работа на песимистичното блокиране и как се различава от друга стратегия за блокиране?
Можете ли да обясните как е структурирана наследствената структура на изключенията в езика за програмиране?
Обяснете концепцията за изтриване на типове и основната й цел в програмирането.
Как се осъществява настройката и регистрацията на Bean в рамките на Spring Framework?
Какви техники и подходи използвате за подобряване на ефективността на кеширането при увеличаване на обема на данните?