Domande da colloquio su Python, con risposte che puoi eseguire
I colloqui su Python alternano qualche esercizio di riscaldamento a domande su come si comporta il linguaggio. Queste sono quelle che capitano più spesso. Ogni esempio qui sotto è stato eseguito e l'output mostrato è esatto, così puoi fidarti quando lo spieghi a voce.
Invertire una stringa
Lo slicing con passo -1 percorre la stringa all'indietro. Funziona su qualsiasi sequenza, comprese le liste.
print("python"[::-1])Output:
nohtyp
Una lista contiene duplicati?
Un set conserva ogni valore una sola volta. Se il set è più corto della lista, qualcosa si è ripetuto. Spiega ad alta voce il costo: è un'unica passata, e gli elementi devono essere hashable.
numbers = [1, 2, 3, 2, 1] print(len(numbers) != len(set(numbers)))
Output:
True
Due parole sono anagrammi?
Due parole sono anagrammi quando le loro lettere ordinate sono uguali.
print(sorted("listen") == sorted("silent"))Output:
True
Liste contro tuple
Le liste possono cambiare dopo essere state create, le tuple no. Le tuple si usano per gruppi fissi, come un punto, e poiché non possono cambiare possono essere chiavi di un dizionario.
point = (3, 4)
try:
point[0] = 9
except TypeError:
print("tuples cannot change")Output:
tuples cannot change
is contro ==
== verifica se due valori sono uguali. is verifica se sono proprio lo stesso oggetto in memoria. Due liste separate con lo stesso contenuto sono uguali ma non sono la stessa cosa.
a = [1, 2] b = [1, 2] print(a == b) print(a is b)
Output:
True False
La trappola dell'argomento predefinito mutabile
Un valore predefinito viene creato una sola volta, quando la funzione viene definita, non a ogni chiamata. Se il valore predefinito è una lista, ogni chiamata condivide la stessa lista. È la trappola più famosa di Python.
def add_item(item, items=[]):
items.append(item)
return items
print(add_item("a"))
print(add_item("b"))Output:
['a'] ['a', 'b']
La soluzione: usa None
Usa None come valore predefinito e crea la lista dentro la funzione. Ora ogni chiamata parte da zero.
def add_item(item, items=None):
if items is None:
items = []
items.append(item)
return items
print(add_item("a"))
print(add_item("b"))Output:
['a'] ['b']
Domande comuni
- Su quali argomenti si concentrano di più i colloqui su Python?
- Stringhe, liste, dizionari e set per il riscaldamento di codice, poi funzioni, errori, classi e come si comportano i tipi mutabili e immutabili. Conosci il costo delle operazioni più comuni e spiega la tua scelta della struttura dati.
- Devo memorizzare le soluzioni?
- Capisci invece l'idea alla base di ciascuna. Se sai spiegare perché un set trova i duplicati in una sola passata, saprai risolvere la variante successiva che non hai mai visto.
- Come mi alleno a spiegare la mia risposta?
- Esegui ogni esempio, poi dì ad alta voce cosa stampa e perché, prima di leggere la spiegazione. Gli intervistatori si interessano al tuo ragionamento tanto quanto al codice.