Questions d'entretiens sur Python [clôturé]

25

Je vais interviewer dans les deux semaines pour un stage qui impliquerait la programmation Python.

Quelqu'un peut-il suggérer les zones possibles à polir? Je recherche des informations fréquemment posées dans les interviews pour les ouvertures Python. Hormis le fait que je fais déjà la langue depuis plus d'un an maintenant, je ne vois pas ce qu'ils peuvent me demander.

Comme pour une interview en C ou C ++, il y a beaucoup de questions allant de l'inversion des chaînes à la construction de listes chaînées, mais pour une interview en Python, je ne sais rien.

Les expériences personnelles et / ou suggestions sont les bienvenues.


la source
Si c'est un stage, et que vous programmez en Python depuis un an déjà, je pense que ça va aller. Tha dit, je pense que la nature générale des questions pour Python sera la même que celles que vous avez mentionnées pour c ++.
Robert Harvey
Robert, la programmation sans aucune supervision ni orientation est ce qui me dérange. Peut-être que je manque dans certains domaines.
1
S'il s'agit d'un stage, pourquoi n'aurez-vous pas de conseils? C'est la définition même d'un stage. Cela dit, les stagiaires où je travaille ne reçoivent pas de cours de programmation, mais ils reçoivent des instructions de travail et des attentes claires. En tant que stagiaire, ils devraient s'attendre à ce que vous appreniez sur le tas et que le travail prenne un peu plus de temps qu'il ne le ferait si quelqu'un d'expérience le faisait.
Robert Harvey
Vous faites une erreur courante que beaucoup de gens font en sortant de l'école - une entrevue n'est pas un test, c'est plus comme aller à un premier rendez-vous. Un bon intervieweur ne vous cassera pas la tête en essayant de savoir si vous connaissez les coins sombres d'une langue, mais plutôt en établissant, en général, si vous la connaissez réellement. Un bon intervieweur se concentrera sur les connaissances générales en programmation, les compétences en résolution de problèmes, les compétences interpersonnelles et l'expérience. Si quelqu'un commence à demander les détails de la façon dont les stagiaires Python cordent, cela signifie qu'ils sont perdus et ne savent pas comment interviewer.
Sean McSomething

Réponses:

8

Voici quelques exemples faciles:

  1. Que sont les décorateurs Python et comment les utiliseriez-vous?
  2. Comment déboguez-vous votre code Python?
  3. Comment pourriez-vous configurer de nombreux projets où chacun utilise différentes versions de Python et de bibliothèques tierces?
  4. Suivez-vous PEP8 lors de l'écriture de votre code?
Thierry Lam
la source
7

Que diriez-vous de quelque chose impliquant des compréhensions de liste Python ? Pour moi, c'était l'un des gros arguments de vente sur C ++, après avoir lu à leur sujet dans Dive into Python .

"Écrivez une compréhension de liste qui construit une liste des nombres pairs de 1 à 10 (inclus)".
Où la réponse est quelque chose comme ça (notez que les valeurs de plage évitent une erreur fencepost):

foo = [x for x in range(1, 11) if (x % 2) == 0]
print foo
[2, 4, 6, 8, 10]

D'ailleurs, si vous comprenez tous les concepts répertoriés dans Plonger dans Python, cela devrait couvrir la plupart des fonctionnalités importantes.

cyclope
la source
13
C'est antipythonique. En Python 2.x, vous faites juste range(2,11,2)et en Python 3.x, list(range(2,11,2)).
Chinmay Kanchi
@Cyclops, on dirait que vous devez interviewer pour votre propre emploi chez INNOTECH.
Job
5
@Chinmay Kanchi Bien que je ne pense pas que ce serait une bonne question d'entrevue, la plupart des introductions aux fonctionnalités avancées font les choses les plus simples possibles (pour ne pas dérouter le lecteur). Bien qu'il existe une solution plus simple à ce problème spécifique, il ne s'agissait pas de répondre à ce problème spécifique. Le but était d'utiliser une compréhension de liste (qui sont très efficaces et un moyen notable d'optimiser les choses en Python).
jsternberg
6

Est-ce que Python passe par référence ou passe par valeur est également une très bonne question.

ismail
la source
1
Une excellente question de suivi serait de demander comment ils peuvent le montrer et pourquoi c'est important
mcotton
@Ismail - Désolé, mais pourquoi est-ce une bonne question?
Theodor
7
@Cervo: Si je comprends bien, Python est une valeur de passage tout comme la façon dont C #, Java, Scheme, etc. sont une valeur de passage ... le seul langage de référence par passage que j'ai vu est le VB6, où tout est passé par référence, sauf indication contraire. Le fait que vous pouvez muter les objets ne fait pas passer par référence de quelque façon, et le fait que vous pouvez avoir des objets immuables ne signifie pas qu'ils sont passés par valeur , soit ... pour dire " la réponse n'est ni " est complètement faux . Je suis très désolé pour le candidat dont l'intervieweur pense que la réponse est "ni" ...
Mehrdad
1
@Cervo: Pour info, même la réponse 100+ votée dans votre lien contredit votre argument: il dit clairement que "les paramètres sont passés par valeur".
Mehrdad
11
Je crois que la bonne réponse est: "Les paramètres sont des références qui sont passées par valeur."
user16764
6

Questions qui m'ont été posées:

  • Décrivez deux méthodes de méta-programmation en Python.
  • Qu'est-ce que le GIL?
  • Pourquoi le GIL est-il important?
  • Pourquoi existe-t-il une implémentation alternative de Python appelée Unladen Swallow ?
  • Django, Pylons ou Zope? Défendez votre position.
Scant Roger
la source
5

Je n'ai pas de telles expériences, mais voici quelques suppositions:

  1. (Immutabilité
  2. Fonctions / classes de première classe
  3. Fermetures

C'est quelque chose que le programmeur python devrait savoir, sinon vous pouvez également embaucher un programmeur C pour le poste.

Kugel
la source
3

Je suivrais la liste dans cette réponse . Essayez de rafraîchir autant que possible ce que vous savez en suivant cette liste. Ne vous inquiétez pas si vous ne pouvez pas le faire jusqu'à la fin.

Benjamin Bannier
la source
2

Quel est votre sens, vont-ils essayer de tester si vous connaissez Python, voir si vous pouvez faire avancer les choses en Python, ou tester si vous pouvez programmer (en Python)?

Ce sont des choses très différentes.

S'ils veulent que vous montriez que vous connaissez Python, ils peuvent vous forcer à faire des choses comme créer un générateur, puis faites-le sans utiliser yield. Expliquez comment fonctionnent les classes. Expliquez l'ordre de résolution de la méthode C3. Etc.

S'ils veulent que vous montriez que vous pouvez faire avancer les choses en Python, vous devrez être compétent avec les structures de données de base et avoir une liste de bibliothèques vers lesquelles vous iriez pour différents types de tâches. Vous devez donc être à l'aise avec les dictionnaires, les ensembles et les tableaux. De même, vous devez savoir des choses comme l' BeautifulSoupanalyse de HTML, être capable de parler d'un cadre qui pourrait être utilisé pour le développement Web, etc. Vous n'avez pas nécessairement besoin de savoir comment bien utiliser ces choses, mais vous devez savoir où allez, comment en savoir plus et être en mesure de les utiliser une fois que l'intervieweur vous a donné des choses qui sont documentées.

S'ils veulent que vous montriez que vous pouvez programmer (en Python), vous devrez connaître les structures de données de base et connaître vos algorithmes. Ceci est beaucoup plus proche des questions C / C ++ qui vous seraient posées, sauf que vous devrez utiliser des structures de données natives où cela vous facilitera la vie.

Pour être en sécurité, vous devez vous préparer dans une certaine mesure aux trois. Par exemple, lisez http://docs.python.org/tutorial/ et prenez quelques notes pour vous. J'espère que vous savez déjà programmer. Et puis essayez quelques tâches aléatoires et forcez-vous à utiliser des bibliothèques que vous pourriez avoir manquées. Ainsi, par exemple, lisez du CSV, extrayez des informations par programmation d'une page Web, créez un petit site Web avec un cadre, etc.

btilly
la source