Cosa si può dire sull'ottimizzazione del piano di query? MVCC C'è una tabella CREATE TABLE orders ( id BIGSERIAL PRIMARY KEY, status TEXT, updated_at TIMESTAMP ); e una query che viene eseguita ogni secondo UPDATE orders SET status = 'processed', updated_at = now() WHERE id = 1; Dopo alcuni giorni, si nota: • la dimensione della tabella è cresciuta molto • la query SELECT * FROM orders WHERE id = 1 funziona più lentamente Domande per il candidato 1. Perché la tabella cresce, anche se la riga è sempre la stessa? 2. Quale ruolo gioca MVCC in questa situazione? 3. Cosa dovrebbe risolvere questo problema?
C#
Cos'è IAsyncDisposable?
Conosci vacuum e vacuum full?
Cosa mostrerà il programma con async/await: main stampa A, chiama saySomething (statico, restituisce Task), aspetta 5 secondi, poi D?
Tipi di transazioni / livelli di isolamento?
Cosa mostrerà il programma se throw viene decommentato nei punti indicati?
Qual è un altro problema con il multithreading nel metodo Init?
Non funzionava con Linq2DB?
Come rendere una classe iterabile?
IMemoryCache — cos'è e quando usarlo?
Quale stack tecnologico avete usato?
Revisione: codice applicato La classe contiene la logica per elaborare nuovi ordini. Estrae gli ordini e le posizioni dal database, quindi effettua una chiamata HTTP a un microservizio esterno Stock, che riserva i prodotti in base alle posizioni dell'ordine. Se tutte le riserve vengono completate con successo, il microservizio conferma la riserva dell'ordine in Stock e segna l'ordine come elaborato. Il microservizio viene eseguito in più istanze, quindi il metodo Process può essere eseguito in parallelo. Per evitare di elaborare le stesse righe, viene utilizzato un meccanismo di blocco pessimistico in PostgreSQL Select for update ... skip locked. L'implementazione di IBus invia messaggi a 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;" } }; ```
Quando avviene la chiusura (closure)?
Parlami dell'ultimo posto di lavoro — Severstal. Cosa facevi, quanto hai lavorato lì, quale stack tecnologico?
Perché una struct non può ereditare?
Quanto spazio di memoria occupa un'istanza di Date in sistemi a 32 e 64 bit?
IMemoryCache Quali sono i vantaggi e gli svantaggi dell'utilizzo di IMemoryCache in un'applicazione? Cos'è il top 10 di OWASP? Metriche del codice 1. Quali metriche di qualità del codice conosci? 2. Le hai usate? 3. Come le hai calcolate? 4. Fanno parte di CI o sono ad hoc? Carico Cosa faresti se il tuo servizio (pagina web) si blocca in un ambiente di test o di carico, ma localmente tutto funziona?
Come correggere per visualizzare 0-9?
Come funzionano le transazioni con le versioni in MVCC?
Perché un'applicazione con database funziona in un ambiente e si degrada in un altro?