la plupart des grandes entreprises technologiques comme Microsoft se concentrent principalement sur les structures de données. Il semble que les structures de données soient la seule chose qu’ils attendent d’un diplômé.
Non, il y a plus Par exemple, nous nous attendons également à ce que vous appreniez rapidement et que vous puissiez apprendre de nouveaux frameworks, API ou même de nouveaux langages de programmation en peu de temps. C'est un bar minimum. Une personne qui met beaucoup de temps à apprendre un nouveau framework, une nouvelle API ou un nouveau langage ne sera pas un développeur performant dans la plupart des équipes Microsoft.
Et bien sûr, nous mettons l'accent sur beaucoup d'autres aspects des entretiens que la simple connaissance brute des structures de données. Capacité à gérer des spécifications ambiguës, par exemple, ou à reconnaître des modèles de codage produisant un code non sécurisé, ou une douzaine d'autres choses. Mais la capacité à comprendre les structures de données est certainement un très grand.
Il est particulièrement vrai que les entretiens ont pour objectif de tester la connaissance des structures de données des diplômés récents en informatique. Les nouveaux diplômés, dont la plupart n'ont pas beaucoup d'expérience dans le monde réel, ne devraient pas être bons dans les mêmes domaines qu'une personne ayant quinze ans d'expérience dans l'industrie.
Je dois avouer que je n'étais pas si fort dans les structures de données
C'est bien que vous sachiez cela à propos de vous-même. Si vous ne pouvez pas ou ne souhaitez pas changer cela à propos de vous-même, ma recommandation est que vous ne postulez pas pour un travail qui nécessite une installation avec des structures de données.
Il existe cette perspective générale selon laquelle un bon programmeur doit nécessairement posséder une bonne connaissance des structures de données.
C'est tautologique qu'un bon programmeur est un programmeur qui est doué pour créer les types de programmes à construire. Beaucoup de programmeurs travaillent sur des tâches qui ne nécessitent pas une connaissance approfondie des structures de données. Certains travaillent par exemple sur des tâches nécessitant une connaissance approfondie de la conception d'interface utilisateur. Ou la normalisation de la base de données. Ou peu importe. Ces personnes peuvent toujours être de "bons programmeurs" dans leurs domaines.
pourquoi tout cet accent sur les structures de données?
Je pose des questions sur les structures de données lors des entretiens car, dans mon équipe, les développeurs conçoivent, implémentent et manipulent des structures de données complexes, jour après jour. Hier, nous avons eu quatre heures de réunions au cours desquelles une demi-douzaine de développeurs ont expliqué les avantages et les inconvénients de l'ajout d'un seul champ booléen à un nœud d'arbre particulier. Aucune compétence de mon équipe n'est probablement plus importante que la capacité à comprendre les structures de données à un niveau profond. Il serait idiot de ne pas poser de questions d'entrevue à ce sujet, car c'est ce que nous faisons.
Ne pas avoir des connaissances dans les structures de données affecte vraiment sa carrière dans la programmation?
Cela vous empêchera certainement de trouver un emploi dans mon équipe. Mais comme je l'ai dit auparavant, la programmation est un domaine immense . Il existe de nombreux types de programmation informatique qui n'exigent pas une connaissance des structures de données.
La connaissance de ce sujet est-elle vraiment une base suffisante pour différencier un bon et un mauvais programmeur?
Non, mais il est presque toujours suffisant de détecter les développeurs qui ont peu de chances de réussir chez Microsoft. Puisque c’est ce que je cherche surtout à détecter, la connaissance des structures de données est l’un des facteurs que j’ai testé au cours des entretiens.