J'aimerais avoir votre avis sur la difficulté de la question de l'entrevue suivante:
Trouvez la sous-arône contiguë avec une somme maximale dans une maquette d'entiers in O(n) heure.
Ce problème de sondage trivial a été rendu célèbre par Jon Bentley dans ses perles de programmation où il l'utilise pour démontrer des techniques de conception d'algorithme.
Sur une échelle de 1-10, 1 étant le test FIZZBUZZ (ou HOPPITYHOP ) et 10 étant implémenter la fonction C STDLIB MALLOC (), comment classeriez-vous le problème ci-dessus?
Je pense que les personnes qui peuvent répondre mieux à cette question sont celles qui ont lu des perles de programmation et ont essayé de résoudre ce problème par eux-mêmes. Pour motiver ceux qui ne l'ont pas fait, "Programmation des perles" figurent plusieurs fois dans la liste "Top 10 des livres de programmation".
Quelques commentaires peuvent aider à obtenir une meilleure note:
La mise en œuvre de MALLOC () n'est pas aussi formidable qu'elle semble. Voir le langage de programmation K & R's C par exemple. Il est parfois demandé à Microsoft .
CLRS Observation sur la résolution de problèmes: Il est souvent plus difficile de résoudre un problème de zéro que de vérifier une solution clairement présentée, surtout lorsque vous travaillez sous contraintes de temps.
Je suppose que la note doit être bidimensionnelle, au moins. Fizzbuzz -malloc
décrit la plage d'un axe, je l'appellerais "complexité technologique". Mais cette seule dimension n'est certainement pas suffisante pour décrire le problème. Pour résoudre le problème en question, le développeur devrait pense plus que le code , lors de la mise en œuvre malloc
nécessite davantage de discipline de codage que de créer un complexe algorithmes.
Alors voici comment j'arrangerais ces problèmes:
Pour illustrer mon point, j'ai ajouté à Sort de fusion parallèle à l'intrigue, comme je suppose que c'est un bon exemple de tâche sophistiquée sur le plan technologique et algorithmique.
Je pense que c'est considérablement plus difficile que FIZZBUZZ OU HOPPITYHOP - ces deux ne sont rien de plus qu'un simple si-sinon ou un cas de commutation dans une boucle.
La sous-tableau maximum nécessitera une analyse plus approfondie du problème sous-jacent - ce n'est pas quelque chose que vous vous attendez à voir dans une classe de programmation débutante car elle nécessite des compétences mathématiques plus élevées qu'un problème de type FIZZBUZZ. Ce problème a une sensation similaire au problème de chemin le plus court, qui est résolu par l'algorithme de Dijkstra - c'est peut-être une spécialisation du problème de chemin le plus long .
Sur votre échelle de 1 à 10, je l'évaluerais probablement entre 3 et 5.
* Pendant que le serveur était en panne, j'ai trouvé que le problème de la sous-réseau maximum a sa propre page sur Wikipedia.
Je lui donne une 3. Au-delà de la plupart des programmeurs que j'ai interviewés, mais un problème facile pour ceux que j'ai recommandés pour la location.