Quelle est votre question d'entrevue préférée? [fermé]

21

Quelle question avez-vous trouvé particulièrement utile pour interroger les développeurs de logiciels? Qu'est-ce que la question a rendu particulièrement utile?

Je recherche une question particulière que vous aimeriez poser, pas seulement une approche d'interview comme "leur faire écrire du code".

Tim Goodman
la source
2
La question - telle qu'elle est formulée - n'est pas constructive, mais contient de bonnes réponses. Reformulez la question pour qu'elle corresponde aux meilleures réponses et je recommanderai qu'elle soit rouverte.
ChrisF
@ChrisF: J'ai reformulé pour essayer d'obtenir un peu plus de "partage d'expériences" et de "demander pourquoi", ce qui devrait également toucher plus de "invite des réponses plus longues". Faites-moi savoir si elle doit être révisée.
Tim Goodman
c'est mieux!
ChrisF
En regardant la question et les réponses maintenant, cela semble encore assez peu constructif. Il ne semble pas que l'une des réponses contienne le «pourquoi» et vient d'énumérer les questions.
Adam Lear

Réponses:

29

Jetez un oeil à cet exemple de code et dites-moi comment vous pouvez l'améliorer.

David Anderson
la source
8
toux toux supprimer?
Craige
22

C'est un peu spécifique à mon scénario, mais je pense que c'était quand même une grande question:

Donc vous dites ici que vous n'avez jamais touché C # ou .NET auparavant, non? Ok, voici donc un poste de travail. Découvrez comment écrire un programme qui interroge cette base de données ici et imprime une liste de clients avec leurs commandes, triées par nom de client. Vous pouvez utiliser la ressource que vous souhaitez.

La seule question que j'ai jamais eue a réellement testé ma capacité à apprendre.

Fishtoaster
la source
était-ce avant que StackOverflow n'existe?
eds
1
Euh, n'est-ce pas censé être une question que vous aimeriez poser?
Paddyslacker
8
+1, c'est une question parfaite à poser. S'ils ne peuvent pas comprendre les constructions de langage de base avec Google, rien ne les sauvera.
Josh K
J'aime ça, cela montre à quel point ils peuvent choisir un langage de programmation qu'ils n'ont jamais utilisé. Je pourrais voler ça pour mes questions d'entrevue :)
Richard
1
Cela semble inutile, tout le monde peut copier-coller du code .net merde directement à partir de msdn.
dotjoe
15

Ce n'est pas une question de codage, mais une question de comportement:

Parlez-moi d'un moment où vous ne pouviez tout simplement pas terminer tout votre travail à temps pour respecter une date limite. Qu'est-ce que tu as fait? Quel a été le résultat?

Paddyslacker
la source
3
Pourquoi est-ce une bonne question? Cela me semble inutile
Joe Phillips
9
Le fait est que la réponse des développeurs m'apporte beaucoup d'informations. Premièrement, s'ils n'admettent pas que cette situation leur soit jamais arrivée, alors ils se sont trompés ou n'ont aucune expérience de projets réels. Deuxièmement, s'ils ne parlent pas de la façon dont ils communiqueraient ce problème à l'équipe, mais parlent plutôt de la façon dont ils travailleraient dur pour le résoudre, je ne veux pas les embaucher. Une mauvaise communication est responsable de la plupart des problèmes que je vois sur les projets. Je veux embaucher des communicateurs proactifs.
Paddyslacker
3
Je poser une même question , plus générale ( « me dire à un moment où quelque chose a mal tourné, et ce que vous avez fait en réponse ... ») très ouverte, et pourtant j'eu une personne interrogée ne jurent que de haut en bas que rien n'a jamais mal tourné pour lui. Inutile de dire que je ne l'ai pas recommandé à la location.
Alex Feinman
13

Comment êtes-vous entré dans la programmation?

Belle façon de voir si la personne a une passion pour la programmation et pour briser la glace.

Gordon
la source
11

Lorsque j'interroge quelqu'un qui prétend avoir une expérience non triviale de Java, je lui pose des questions sur hashcode()et sur equals()la relation entre eux. Il n'est pas vraiment possible d'acquérir une expérience Java significative sans prendre conscience des pièges potentiels et quiconque ignorant le problème va ajouter des bogues difficiles à trouver à mon projet.

Je vais également poser des questions sur ArrayListet LinkedListet les avantages et inconvénients relatifs. J'espère que cela devrait prouver qu'ils sont au moins conscients des implications des performances du code qu'ils écrivent et y réfléchissent.

J'aime aussi leur faire exprimer une opinion sur un sujet technique (l'utilité ou non de Maven, les exceptions vérifiées ou non contrôlées, etc.), puis jouer l'avocat du diable pour voir à quel point ils peuvent argumenter.

Dan Dyer
la source
+1 J'aime ArrayList et LinkedList. J'ai vu beaucoup de commentaires sur SO à propos de personnes disant que les tableaux de tableaux devraient être supprimés, mais je peux penser à de nombreuses utilisations où elles sont meilleures que les listes de liens
Evan Plaice
LOL! Une fois, deux intervieweurs m'ont interrogé sur la différence entre une liste et une carte. Je leur ai donné un regard tellement étonné, ils se sont en fait excusés (puis j'ai répondu à leur question et nous avons continué l'interview, bien sûr).
Hila
6

"Quel est le dernier (meilleur) livre technique que vous ayez lu?"

ou, plus généralement:

"Comment gardez-vous vos connaissances à jour?"

C'est incroyable combien de personnes n'ont jamais lu un livre technique depuis la fin de leurs études. Et si vous n'avez jamais lu de livre depuis la fin de vos études et de vos études il y a dix ans, vous n'avez probablement jamais entendu parler de choses comme les tests unitaires, les modèles de conception, les principes SOLIDES ...

Réponse au commentaire :

Vous pouvez me déprécier si vous le souhaitez, mais c'est l'une de mes questions d'entrevue préférées. Les blogs, wikipedia, SO sont tous d'excellentes sources pour les dernières nouvelles de haute technologie. Mais je ne pense pas que vous puissiez apprendre des sujets vraiment complexes (comme les trucs que vous trouvez dans les livres de Knuth) en profondeur en lisant des blogs.

Si je dois choisir entre deux développeurs, où l'un montre cette volonté d'apprendre de nouveaux sujets complexes et l'autre pas, j'engagerai le premier. Même s'il veut plus d'argent. Cela va porter ses fruits à long terme.

nikie
la source
-1. J'ouvre rarement des livres techniques, mais je sais ce qu'est le TTD et je connais certains des modèles de conception. J'ai appris beaucoup plus de SO (par exemple ce qui est le modèle d'usine) et des blogs de Jon Skeet et d'autres professionnels que je n'apprendrais d'un livre médiocre. Aucun des livres que j'ai vus n'a expliqué par exemple pourquoi les contrôles FxCop et StyleCop sont si importants pour écrire un code source de descente qui peut être réutilisé (ni même mentionné ces outils).
Arseni Mourzenko
3
+1 Vous pouvez apprendre beaucoup avec des articles et des blogs en ligne mais même ainsi, ne pas lire de livres techniques implique un manque d'initiative et de médiocrité moi aussi.
Dunk
5

Inversez cette liste chaînée. Maintenant, faites-le en temps linéaire. Maintenant, faites-le en temps linéaire et dans un espace constant.

Fishtoaster
la source
23
MyList.reverse ()
Joe Phillips
5

Vous considérez-vous comme une personne chanceuse?

J'ai lu ceci dans une interview d'un des membres fondateurs de Bruel & Kjaer et cela m'a touché une corde sensible. Les personnes qui réussissent sont très susceptibles de se considérer comme chanceuses. Ils voient les revers comme des opportunités d'apporter des améliorations et ont tendance à partager leurs succès (chance) avec les gens autour d'eux - Les gens chanceux apportent plus de chance.

Les gens qui se considèrent comme malchanceux sont plus susceptibles d'être une mauvaise pomme dans votre équipe.

* Dans ce contexte, la chance doit être lue comme une occasion de réunion de préparation , pas comme un trèfle à quatre feuilles.

oosterwal
la source
1
+1 Je voudrais voter davantage plusieurs fois.
ocodo
Napoléon a dit un jour "Donnez-moi des généraux qui ont de la chance!"
Zachary K
4

Celui qui a toujours fonctionné pour moi ...

"Parlez-moi de vos projets précédents" .

Et puis utilisez leurs réponses comme point de départ pour leur demander quel est leur rôle dans les projets et pourquoi ils ont pris certaines décisions. Plutôt que de faire de l'interview les SAT, j'ai juste une conversation avec eux. Cela a toujours été plus que suffisant pour juger si le développeur était apte à un poste.

Je n'ai été embauché qu'une seule fois pour un emploi où je connaissais déjà la langue utilisée, donc les questions spécifiques à la langue n'ont pas beaucoup de valeur pour moi. Personnellement, je ne me soucie pas beaucoup des anecdotes sur la syntaxe ( comment feriez-vous un tri de la barbe à papa tout en étant piégé dans un corral plein de zèbres affamés? )

GrandmasterB
la source
+1. Je le demande aussi. Mais il est parfois difficile de savoir quelle était la fonction du candidat dans le projet (chef de projet? Développeur principal? Développeur de maintenance? Opérateur de machine à café?), Surtout lorsqu'ils ont travaillé sur un grand projet avec beaucoup de gens.
nikie
2
Si vous pouviez avoir un emploi dans le monde, quel serait-il?

Je ne cherche vraiment qu'une chose: une tentative sérieuse d'y répondre. La seule mauvaise réponse, alors riez et dites à l'intervieweur que c'est la question d'entrevue la plus clichée au monde. (J'ai voté sans embauche).

C'est vraiment une configuration pour ma question préférée de tous les temps:

Si vous voulez être [une Rock Star], pourquoi postulez-vous pour être un [Ingénieur de développement Internet III] ici à [HugeCorp]?

Cela fonctionne mieux s'ils donnent une réponse audacieuse. Ils le voient rarement venir et ce n'est vraiment qu'une occasion pour quelqu'un de briller en disant quelque chose comme "les heures ici sont meilleures" ou "ma carrière ici durera plus longtemps que la rock star typique".

J'ai également menti sur le fait qu'il n'y avait pas de mauvaise réponse à la première question. À moins que vous n'interviewiez pour un travail de rêve totalement génial, le travail pour lequel ils interrogent n'est pas la bonne réponse. Et si vous interviewez pour l'emploi de rêve et que vous ne l'avez pas déjà, vous devriez vous demander pourquoi vous ne postulez pas.

shemnon
la source
"Et si vous interviewez pour le travail de rêve et que vous ne l'avez pas déjà, vous devriez vous demander pourquoi vous ne postulez pas." - Cela ressemble à une question «damné si vous le faites, damné si vous ne le faites pas» - surtout si vous traitez la réponse comme vous le décrivez. Si quelqu'un a un travail de rêve en tête, il se peut qu'il ne se sente pas encore prêt à le faire et qu'il ait besoin de plus d'expérience avec ce qu'il peut apprendre dans votre entreprise. Pourquoi leur en vouloir?
Mark Freedman
4
-1 J'ai refusé des offres d'emploi d'entreprises où les gens ont posé des questions stupides totalement hors de propos comme celles-ci. # 1 Cela n'a rien à voir avec le travail ou comment vous feriez # 2 Plutôt que d'interviewer la personne, l'enquêteur essaie vraiment de montrer comment elle est plus intelligente que la personne interrogée en la trompant, et croyez-moi, son arrogance apparaît assez fortement # 3 Je ne pense pas que j'aimerais travailler avec pr @ # k $ qui pose ce type de questions lors d'un entretien d'embauche si je ne les aimais pas lors de l'entretien. Poser la question autour d'une bière, c'est une autre histoire.
Dunk
@Dunk: Vous avez raison, les questions pièges en disent plus sur l'intervieweur que sur l'interviewé. Mais poser des questions sur les objectifs et les souhaits d'une personne en général est logique. Vous voulez que vos employés soient satisfaits de leur travail (les gens mécontents ne sont pas productifs), vous voulez donc savoir si vous avez le bon emploi pour eux.
nikie
@Dunk puisque les clients avec qui je traite quotidiennement posent des questions de cliché et répètent souvent les mêmes erreurs stupides, une question de cliché comme celle-ci aide également à sélectionner le type de personnes qui ne peuvent pas traiter avec les clients de mon travail. L'avantage est que le travail paie pour compenser d'avoir à tolérer un tel comportement. Donc, dans ce sens, c'est vraiment la question du préfet.
shemnon
@Mark Freedman - Je ne leur en veux pas. Cela leur donne la chance d'être honnête et direct sur leur cheminement de carrière. Si une personne interrogée se sent «damnée si elle le fait et damnée s'il ne le fait pas», alors le travail n'est pas pour elle. Si vous n'êtes pas prêt à vous tendre le cou avec une réponse honnête, c'est déjà une marque contre.
shemnon
2

En faisant des interviews c #, j'adore demander: "Comment gérez-vous les erreurs dans une méthode"? Si j'obtiens une réponse décente à cette question, je demande "Comment configurez-vous / configureriez-vous la gestion des erreurs dans une application Web?"

Je suis toujours étonné de voir combien de développeurs n'ont aucun problème avec la première question et aucun indice sur la seconde. J'ai même interviewé beaucoup de personnes qui ne pouvaient pas décrire comment les erreurs étaient gérées dans leur projet actuel.

Jeff Siver
la source
2

Quelque chose comme ça:

multiplier une valeur de 7 sans utiliser *, /et les +opérations. :)

dmitko
la source
4
Votre base de code nécessite-t-elle une connaissance du bit-twiddling ou est-ce juste pour évaluer l'intérêt pour les détails?
Peter Taylor
2
Remarque, il n'a pas dit "ou"
Ben L
1
@Ben, je pense que vous venez de lancer une bombe logique dans la trappe -: /
ocodo
2
N'est-ce pas juste (x << 3) - x?
user13278
1
Ou encore plus simple:x -(-x) - (-x) -(-x) - (-x) -(-x) - (-x)
nikie
1

Similaire à David mais légèrement différent:

Jetez un œil au code de production réel désordonné d'une version antérieure que nous avons corrigé et amélioré par la suite. Dites-moi ce que ça fait. Dites-moi où sont les problèmes (correction et style). Dites-moi comment vous y remédier et l'améliorer.

Cela permet de distinguer les personnes qui peuvent simplement écrire du nouveau code et les personnes qui peuvent faire face à la réalité des bases de code héritées.

Uri
la source
0

il y a de nombreuses années, on m'a demandé la différence entre les expressions rationnelles / a * / et / a *? /

Personnellement, j'ai tendance à poser quelques questions sur la récursivité.

Zachary K
la source
1
Le ?dénote- t-il gourmand ou zéro ou un ? J'ai vu les deux syntaxes.
Paul Nathan
1
Quel dialecte?.
C'était perl5, c'était aussi il y a environ 11 ans. Alors oui c'était gourmand vs pas gourmand.
Zachary K
0

Je suis surpris du nombre de réponses défaillantes à cette question:

Comment rechercher un élément dans une liste non triée?

oosterwal
la source
C'est une question assez profonde: comment définit-on une correspondance? avez-vous des connaissances sur la commande partielle dans la liste? De quelle sorte de liste s'agit-il? Les articles sont-ils triables? Quelle est la taille de la liste? Quel est le coût de calcul relatif de la comparaison par rapport à la vérification d'une correspondance? Différentes réponses à ces questions pourraient changer l'approche optimale .....
mikera
À quelle fréquence cette recherche aura-t-elle lieu? Serait-ce un goulot d'étranglement pour les performances?
Justsalt
WTF, les gars. Commencez par le premier ou le dernier élément, comparez, si ce n'est pas une correspondance, passez à l'élément suivant. La seule question est: nous soucions-nous de plusieurs correspondances ou interrompons-nous la recherche sur la première correspondance? Si vous voulez donner un aperçu, vous pouvez ajouter: Pour les listes liées, cela n'a pas d'importance, mais pour les listes indexées, si je veux également extraire des correspondances, je parcourrai la liste dans l'ordre inverse, donc je n'ai pas à mettre à jour le index en dehors de la condition de boucle.
NotGaeL
0

Ma question préférée est:

(Vraisemblablement dans un mélange de Java / C # et de pseudocode)

En utilisant des conteneurs non exotiques, concevez une classe qui se comporterait comme un dictionnaire aussi performant que possible, ce qui vous permet également d'énumérer les clés non pas dans un ordre "aléatoire" mais dans l'ordre dans lequel ces clés ont été ajoutées au dictionnaire car elles a d'abord été créé.

2 tours
la source
Celui-ci conduit à trop de questions de clarification. Est-il juste d'utiliser simplement deux tables de hachage ou une table de hachage et une liste de tableaux: une qui contient la commande et une pour conserver la commande? Doit-il être possible de supprimer des éléments? (Cela la rend un peu plus compliquée.) Si une valeur est mise à jour, cela compte-t-il comme la rajouter?
dsimcha
@dsimcha, bon point. J'ai 20-30 minutes pour parler, et je commence par: N'hésitez pas à demander des éclaircissements à tout moment. Si vous vous sentez coincé, je serais heureux de vous donner un indice ou de vous guider dans la bonne direction. Si la personne fait encore tourner ses roues, je dirais qu'elle ne comprend pas les structures de données. En ce qui concerne la clarification de ce que je veux - je préfère laisser cela ouvert et le prendre dans des directions différentes.
Job