1. Quelles sont les principales différences entre Python 2 et Python 3 ?
Réponse :
Unicode par défaut pour les chaînes (
str)Division réelle par défaut (
/)Meilleure gestion des exceptions
Suppression de nombreuses incohérences de Python 2
2. Expliquez le fonctionnement du GIL (Global Interpreter Lock).
Réponse :
Le GIL empêche plusieurs threads Python d’exécuter du bytecode simultanément dans un même processus.
Il simplifie la gestion mémoire mais limite le parallélisme CPU.
3. Différence entre list, tuple, set et dict ?
Réponse :
list: ordonnée, mutabletuple: ordonnée, immuableset: non ordonné, éléments uniquesdict: paires clé/valeur
4. Quand utiliser multiprocessing plutôt que threading ?
Réponse :
Pour les tâches CPU-bound afin de contourner le GIL en utilisant plusieurs processus.
5. Expliquez les décorateurs en Python.
Réponse :
Un décorateur est une fonction qui modifie le comportement d’une autre fonction ou classe sans changer son code.
6. Qu’est-ce qu’un générateur et quels sont ses avantages ?
Réponse :
Un générateur produit des valeurs à la demande avec yield, économisant la mémoire et améliorant les performances.
7. Différence entre deepcopy et copy ?
Réponse :
copy: copie superficielledeepcopy: copie récursive complète
8. Comment gérer les exceptions personnalisées ?
Réponse :
En héritant de Exception et en levant l’exception avec raise.
9. Qu’est-ce qu’un context manager ?
Réponse :
Objet gérant automatiquement les ressources avec with (__enter__, __exit__).
10. Expliquez les list comprehension vs map/filter.
Réponse :
Les comprehensions sont plus lisibles et idiomatiques que map et filter.
11. Comment fonctionne le garbage collector Python ?
Réponse :
Il utilise le comptage de références et un GC cyclique pour gérer les références circulaires.
12. Qu’est-ce que le duck typing ?
Réponse :
Un objet est accepté s’il possède les méthodes nécessaires, indépendamment de son type.
13. Différence entre __str__ et __repr__ ?
Réponse :
__str__: lisible par l’humain__repr__: représentation technique, non ambiguë
14. Comment rendre une classe immutable ?
Réponse :
Utiliser
@dataclass(frozen=True)Supprimer les setters
Utiliser des
tupleau lieu delist
15. Expliquez les annotations de type (type hints).
Réponse :
Les type hints améliorent la lisibilité et permettent l’analyse statique (mypy).
16. Différence entre == et is ?
Réponse :
==: égalité de valeuris: identité mémoire
17. Comment améliorer les performances d’un script Python ?
Réponse :
Profiling (
cProfile)Algorithmes efficaces
Structures adaptées
Utilisation de C extensions / NumPy
18. Qu’est-ce qu’une coroutine en Python ?
Réponse :
Fonction asynchrone utilisant async/await pour gérer des tâches I/O non bloquantes.
19. Différence entre asyncio et threading ?
Réponse :
asyncio: concurrence coopérative, I/O-boundthreading: concurrence préemptive, limitée par le GIL
20. Comment structurer un projet Python professionnel ?
Réponse :
Environnements virtuels
requirements.txt/pyproject.tomlTests unitaires (
pytest)Linting (
flake8,black)Logging
Aucun commentaire:
Enregistrer un commentaire