Questions d'entretien Python, avec des réponses à exécuter
Les entretiens Python mêlent quelques échauffements de code et des questions sur le fonctionnement du langage. Voici celles qui reviennent le plus souvent. Chaque exemple ci-dessous a été exécuté, et le résultat affiché est exact : vous pouvez vous y fier lorsque vous l'expliquez à voix haute.
Inverser une chaîne de caractères
Un découpage avec un pas de -1 parcourt la chaîne à l'envers. Cela fonctionne sur toute séquence, y compris les listes.
print("python"[::-1])Sortie :
nohtyp
Une liste contient-elle des doublons ?
Un ensemble (set) ne garde chaque valeur qu'une fois. Si l'ensemble est plus court que la liste, c'est qu'une valeur s'est répétée. Énoncez le coût à voix haute : il s'agit d'un seul passage, et les éléments doivent être hachables.
numbers = [1, 2, 3, 2, 1] print(len(numbers) != len(set(numbers)))
Sortie :
True
Deux mots sont-ils des anagrammes ?
Deux mots sont des anagrammes lorsque leurs lettres triées sont identiques.
print(sorted("listen") == sorted("silent"))Sortie :
True
Listes contre tuples
Les listes peuvent être modifiées après leur création, pas les tuples. Les tuples servent aux groupes fixes, comme un point, et comme ils ne peuvent pas changer, ils peuvent servir de clés de dictionnaire.
point = (3, 4)
try:
point[0] = 9
except TypeError:
print("tuples cannot change")Sortie :
tuples cannot change
is contre ==
== vérifie si deux valeurs sont égales. is vérifie s'il s'agit du même objet en mémoire. Deux listes distinctes au contenu identique sont égales, mais ne sont pas le même objet.
a = [1, 2] b = [1, 2] print(a == b) print(a is b)
Sortie :
True False
Le piège de l'argument par défaut modifiable
Une valeur par défaut est créée une seule fois, à la définition de la fonction, et non à chaque appel. Avec une liste comme valeur par défaut, chaque appel partage la même liste. C'est le piège le plus célèbre de Python.
def add_item(item, items=[]):
items.append(item)
return items
print(add_item("a"))
print(add_item("b"))Sortie :
['a'] ['a', 'b']
La solution : utiliser None
Utilisez None comme valeur par défaut, et créez la liste à l'intérieur de la fonction. Ainsi, chaque appel repart à zéro.
def add_item(item, items=None):
if items is None:
items = []
items.append(item)
return items
print(add_item("a"))
print(add_item("b"))Sortie :
['a'] ['b']
Questions fréquentes
- Quels sujets Python les entretiens abordent-ils le plus ?
- Les chaînes, les listes, les dictionnaires et les ensembles pour l'échauffement de code, puis les fonctions, les erreurs, les classes, et le comportement des types modifiables et non modifiables. Connaissez le coût des opérations courantes et expliquez votre choix de structure de données.
- Faut-il mémoriser les solutions ?
- Comprenez plutôt l'idée derrière chacune. Si vous pouvez expliquer pourquoi un ensemble trouve les doublons en un seul passage, vous saurez résoudre la variante suivante que vous n'avez jamais vue.
- Comment s'entraîner à expliquer sa réponse ?
- Exécutez chaque exemple, puis dites à voix haute ce qu'il affiche et pourquoi, avant de lire l'explication. Les recruteurs accordent autant d'importance à votre raisonnement qu'au code.