Почему сейчас рассматриваешь другие варианты / почему ушёл с предыдущего места?
С высоконагруженными системами работал? Какие показатели нагрузки?
Прочитайте код и подсветите ошибки /** * Клиент с купленным билетом может за дополнительную плату выбрать конкретное место. * Базовая цена мест определяется тарифами (внешним сервисом). * Для клиентов с определенными тарифами (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 код места (например 19А) * @param ticketId ид билета */ @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; }
Задача по многопоточности: thread-safe сборщик метрик с эффективным инкрементом, ключ — строка, значение — счётчик
Criteria API и Specification API в JPA — использовал? Для чего они нужны?
Что ищешь по формату работы? Ты в Москве?
Если исключение выпало и в try, и при закрытии ресурса (try-with-resources), что поймаем в catch?
В чём основная проблема выбранной структуры решения Класс Property не поддерживает полиморфизм Поля класса могут быть неинициализированы Метод переноса расчета общей стоимости в классе «Заказ» Не использует механизмы транзакционности Нет исключений при пустом спискеpublic class RealEstateService { private ListingRepository listingRepository; public RealEstateService(ListingRepository listingRepository) { this.listingRepository = listingRepository; } public double calculateTotalCost() { List<Property> properties = listingRepository.getAllListings(); double total = 0; for (Property property : properties) { total += property.getPrice(); } return total; } } class ListingRepository { public List<Property> getAllListings() { return Arrays.asList(new Property(250000), new Property(150000)); } } class Property { private double price; public Property(double price) { this.price = price; } public double getPrice() { return price; } }
Из какого города планируете работать?
public class RefEx { public interface DocumentProcessor { void process(Document document); } public static class PdfProcessor implements DocumentProcessor { @Override public void process(Document document) { // Специфическая логика для обработки PDF } } public static class DocxProcessor implements DocumentProcessor { @Override public void process(Document document) { // Специфическая логика для обработки Word } } public static class XmlProcessor implements DocumentProcessor { @Override public void process(Document document) { // Специфическая логика для обработки XML } } public static class DocumentService { private final Map<DocumentType, DocumentProcessor> processors = Map.of( DocumentType.PDF, new PdfProcessor(), DocumentType.DOCX, new DocxProcessor(), DocumentType.XML, new XmlProcessor() ); public void process(Document[] documents) { for (Document doc : documents) { // Общая логика обработки документа processors.get(doc.type).process(doc); } } } }
Нужно ли создавать consumer group если consumer всего один?
Почему построение отчётности велось на PostgreSQL при нагрузке ~2000 RPS? Почему не использовалось OLAP-решение вместо OLTP для отчётности?
HTTP методы POST, PUT и PATCH — какие использовал и в каких случаях?
Что такое электронно-цифровая подпись (ЭЦП)?
Расскажите про покрытие тестами и подход к тестированию в команде
Что получаем и чем жертвуем при использовании volatile?
Ты принимал участие в найме и проводил интервью. Есть ли у вас Team Lead команды QA?
Чем отличается WHERE от HAVING?
Почему не использовали ZGC или Shenandoah?
Когда аннотация @Transactional может не сработать?