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
- Invertire un numero senza usare le stringhe
- Rimuovere le parentesi invalide
- Sommare due numeri rappresentati da due liste concatenate
- Trovare la sottosequenza palindroma più lunga all’interno di una stringa
- Trovare se un numero è pandigitale
- Ottenere se un numero è palindromo