Co można powiedzieć o optymalności planu zapytania? MVCC Istnieje tabela CREATE TABLE orders ( id BIGSERIAL PRIMARY KEY, status TEXT, updated_at TIMESTAMP ); i zapytanie wykonywane co sekundę UPDATE orders SET status = 'processed', updated_at = now() WHERE id = 1; Po kilku dniach zauważasz: • rozmiar tabeli znacznie się powiększył • zapytanie SELECT * FROM orders WHERE id = 1 działa wolniej Pytania do kandydata 1. Dlaczego tabela rośnie, choć wiersz jest zawsze ten sam? 2. Jaką rolę odgrywa MVCC w tej sytuacji? 3. Co powinno rozwiązać ten problem?
C#
Czym jest IAsyncDisposable?
Czy znasz vacuum i vacuum full?
Co wyświetli program z async/await: main wyświetla A, wywołuje saySomething (statyczne, zwraca Task), czeka 5 sekund, potem D?
Typy transakcji / poziomy izolacji?
Co wyświetli program, jeśli throw zostanie odkomentowane w wskazanych miejscach?
Jaki jest inny problem z wielowątkowością w metodzie Init?
Nie działało z Linq2DB?
Jak uczynić klasę iterowalną?
Jakiego stosu technologii użyli?
IMemoryCache — co to jest i kiedy go używać?
Przegląd: kod zastosowany Klasa zawiera logikę obsługi nowych zamówień. Wyciąga zamówienia i pozycje z bazy danych, a następnie wykonuje wywołanie HTTP do zewnętrznego mikroserwisu Stock, w którym rezerwuje produkty według pozycji zamówienia. Jeśli wszystkie rezerwacje zakończą się powodzeniem, mikroserwis potwierdza rezerwację zamówienia w Stock i oznacza zamówienie jako przetworzone. Mikroserwis jest uruchamiany w kilku instancjach, więc metoda Process może być wykonywana równolegle. Aby uniknąć przetwarzania tych samych linii, używa się mechanizmu pesymistycznego blokowania PostgreSQL Select for update ... skip locked. Implementacja IBus wysyła wiadomości do 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;" } }; ```
Kiedy dochodzi do zamknięcia (closure)?
Opowiedz o swoim ostatnim miejscu pracy — Severstal. Czym się zajmowałeś, ile tam pracowałeś, jaki stos technologiczny?
Dlaczego struct nie może dziedziczyć?
Ile pamięci zajmuje instancja Date w systemach 32- i 64-bitowych?
Jak naprawić, aby wyświetlało 0-9?
IMemoryCache Jakie są zalety i wady korzystania z IMemoryCache w aplikacji? Czym jest top 10 OWASP? Metryki kodu 1. Jakie metryki jakości kodu znasz? 2. Używałeś ich? 3. Jak je obliczałeś? 4. Czy są częścią CI czy ad hoc? Obciążenie Co byś zrobił, gdy Twój serwis (strona internetowa) zawiesza się na środowisku testowym lub obciążeniowym, a lokalnie wszystko działa?
Jak działają transakcje z wersjami w MVCC?
Dlaczego aplikacja z bazą danych działa w jednym środowisku, a w innym się pogarsza?