Ce se poate spune despre optimizarea planului de interogare? MVCC Există un tabel CREATE TABLE orders ( id BIGSERIAL PRIMARY KEY, status TEXT, updated_at TIMESTAMP ); și o interogare care rulează în fiecare secundă UPDATE orders SET status = 'processed', updated_at = now() WHERE id = 1; După câteva zile, observați: • dimensiunea tabelului a crescut semnificativ • interogarea SELECT * FROM orders WHERE id = 1 devine mai lentă Întrebări pentru candidat 1. De ce crește tabelul, chiar dacă rândul este întotdeauna același? 2. Ce rol joacă MVCC în această situație? 3. Ce ar trebui să rezolve această problemă?
C#
Ce este IAsyncDisposable?
Știți despre vacuum și vacuum full?
Ce va afișa programul cu async/await: main afișează A, apelează saySomething (static, returnează Task), așteaptă 5 secunde, apoi D?
Tipuri de tranzacții / niveluri de izolare?
Care este o altă problemă cu multithreading-ul în metoda Init?
Ce va afișa programul dacă throw este decomentat în locurile indicate?
Nu funcționa cu Linq2DB?
Cum faci o clasă iterabilă?
Ce stivă de tehnologii au folosit?
IMemoryCache — ce este și când să îl folosiți?
Revizuire: cod aplicat Clasa conține logica pentru procesarea noilor comenzi. Extrage comenzile și pozițiile din baza de date, apoi face o solicitare HTTP către un microserviciu extern Stock, în care rezervă produsele conform pozițiilor comenzii. Dacă toate rezervările sunt efectuate cu succes, microserviciul confirmă rezervarea comenzii în Stock și marchează comanda ca procesată. Microserviciul rulează în mai multe instanțe, așa că metoda Process poate fi executată în paralel. Pentru a evita procesarea aceluiași rând, se utilizează un mecanism de blocare pesimistă în PostgreSQL Select for update ... skip locked. Implementarea IBus trimite mesaje către 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;" } }; ```
Când are loc închiderea (closure)?
Vorbește despre ultimul loc de muncă — Severstal. Cu ce te-ai ocupat, cât timp ai lucrat acolo, ce tehnologie ai folosit?
De ce struct-ul nu poate moșteni?
Câtă memorie ocupă o instanță de Date în sistemele de 32 și 64 de biți?
De ce o aplicație cu bază de date funcționează într-un mediu și se degradează în altul?
Cum să corectați pentru a afișa 0-9?
IMemoryCache Care sunt avantajele și dezavantajele utilizării IMemoryCache într-o aplicație? Ce este top 10 OWASP? Metrice de cod 1. Ce metrice de calitate a codului cunoști? 2. Le-ai folosit? 3. Cum le-ai calculat? 4. Fac parte din CI sau sunt ad hoc? Încărcare Ce ai face dacă serviciul tău (pagina web) se blochează într-un mediu de test sau de încărcare, dar local totul funcționează?
Cum funcționează tranzacțiile cu versiunile în MVCC?