Какие ключевые технологии и инструменты вы применяли в вашем последнем проекте?

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

Ответ

В последнем проекте (backend-сервис на Java) использовался следующий стек технологий:

Базовый стек:

  • Backend Framework: Spring Boot 2.x
  • ORM: Hibernate (через Spring Data JPA)
  • База данных: PostgreSQL (основная), Redis (кэш и сессии)
  • Сборка: Maven
  • Контейнеризация: Docker, Docker Compose

Основные модули и библиотеки:

  1. Spring Security — для аутентификации (JWT) и авторизации.
  2. Spring Web — построение REST API.
  3. Spring Kafka / RabbitMQ — асинхронная обработка событий и межсервисное взаимодействие.
  4. Lombok — для сокращения шаблонного кода (геттеры, сеттеры, конструкторы).
  5. MapStruct — для маппинга между DTO и сущностями.
  6. Swagger (SpringDoc OpenAPI) — для автоматической генерации документации API.

Тестирование:

  • JUnit 5 & Mockito — модульные и интеграционные тесты.
  • Testcontainers — для поднятия изолированных зависимостей (БД, Kafka) в тестах.

Пример слоя контроллера:

@RestController
@RequestMapping("/api/v1/users")
@RequiredArgsConstructor // Lombok генерирует конструктор
@Tag(name = "Users", description = "API для управления пользователями") // Swagger
public class UserController {
    private final UserService userService;

    @GetMapping("/{id}")
    @Operation(summary = "Получить пользователя по ID") // Swagger
    public ResponseEntity<UserResponseDto> getUser(@PathVariable Long id) {
        UserResponseDto user = userService.getUserById(id);
        return ResponseEntity.ok(user);
    }
}

Инфраструктура: Сервис разворачивался в Kubernetes, использовались GitLab CI/CD для пайплайнов.