In questa pagina raccolgo tutti i problemi risolti che ho raccolto nel tempo e i “tricks” che si ripetono spesso in tali problemi. Le pagine con i problemi risolti hanno il tag #Interview mentre quelle con i “trucchi” hanno il tag #Tricks.

Teoria dell’informatica

Algoritmi e strutture dati

  • Come implementeresti una coda con due stack?
  • Spiega come funziona un heap (min/max) e dove lo useresti.
  • Implementa una LRU cache. Quali strutture dati useresti?
  • Spiega come funziona un Trie. Come ottimizzarlo per spazio?
  • Come implementeresti un grafo in C#?
  • Trova se un grafo ha un ciclo (diretto o indiretto).
  • Come calcoli il percorso minimo in un grafo? (es. Dijkstra)
  • Differenza tra BFS e DFS. Quando usare uno rispetto all’altro?
  • Come implementeresti una priority queue custom?
  • Qual è la differenza tra array, lista collegata, e span in C#?

Hashing e Hashtable

  • Come eviteresti attacchi DoS tramite collisioni hash intenzionali?
  • Come implementeresti una funzione hash per strutture custom?
  • Spiega il concetto di “load factor” in una hash table.
  • Come implementeresti un set (insieme) da zero?
  • Differenze tra Dictionary e ConcurrentDictionary in C#.

Sorting & Searching

  • Qual è la differenza tra merge sort, quicksort e heap sort?
  • Come modificheresti il binary search per trovare il primo/ultimo elemento uguale?
  • Come faresti un sort esterno (file molto grandi)?
  • Come cercheresti un valore in una matrice ordinata per righe e colonne?
  • Implementa una ricerca binaria in un array ruotato.

Design Patterns & Architettura

  • Quali pattern useresti per implementare un plugin system?
  • Spiega la differenza tra Strategy e State pattern.
  • Quali trade-off ci sono tra CQRS e CRUD classico?
  • Come struttureresti una libreria che espone un’API thread-safe?
  • Qual è la differenza tra immutabilitĂ  e thread safety?

System Design & Performance

  • Come costruiresti un sistema per gestire milioni di richieste al secondo?
  • Cosa succede se la tua applicazione genera troppa garbage? Come risolvere?
  • Come gestiresti la sincronizzazione tra thread senza usare lock?
  • Spiega cosa sono false sharing e cache line.
  • Cosa succede quando usi troppa memoria in un processo C#?

Problemi

Tricks