В представленном коде есть несколько проблем и неточностей:
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);
}
Ответ
В представленном коде есть несколько проблем и неточностей:
- Аннотация
@RestControllerне принимает параметр с путем. Для указания базового пути контроллера нужно использовать@RequestMapping("/store/book"). - В конструкторе сравнение строк через
==некорректно, нужно использоватьfirstKey.equals("public"). - Приведение
keysкArrayListи кастинг элементов кStringнебезопасны, лучше использовать параметризованные коллекции. - В методе
createотсутствует возвращаемое значение и логика, метод должен возвращать объектBook. - Отсутствуют импорты для
@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);
}
}
Обратите внимание на правильное использование аннотаций, сравнение строк и типизацию коллекций.