Расскажите о ваших учебных или pet-проектах.

«Расскажите о ваших учебных или pet-проектах.» — вопрос из категории Софт-скиллы, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Да, у меня есть несколько проектов, созданных для изучения технологий и отработки навыков на практике.

Пример проекта: REST API для управления задачами (To-Do List)

  • Стек: Spring Boot, Spring Security (JWT), Spring Data JPA (Hibernate), PostgreSQL, Docker.
  • Ключевая функциональность:
    • Аутентификация и авторизация по JWT-токенам.
    • CRUD-операции для задач с привязкой к пользователю.
    • Валидация входящих данных.
    • Документация API с помощью Swagger/OpenAPI.

Фрагмент кода (контроллер):

@RestController
@RequestMapping("/api/tasks")
@RequiredArgsConstructor // Lombok для инъекции зависимости
public class TaskController {

    private final TaskService taskService;

    @GetMapping
    @PreAuthorize("hasRole('USER')") // Защита endpoint'а
    public ResponseEntity<List<TaskDto>> getAllUserTasks(
            @AuthenticationPrincipal UserDetails userDetails) {
        List<TaskDto> tasks = taskService.findAllForUser(userDetails.getUsername());
        return ResponseEntity.ok(tasks);
    }

    @PostMapping
    public ResponseEntity<TaskDto> createTask(
            @Valid @RequestBody CreateTaskRequest request, // Валидация полей
            @AuthenticationPrincipal UserDetails userDetails) {
        TaskDto newTask = taskService.create(request, userDetails.getUsername());
        return ResponseEntity.status(HttpStatus.CREATED).body(newTask);
    }
}

Другие проекты включают:

  • Микросервисная архитектура: Простое приложение, разбитое на сервисы (API Gateway, Service Discovery с Eureka, конфигурация).
  • Парсер данных: Сервис на Spring Boot + Jsoup для сбора и агрегации информации с веб-сайтов.
  • Telegram-бот: Бот для уведомлений или простых взаимодействий, написанный на Java с использованием библиотеки TelegramBots.

Цель проектов: Глубокое понимание жизненного цикла приложения, от проектирования и разработки до развертывания и мониторинга.