import jakarta.persistence.Id;

В представленном коде есть несколько проблем и неточностей:

Короткий ответ

Что ответить на собеседовании

В представленном коде есть несколько проблем и неточностей:

Подробный разбор

Ответ с пояснениями

Условие

import jakarta.persistence.Id; import jakarta.persistence.Table; import jakarta.ws.rs.QueryParam; import lombok.Data; import lombok.extern.log4j.Log4j2;

@Log4j2 @Service @RestController("/store/book") public class BookStoreController { private final BooksRepository repo;

public BookStoreController(BooksRepository repo, Boolean bool, Collection keys) {
    this.repo = repo;

    if (bool) {
        // check first key
        String firstKey = (String) ((ArrayList) keys).get(0);
        if (firstKey == "public") {
            keys.stream().forEach(key -> {
                // ... some logic
                log.warn("Using key " + key);
            });
        }
    }
}

@PutMapping("/create")
public Book create(Map<String, Object> map) throws Exception {
    System.out.println("Check if book exists " + map);
}

Ответ

В представленном коде есть несколько проблем и неточностей:

  1. Аннотация @RestController не принимает параметр с путем. Для указания базового пути контроллера нужно использовать @RequestMapping("/store/book").
  2. В конструкторе сравнение строк через == некорректно, нужно использовать firstKey.equals("public").
  3. Приведение keys к ArrayList и кастинг элементов к String небезопасны, лучше использовать параметризованные коллекции.
  4. В методе create отсутствует возвращаемое значение и логика, метод должен возвращать объект Book.
  5. Отсутствуют импорты для @Service, @RestController, @PutMapping и других используемых аннотаций.

Пример исправленного фрагмента:

@RestController
@RequestMapping("/store/book")
public class BookStoreController {
    private final BooksRepository repo;

    public BookStoreController(BooksRepository repo, Boolean bool, Collection<String> keys) {
        this.repo = repo;

        if (bool) {
            String firstKey = keys.iterator().next();
            if ("public".equals(firstKey)) {
                keys.forEach(key -> log.warn("Using key " + key));
            }
        }
    }

    @PutMapping("/create")
    public Book create(@RequestBody Map<String, Object> map) throws Exception {
        System.out.println("Check if book exists " + map);
        // Логика создания книги
        Book book = new Book();
        // заполнение полей book из map
        return repo.save(book);
    }
}

Обратите внимание на правильное использование аннотаций, сравнение строк и типизацию коллекций.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее