Studia per materia
Colloqui di programmazione
Per un colloquio di programmazione impari a memoria complessità, strutture dati, pattern algoritmici e domande di design. Lumi te li richiede finché non riesci a produrli senza bloccarti alla lavagna.

Come trasformare questa materia in carte
Crea una card per struttura dati con il costo di ogni operazione, e una card per pattern algoritmico, come due puntatori o la finestra scorrevole, con il segnale che ti fa riconoscere. Per il design, una card per componente, come la cache, la coda di messaggi o il load balancer, con il suo ruolo. La trappola è risolvere cento problemi senza mai fissare i pattern, e inciampare sempre sullo stesso tipo di domanda. Con Lumi descrivi la soluzione a memoria prima di vederla, e quel richiamo costruisce il riflesso (Roediger e Karpicke, 2006). Torna su un pattern a distanza di diversi giorni, e pronuncia sempre la complessità ad alta voce (Cepeda e altri, 2006).
Quello che devi sapere a memoria
- Complessità temporale e spaziale delle operazioni usuali, notazione Big O.
- Strutture dati, array, lista concatenata, stack, coda, tabella hash, albero, grafo.
- Pattern algoritmici, due puntatori, finestra scorrevole, ricorsione, programmazione dinamica.
- Ordinamenti e visite classiche, con il loro costo.
- I mattoni delle domande di design, cache, coda di messaggi, load balancer, database.
Come Lumi ti aiuta a ricordarlo

Insegni le tue card a Lumi, complessità, strutture, pattern, design. Dimentica col tempo, come te, poi ti interroga appena prima che tu dimentichi. Con l'avvicinarsi del colloquio, la Nebbia si posa su ciò che sai meno bene, la programmazione dinamica o i grafi per esempio, e Lumi chiede prima quello. Arrivi che riconosci subito il pattern.
Flashcard di esempio
Tre flashcard scritte come le scriveresti tu, con la risposta che Lumi si aspetta.
Qual è la complessità della ricerca binaria?
O(log n) su un array ordinato.
Quale struttura funziona secondo il principio last in, first out?
Lo stack.
Quale segnale indica una finestra scorrevole?
Una domanda su un sottoarray o una sottostringa contigui da ottimizzare.
Carta di esempio
Provala, Lumi la trasforma in domande a completamento nel tuo browser.
Colloqui di programmazione · insegna questa scheda a Lumi
La ricerca binaria su un array ordinato gira in tempo O(log n). Una tabella hash dà accesso medio in tempo O(1). Uno stack funziona secondo il principio last in, first out. Una visita in ampiezza di un grafo usa una coda.
La domanda di Lumi
La ricerca binaria su un array ordinato gira in tempo O(_____).
Scegli la parola mancante


Rispondi bene per accendere Lumi
La sua lampada si spegne quando un fatto sfugge.
Domande frequenti
- Quanti problemi devo risolvere prima di un colloquio?
- Il numero conta meno di ciò che ne trattieni. Dopo ogni problema, metti il pattern su una card e lascia che Lumi te lo richieda così resta.
- Come ripasso le domande di system design?
- Una card per componente con il suo ruolo e i compromessi. Lumi te le richiede, e poi metti insieme le risposte ad alta voce.
- Lumi sostituisce la pratica su una piattaforma di problemi?
- No, le due cose lavorano insieme. La piattaforma ti dà i problemi, e Lumi ti fa trattenere le complessità e i pattern che ne derivano.
Leggi dopo
Fonti
- Roediger, Karpicke (2006). Test-enhanced learning. Taking memory tests improves long-term retention. Psychological Science, 17(3). doi.org/10.1111/j.1467-9280.2006.01693.x
- Cepeda, Pashler, Vul, Wixted, Rohrer (2006). Distributed practice in verbal recall tasks. A review and quantitative synthesis. Psychological Bulletin, 132(3). doi.org/10.1037/0033-2909.132.3.354
Insegna questo a Lumi
Dai a Lumi i tuoi appunti di colloqui di programmazione, te li restituisce sotto forma di domande al momento giusto.


