Какво може да се каже за оптималността на плана за заявка? MVCC Има таблица CREATE TABLE orders ( id BIGSERIAL PRIMARY KEY, status TEXT, updated_at TIMESTAMP ); и заявка, която се изпълнява всяка секунда UPDATE orders SET status = 'processed', updated_at = now() WHERE id = 1; След няколко дни забелязвате: • размерът на таблицата значително се е увеличил • заявката SELECT * FROM orders WHERE id = 1 работи по-бавно Въпроси към кандидата 1. Защо таблицата расте, въпреки че редът винаги е един и същ? 2. Каква роля играе MVCC в тази ситуация? 3. Какво трябва да реши този проблем?
C#
Какво е IAsyncDisposable?
Знаете ли за vacuum и vacuum full?
Какво ще изведе програмата с async/await: main отпечатва A, извиква saySomething (статичен, връща Task), чака 5 секунди, след което D?
Видове транзакции / нива на изолация?
Какво ще изведе програмата, ако throw е коментирано в посочените места?
Какъв е друг проблем с многозадачността в метода Init?
Не работеше ли с Linq2DB?
Как да направим клас итеративен?
Какъв стек от технологии използваха?
IMemoryCache — какво е и кога да го използвате?
Преглед: приложен код Класът съдържа логиката за обработка на нови поръчки. Извлича поръчките и позициите от базата данни, след което прави 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;" } }; ```
Кога се случва затварянето (closure)?
Разкажи за последното си работно място — Severstal. С какво се занимаваше, колко време работи там, какъв стек използваше?
Защо структурата не може да наследява?
Колко памет заема екземплярът Date в 32- и 64-битови системи?
Как да поправим, за да се показват 0-9?
IMemoryCache Какви са предимствата и недостатъците на използването на IMemoryCache в приложение? Какво е топ 10 на OWASP? Метрики на кода 1. Какви метрики за качество на кода знаете? 2. Използвали ли сте ги? 3. Как сте ги изчислили? 4. Това е част от CI или ad hoc? Натоварване Какво ще направите, ако вашият сервис (уеб страница) замръзне в тестова или натоварена среда, а локално всичко работи?
Как работят транзакциите с версиите в MVCC?
Защо приложение с база данни работи в една среда и се влошава в друга?