С какими технологиями в Java-стеке вы имели практический опыт работы?

Ответ

Имею коммерческий опыт работы со следующим стеком технологий для backend-разработки:

Язык и Core: Java 8-17 (Stream API, Optional, CompletableFuture).

Фреймворки:

  • Spring Framework: Boot, MVC, Data JPA, Security, Cloud.
  • ORM: Hibernate / JPA.

Архитектура и коммуникация:

  • Микросервисы, REST API, gRPC.
  • Брокеры сообщений: Apache Kafka, RabbitMQ.

Базы данных:

  • Реляционные: PostgreSQL, MySQL.
  • NoSQL: MongoDB, Redis (как кэш и key-value хранилище).

Тестирование: JUnit 5, Mockito, Testcontainers.

Инфраструктура и DevOps: Docker, Kubernetes, Jenkins (CI/CD).

Пример кода для REST-контроллера на Spring Boot:

@RestController
@RequestMapping("/api/users")
public class UserController {

    private final UserService userService;

    // Внедрение зависимости через конструктор (best practice)
    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping("/{id}")
    public ResponseEntity<UserDto> getUser(@PathVariable Long id) {
        UserDto user = userService.getUserById(id);
        return ResponseEntity.ok(user);
    }
}

Ответ 18+ 🔞

А, ну вот, смотри, пришёл очередной резюмешник, который в Java 8-17 шарит, да? Stream API, Optional, CompletableFuture — ну, классика жанра, блядь, без этого нихуя не соберёшь нормальный сервис. Это как хлеб с маслом, только код с исключениями.

Фреймворки — Spring, само собой. Boot, MVC, Data JPA... Security, Cloud — ну, тут без вариантов, ёпта, иначе тебя нахуй с проекта вынесут, если ты безопасность на коленке пишешь. Hibernate — это ж святое, хотя иногда от его магии так охуеваешь, что хочется на чистом JDBC вернуться, но потом вспоминаешь, что лень, блядь.

Архитектура — микросервисы, конечно. Все сейчас в них играются, как мартышлюшки с гранатой. REST API — это понятно, а вот gRPC — это уже для серьёзных пацанов, когда latency ебать нуль целых хер десятых. Брокеры — Kafka, RabbitMQ... Кафка — это монстр, конечно. Настроишь её — чувствуешь себя богом, а потом она тебе в продакшене такую пиздюлину подкинет, что волосы дыбом встанут.

Базы... PostgreSQL — надёжная, как швейцарские часы, MySQL — тоже ничего, но как вспомнишь про их дефолтные настройки, так охреневаешь. NoSQL — MongoDB, когда схема меняется чаще, чем твоё настроение. А Redis — это вообще мастхэв, без него кэшировать — это как ебаться без презерватива: вроде и быстрее, но потом проблем — овердохуища.

Тестирование — JUnit, Mockito... Ну, без этого вообще никуда. А Testcontainers — это просто песня, когда надо с реальной базой интеграционные тесты гонять, а не с какими-то там in-memory поделками.

Инфраструктура — Docker, Kubernetes... Ёперный театр, сейчас без этого контейнерного цирка вообще не берут. Jenkins — старый добрый, но работает, хотя иногда его пайплайны такую дичь вытворяют, что хочется его самого в контейнер запереть и утопить.

А вот пример кода... Ну, контроллер, что тут сказать. Стандартный пиздец. @RestController, @RequestMapping — декораторы на каждый чих, блядь. Внедрение через конструктор — это да, best practice, а то видел я этих умельцев, которые @Autowired везде тычут, как будто от этого код быстрее работать будет. ResponseEntity — чтобы статусы красиво отдавать, а не просто return user;. В общем, скучно, предсказуемо, но работает. Главное, чтобы внутри userService не было такого говна, что потом полгода отлаживать.

Короче, стек как стек, ничего сверхъестественного, но если всё это вправду юзал, а не просто в резюме для галочки написал, то работать можно. А то ведь некоторые так лихо технологии перечисляют, а на деле — хуй с горы.