Java
Puteți explica diferența dintre conceptul de polimorfism și abstractizare în programarea orientată pe obiecte?
Citiți codul și evidențiați erorile /** * Un client cu bilet cumpărat poate, contra unei taxe suplimentare, să aleagă un loc specific. * Prețul de bază al locurilor este determinat de tarife (serviciu extern). * Pentru clienții cu tarife specifice (PREMIUM, ULTRA), trebuie aplicată o reducere la plată. * La rezervare, se emite o factură pentru plată. Gestionarea plăților se face într-un serviciu terț. */ @Service public class SeatBookingService { @Autowired private SeatBookingRepository seatBookingRepository; @Autowired private TicketRepository ticketRepository; @Autowired private TariffClient tariffClient; @Autowired private CustomerClient customerClient; @Autowired private PaymentClient paymentClient; /** * Rezervare. * @param seatCode codul locului (de exemplu, 19A) * @param ticketId ID-ul biletului */ @Transactional public void bookSeat(String seatCode, UUID ticketId) { var ticket = ticketRepository.findById(ticketId); //rezervăm var seatBooking = new SeatBooking(seatCode, ticket.get().getFlightId(), ticketId, BookingStatus.BOOKED); seatBookingRepository.save(seatBooking); //căutăm tariful de bază pentru locul din avion var basePrice = tariffClient.getBasePrice(ticket.get().getPlaneModel(), seatCode); //căutăm datele clientului Long userId = (Long) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); var userData = customerClient.getCustomer(userId); System.out.println("Utilizator găsit " + userData.getFio() + " număr document " + userData.getDocument()); var price = basePrice; if (userData.getTariff() == "PREMIUM") { //reducere de 50% price = basePrice * 0.5d; } if (userData.getTariff() == "ULTRA") { //reducere de 20% price = basePrice * 0.8d; } var invoice = new Invoice(price, ticketId, userId); //emitere factură paymentClient.sendInvoice(invoice); System.out.println("Factură emisă"); } @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; }
Poți vorbi despre diferitele tipuri de propagare care pot fi setate în adnotarea @Transactional?
Ce surse folosești pentru a căuta materiale de studiu și actualizări în domeniul tehnologiei?
Este posibil să se stabilească legături între diferite colecții din baza de date MongoDB?
Cum ai început să înveți să lucrezi cu Java și despre primele tale proiecte în acest limbaj?
Cu ce se formează interogările către baza de date?
Pe ce se bazează framework-ul Spring?
Care este diferența dintre bazele de date SQL și NoSQL?
Unde este utilizată adnotarea @Bean?
Unde este cel mai bine să aplici moștenirea și asociația în programare?
Ce este idempotenta unei metode?
Ce abordare de autentificare și autorizare este implementată în Spring Security în proiectul dvs.?
Care este diferența dintre metodele de cerere HTTP?
Ce este interfața AutoCloseable și cum funcționează construcția try-with-resources în Java?
De ce bazele de date sunt mai bune decât fișierele text?
Ce este încapsularea în programare?
Ce mecanism de încărcare a datelor se utilizează atunci când se folosește JOIN FETCH în ORM?
Ce abordări și metode permit prevenirea apariției problemelor atunci când mai multe fire de execuție lucrează simultan cu o resursă comună?
Pe ce se bazează expresiile lambda?