Расскажите разницу между IEnumerable и IQueryable.
Существует три метода, которые меняют информацию о товаре (изменяют состояние, изменяют состав тегов и задает вес). Так как в дальнейшем планируется добавить еще 10-20 методов которые меняют информацию о товаре (сами методы могут быть реализованы как nuget в другом сервисе) нужно реализовать единственный метод DoSomethingWithItem который в зависимости от входных параметров мог бы вызывать любое изменение товара. То есть методу может быть сказано "Поменяй состояние" или "Задай вес" и так далее и его реализация уже сама вызовет один из методов StateChanger.Change или WeightSetter.Set и т.д. Классы StateChanger, TagsSetter и WeightSetter можно менять. Главное сохранить бизнесовую функциональность. namespace ItemsService { public sealed class StateChanger { public enum State { Active, InActive } public void Change(int itemId, State newState) { } } public sealed class TagsSetter { public void Set(int itemId, string[] tags) { } } public sealed class WeightSetter { public void Set(int itemId, int weight) { } } public sealed class ItemsService { //public void DoSomethingWithItem } }
Будет ли одинаковый план выполнения у двух клиентов с одинаковой структурой БД, но разными данными?
Как соотносятся HTTP и TCP? Как соотносятся UDP и TCP?
Как реализована авторизация?
Как проверяли права доступа?
Работа с базами данных — Entity Framework, Dapper, построение индексов?
Redis недоступен, несколько инстансов — как обеспечить согласованность кэша?
Ревью: прикладной код Класс содержит логику обработки новых заказов. Извлекает из БД заказы и позиции, после чего обращается по http к внешнему микросервису Stock, в котором бронирует товары по позициям заказа. Если все бронирования выполнены успешно, микросервис подтверждает бронь заказа в Stock и отмечает заказ обработанным. Микросервис запущен в несколько экземпляров, поэтому метод Process может выполняться параллельно. Для того, чтобы не обрабатывать одни и те же строки используется механизм пессимистичной блокировки PostgreSQL Select for update ... skip locked. Реализация IBus отправляет сообщения в RabbitMq. ```csharp public sealed class PendingOrdersProcessor { public async Task PendingOrdersProcessor(ILogger logger, IBus bus, HttpStockService st { var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); var cs = _cs[env]; _db = new OrdersRepository(cs); _bus = bus; logger = logger; ``` ```csharp _stockService = stockService; } private readonly ILogger _logger; private readonly IOrdersRepository _db; private readonly IStockService _stockService; private readonly IBus _bus; private static readonly Dictionary<string, string> _cs = new { { "Development", "User ID=root;Password=myPassword;Host=localhost;Port=5432;Database=myDataBase" }, { "Production", "User ID=root;Password=myPassword;Host=prod-db;Port=5432;Database= "Pooling=true;Min Pool Size=0;Max Pool Size=1;" } }; ```
Зачем нужна асинхронность в .NET? Как она работает?
Расскажи о себе, своих интересных и значимых задачах, о чём-то сложном в карьере, чем гордишься.
Чем Entity Framework отличается от Dapper?
В чём разница между RabbitMQ и Kafka?
Дана таблица: create table bank_users ( id bigint generated by default as identity primary key, status int, employee_number varchar(8) unique, first_name varchar(100) not null, last_name varchar(100) not null, middle_name varchar(100) default null, email varchar(100) not null unique, created_at_date_time timestamptz ); create index ix_created_at_date_time_status on bank_users (created_at_date_time, status); Есть запрос: explain (costs off, verbose) select employee_number, first_name, last_name from bank_users where status = 2 order by created_at_date_time; Возвращает: Sort Output: employee_number, first_name, last_name, created_at_date_time Sort Key: bank_users.created_at_date_time -> Seq Scan on bank_users Output: employee_number, first_name, last_name, created_at_date_time Filter: (bank_users.status = 2) Что можно сказать об оптимальности плана запроса?
IMemoryCache Какие плюсы и минусы использования IMemoryCache в приложении? OWASP top 10, что это такое? Метрики кода 1. Какие метрики качества кода знаете? 2. Использовали? 3. Как считали? 4. Часть CI или adhoc Нагрузка Что будете делать если ваш сервис (веб страница) зависает на тестовом или нагруженном контуре, а локально все работает?
Есть медленный SELECT-запрос, который со временем стал выполняться дольше. Как диагностировать проблему?
Как работает конструкция async/await? В каком потоке выполняется код после await?
Как обрабатывать бизнес-ошибки и возвращать правильные HTTP-коды клиенту?
Что использовали для трейсинга и метрик?
Приложение с БД — работает в одной среде, деградирует в другой. Почему?