Какой стек технологий использовался на последнем месте работы?

Ответ

В последнем проекте использовали стек на основе .NET Core 6, ASP.NET Core для бекенда, Entity Framework Core для работы с БД (PostgreSQL). На фронте — React с TypeScript. Для CI/CD — Azure DevOps, Docker + Kubernetes для деплоя.

Пример кода API-контроллера:

[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
    private readonly IUserService _userService;

    public UsersController(IUserService userService)
    {
        _userService = userService;
    }

    [HttpGet("{id}")]
    public async Task<IActionResult> GetUser(int id)
    {
        var user = await _userService.GetByIdAsync(id);
        return user != null ? Ok(user) : NotFound();
    }
}

Дополнительно: SignalR для real-time, Redis для кэширования, xUnit для тестов.

Ответ 18+ 🔞

Да ты посмотри, какой стек собрали — прямо как в хорошем борще, всего намешали, но в итоге вкусно вышло. На бекенде, ясное дело, .NET Core 6, потому что на старье уже только бабки в конторе сидят. ASP.NET Core — ну куда ж без него, чтобы эти REST'овские штуки по воздуху летали. С базой — PostgreSQL, потому что MySQL это уже как-то девяностые пахнет, а Entity Framework Core сверху, чтобы не писать эти километровые SQL'ные запросы, а то с ума сойти можно.

Фронт — React с TypeScript, ну а че, все сейчас так делают, чтобы эти интерфейсы не разваливались от чиха. TypeScript — это вообще спасение, иначе там в JavaScript'е такой пиздец творится, что к вечеру уже не понимаешь, что у тебя в переменной лежит: строка, число или целый ёбаный массив.

А вот дальше начинается магия, блядь. CI/CD на Azure DevOps — залил код, а он сам себе собирает, тестирует и даже на сервак выкатывает, красота! Деплой — Docker с Kubernetes, это когда твоё приложение засовывают в контейнер, как селёдку в банку, а потом эти банки по кластеру раскидывают, чтобы если одна сдохла, остальные работали. Умно, чо.

Смотри, какой контроллер симпатичный написали:

[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
    private readonly IUserService _userService;

    public UsersController(IUserService userService)
    {
        _userService = userService;
    }

    [HttpGet("{id}")]
    public async Task<IActionResult> GetUser(int id)
    {
        var user = await _userService.GetByIdAsync(id);
        return user != null ? Ok(user) : NotFound();
    }
}

Всё чётко, без лишней воды: пришёл запрос — отдал пользователя, нет пользователя — отдал 404, иди лесом. Dependency Injection на месте, async/await — чтобы всё летало, а не тормозило как телега.

А ещё, представляешь, SignalR для real-time'а прикрутили — чтобы уведомления летели мгновенно, без этих дурацких обновлений страницы. Redis для кэша — чтобы базу не ебать по каждому чиху, особенно когда один и тот же запрос тысячу раз дергают. Ну и тесты на xUnit, потому что без них как без рук — напишешь фичу, а она всё ломает, потом ночами сидишь и хуяришь, как дурак.

В общем, стек получился крепкий, на века. Только смотри, не перегрузи его своими костылями, а то потом разгребать этот код будет — просто пиздец, а не работа.