Python est-il adapté aux structures de données et aux algorithmes ?
Oui, et pour apprendre, c'est sans doute le meilleur choix : le code est court, donc ce que tu lis, c'est l'algorithme, pas la syntaxe autour. Deux compromis sont à connaître. Python est plus lent que Java ou C++, ce qui compte face aux limites de temps serrées de la programmation compétitive mais rarement en entretien, et ses structures natives masquent les coûts sur lesquels tu apprends à raisonner ; c'est pourquoi ce parcours te les fait construire d'abord.
Quelles structures de données Python faut-il connaître pour les entretiens techniques ?
list (un tableau dynamique), dict et set (des tables de hachage), tuple, collections.deque (une file rapide aux deux extrémités), heapq (un tas-min binaire sur une liste) et collections.Counter. Connais le coût de chaque opération, pas seulement son nom. Python n'a ni liste chaînée, ni arbre, ni trie, ni graphe natifs, donc ceux-là, tu les écris toi-même, aux étapes une et deux.
Pourquoi implémenter une pile ou une file quand Python les fournit déjà ?
Parce qu'en entretien, on te demande rarement d'utiliser une file, et souvent pourquoi ta solution est lente. Une file construite sur une list paie chaque pop(0), car tous les éléments restants se décalent d'une place ; deque.popleft(), non. C'est en implémentant chaque structure une fois que tu apprends les coûts assez bien pour choisir la bonne sans réfléchir.
Python est-il assez rapide pour la programmation compétitive ?
Pour la plupart des problèmes, oui. Avec des limites de temps serrées, C++ est le choix le plus sûr, ce qui explique que la plupart des programmeurs compétitifs l'utilisent, et beaucoup de juges en ligne proposent PyPy, qui exécute le même code Python bien plus vite. En entretien, la vitesse à laquelle tu écris compte bien plus que la vitesse d'exécution du code, et là, Python l'emporte.
Quelle est la limite de récursion de Python, et compte-t-elle pour le DSA ?
Par défaut, CPython s'arrête à une profondeur de 1 000 appels, donc un parcours en profondeur récursif sur une longue chaîne peut lever une RecursionError. Tu peux relever la limite avec sys.setrecursionlimit, mais la meilleure habitude, celle que les recruteurs aiment voir, c'est de savoir remplacer la récursion par une boucle et une pile explicite : la structure que tu construis à l'étape une.
Faut-il connaître Python avant de commencer ce parcours ?
Tu dois être à l'aise avec les fonctions, les boucles, les listes et les dictionnaires, et idéalement les classes, puisque chaque structure ici est écrite sous forme de classe. Si tu n'en es pas encore là, le cours Python de Coddy t'y amène d'abord, gratuitement, et ce parcours prend le relais là où il s'arrête.