Contexte
Dans une interview technique, on vient de me demander d’écrire un algorithme pour parcourir un "objet" (notez les guillemets) où A est égal à B et B est égal à C et A est égal à C.
C'est ça. C'est toute l'information qui m'a été donnée.
J'ai demandé à l'intervieweur quel était l'objectif, mais apparemment, il n'y en avait pas, il suffit de "traverser" "l'objet".
Je ne connais personne d'autre, mais cela me semble une question idiote. J'ai de nouveau demandé: "est-ce que je cherche une valeur?". Nan. Il suffit de "traverser".
Pourquoi voudrais-je jamais vouloir parcourir sans fin cet "objet" ?? Faire fondre mon processeur peut-être ??
La réponse, selon l'interviewer, était que j'aurais dû écrire une fonction récursive.
OK, alors pourquoi ne pas simplement me demander d’écrire une fonction récursive? Et qui écrirait une fonction récursive qui ne finit jamais?
Ma question:
Est-ce une question valable pour le reste d'entre vous et, dans l'affirmative, pouvez-vous donner un indice sur ce qui pourrait me manquer? Peut-être que je pense trop à la résolution des problèmes du monde réel. Je réussis à coder depuis longtemps, mais ce processus d’entrevue technique me donne l’impression de ne rien savoir.
la source
Réponses:
C'est une question d'entretien déconcertante et invalide. L'intervieweur n'a pas pu expliquer clairement ce qu'il cherchait et s'attendait à ce que vous lisiez dans ses pensées au lieu de réagir de manière significative à vos tentatives appropriées pour clarifier l'énoncé du problème. Considérez-vous chanceux de ne pas avoir obtenu le poste.
La signification du verbe "traverse" opérant sur un "objet" générique est ambigu, à mon avis. Commencez par substituer une variété de noms différents au mot objet et il devient rapidement évident que la traversée d'un objet n'a de sens que pour un petit sous-ensemble de l'univers des choses qui sont des objets.
Il est logique de "traverser" les nœuds d'un "arbre binaire". Cela n'a pas de sens de "traverser" un "clown". Pourtant, un objet peut tout aussi bien représenter un "clown" qu’un "arbre binaire".
la source
Je peux voir trois possibilités ici.
la source
Ceci est juste une conjecture sauvage, mais en supposant que l'intervieweur parle de références de pointeur (et c'est une question piège), la réponse est: il n'y a rien à parcourir, car toutes les références pointent vers le même objet.
Une fonction récursive? C'est pour traverser un arbre. Je ne vois rien dans la question initiale qui impliquerait qu'il parle d'un arbre.
la source
Bien que je ne puisse pas parler pour cet interviewer spécifique, j'ai déjà vu des questions similaires lors d'une interview pour un poste de développeur front-end. Le langage que je vais utiliser dans cet exemple sera donc JavaScript.
Donné:
Une mauvaise réponse typique peut "traverser" le premier niveau uniquement et imprimer / comparer:
Ainsi, tout en codant un exemple récursif qui traverserait tous les niveaux, je mentionnerais des choses comme:
Donc, la "solution" que je suppose que l'intervieweur recherchait était de commencer la conversation sur une question apparemment simple qui comporte de nombreux sujets avancés - récursivité, pointeurs / références, attentes, etc.
la source
Certains intervieweurs essaient spécifiquement de poser des questions pour voir si le candidat est assez intelligent et honnête pour donner l'une des deux réponses suivantes:
Je ne sais pas.
ou peut-être:
Je ne peux pas répondre à cela comme indiqué.
Ils ne veulent pas d'un candidat qui accepterait une pure BS comme une spécification et perdrait du temps à l'employeur et payerait pour la mettre en œuvre.
la source
Il me semble qu’il s’agit d’une question (mal articulée) concernant une liste chaînée circulaire. J'aurais probablement demandé si c'était ce que cela voulait dire (parce que la réponse serait certainement différente de la réponse précédente, c'est-à-dire qu'ils font tous référence au même objet).
S'il s'agissait d'une question liée à une liste chaînée, alors vous (dans ce cas) avez une liste chaînée, où le nœud d'extrémité pointe vers l'autre extrémité (bien que si elle était libellée comme vous le dites, elle peut être doublement liée si A pointe sur B et C - mais des éclaircissements de la part de l'intervieweur pourraient aider.
A -> B -> C -> A
De plus (et cela arrive tout le temps), l'intervieweur a peut-être lu cette question, a pensé que c'était une «bonne» question, mais ne connaissait pas réellement la réponse (ou même ce que cela voulait dire).
la source
Une partie du défi consiste ici à obtenir plus de détails en posant des questions spécifiques afin de déterminer la structure arborescente et les composants impliqués dans une traversée. On a peut-être supposé qu'il n'y avait pas beaucoup d'autres structures de données que l'on traverse en dehors des arbres, mais c'est un peu un saut dans l'esprit.
la source
Ils voudront peut-être essayer de comprendre comment vous gérez des problèmes étranges. Mais dans ce cas, cela n'a rien à voir avec une "interview technique". Cela ressemble plus à un entretien psychologique.
la source
Il semble que la plupart des gens supposent que A, B et C sont des indicateurs, mais ils pourraient tout aussi bien être des clowns. (Ou membres de la classe des clowns.) Ou ils pourraient être des noms de clowns. (Ou noms de classe. Ou sous-classes de la classe de clown.)
J'aurais retourné les tables et demandé si c'était comme cela qu'ils préparaient généralement les spécifications de développement, puis leur dire comment je pouvais les aider avec le stade de développement de la spécification des exigences. Une mauvaise communication des attentes conduit à un produit de travail médiocre. Ou bien ils l'obtiendraient ou ils ne l'obtiendraient pas. S'ils ne l'obtenaient pas, je partirais.
la source
Bien que la question soit mal formulée et que l'intervieweur ne fournisse manifestement aucune aide, je suis un peu différent de ce qui était demandé.
Je pense que l'intervieweur cherchait une solution qui traversait la structure de l'objet en utilisant un type de réflexion. L’information selon laquelle les trois objets étaient égaux aurait dû inciter une conversation de comparaison d’identité d’objet (A == B signifie que les objets sont réellement le même objet en mémoire), ou une comparaison d’égalité d’objet (A == B signifie que les valeurs des objets sont le même).
Le fait que l'intervieweur ait dit que la réponse était une fonction "récursive" indiquait probablement qu'une discussion entre une copie et une comparaison profondes et peu profondes était attendue.
la source
Arriver très tard à cette soirée, mais je pense que l'intervieweur a posé cette question à tort:
Ecrivez un algorithme pour parcourir un tableau et déterminez que A est égal à B et B est égal à C et A est égal à C, dans cet ordre.
La réponse correcte serait alors un algorithme récursif.
la source
La
object
question en question est composée des partiesA,B and C
et forme untriangle
. La personne demande simplement si l'objet (une collection) contient toutes les parties égales.L'intervieweur veut savoir s'il est présenté avec des parties,
A, B and C
pouvez-vous dire si elles sont toutes égales sans rester coincées dans une boucle infinie. Cette question est simplement bête à comprendre et ils ont quand même réussi à le trouver en le posant.Ils sont tous égaux quand
A == B && B == C && A == C
, mais cela peut être simplifiéA == B && A == C
.La simplicité de la question a créé de la confusion et elle est mal formulée.
La formulation correcte aurait dû être.
Oui, vous pouvez répondre à la question enare all my parts equal
utilisant des fonctions récursives. Non, ce n'est pas une solution efficace.EDIT : Après réflexion. Non, il n'est pas possible de vérifier qu'une collection contient toutes les parties égales à l'aide d'une fonction récursive.
La solution la plus efficace est la suivante.
Ce problème se produit lors de la programmation, et demander à quelqu'un d'écrire un algorithme pour tester une collection est parfaitement normal. En fonction du langage de programmation, ce problème peut souvent être résolu avec une seule ligne de code.
Formuler comme ils l'ont fait et s'attendre à la mauvaise réponse n'est pas normal. Depuis que cette question a été posée il y a un an. J'espère vraiment que vous avez fini par travailler ailleurs. Je serais intéressé à entendre du poste original comment les choses se passent pour lui / elle.
la source
Était-ce une question d’entretien avec Java? Dans l’affirmative, il souhaitait peut-être tester vos compétences en écrasant les mots "hashcode" et "equals".
Vous devez remplacer ces deux méthodes et utiliser la méthode égale remplacée pour arrêter la récursion lorsque vous comparez A à A.
Sans passer outre, votre comparaison pour "objet" de A à B, de A à C et de A à A aura la valeur true, mais après la substitution, ce n’est que lorsque l’objet A comparé à l’objet A retournera la valeur true, alors que les autres comparaisons renverront false.
la source