
Comment j’ai maîtrisé les structures de données et les algorithmes pour le ML (en 6 semaines)
j’ai réussi plus de 90 % des entretiens de codage, et ce n’est pas parce que je suis une sorte de génie.
La majorité des entretiens de codage dans le domaine de la science des données et de l’apprentissage automatique se déroulent soit sur LeetCode, soit sur HackerRank, posant généralement une question sur les structures de données et les algorithmes ou quelque chose de étroitement lié.
Et ce que j’ai découvert au cours des deux dernières années, c’est que vous pouvez « gamifier » votre préparation à ces entretiens grâce à certaines stratégies et en pratiquant des questions spécifiques.
Ainsi, dans cet article, je souhaite détailler exactement le processus que j’ai suivi pour maîtriser les structures de codage/de données et les entretiens algorithmiques en seulement 6 semaines.
Allons-y !
Arrêtez d’apprendre les structures de données et les algorithmes
La première étape peut sembler contre-intuitive, mais il s’agit en fait d’arrêter d’essayer d’apprendre les structures de données et les algorithmes de manière traditionnelle.
Pour ceux d’entre vous qui ne sont pas familiers avec les structures de données et les algorithmes, ou DSA en abrégé, permettez-moi de vous donner une définition rapide de ces termes :
- Structures de données — Organiser et stocker les données afin qu’elles puissent être consultées et modifiées efficacement.
- Algorithmes — Des procédures étape par étape ou des ensembles de règles pour résoudre un problème ou exécuter une tâche.
Ensemble, DSA étudie la façon de structurer les données et de concevoir des méthodes efficaces pour les traiter.
DSA est devenu un peu un « mème » dans le domaine technologique, car ces entretiens testent des compétences que vous utiliserez rarement dans le travail réel.
Cependant, cela fait partie de nombreux processus d’entretien, c’est donc un mal nécessaire que nous devons pratiquer.
Si vous aviez obtenu un diplôme en informatique, vous auriez probablement étudié le DSA en tant que module, mais de nombreuses personnes souhaitant se lancer dans la science des données et l’apprentissage automatique viennent d’autres formations STEM comme la physique, les mathématiques et l’ingénierie.
Alors naturellement, ces personnes commencent à regarder des tutoriels, à lire des manuels et sont très susceptibles d’utiliser NeetCode comme principale ressource d’apprentissage.
J’ai fait exactement la même chose.
J’ai même écrit une série d’articles sur DSA sur mon blog à l’époque, alors que je suivais le cours « » de NeetCode.Structures de données et algorithmes pour les débutants » cours.
Liste : Structures de données et algorithmes | Organisé par Egor Howell | Moyen
Structures de données et algorithmes · 13 histoires sur Mediummoyen.com
Le problème est que cela ne m’a pas rendu bon en structures de données et en algorithmes ni en résolution d’entretiens de codage.
J’avais encore du mal à résoudre des problèmes basiques comme 2sum.
Ne vous méprenez pas, Neetcode est une excellente ressource pour apprendre les concepts du DSA et des domaines plus larges comme la conception de systèmes. Mais ce n’est pas la ressource elle-même qui compte, mais plutôt l’approche générale de l’apprentissage.
Bien sûr, apprendre la théorie est utile, mais vous devriez l’apprendre tout en pratiquant en même temps pour consolider votre compréhension.
C’est comme vouloir jouer au tennis et apprendre la théorie sur le swing de la raquette et la technique, mais on ne s’entraîne jamais à frapper la balle – ce qui est fondamentalement tout le jeu.
Il en va de même pour LeetCode.
Donc, ce que j’ai fait, c’est adopter l’approche complètement inverse.
J’ai commencé à résoudre les problèmes avant même d’apprendre les sujets. Et puis, une fois que j’ai résolu le problème ou que je n’ai tout simplement pas pu le résoudre, apprenez la solution efficace et la théorie qui l’accompagne sur ce sujet.
C’était mon processus de haut niveau :
- Consacrez 30 à 60 minutes par jour à deux problèmes pendant environ 6 semaines consécutives. tôt le matin.
- Donnez-moi 20 minutes pour résoudre chaque problème. Si je ne parviens pas à le faire dans ce délai, utilisez les 10 minutes restantes pour parcourir la solution.
- En parcourant la solution, je me suis concentré sur l’apprentissage du modèle, pas seulement sur la réponse. C’est tellement essentiel que mémoriser des solutions ne vous aide pas à long terme.
- Fermez la solution, attendez 5 minutes et essayez à nouveau de résoudre le problème.
- Rincer et répéter.
Cette approche a transformé ma compréhension du DSA car elle m’a obligé à apprendre par la pratique et à me soumettre à ce qu’on appelle une « sueur mentale » comme Andreï Karpathy l’appelle.
Regarder passivement des cours et consommer des livres semble productif, mais il s’agit en fait de procrastination : éviter le travail réel de résolution de problèmes et d’apprentissage par l’échec.
Arrêtez de pratiquer tous les sujets
Maintenant, je ne veux pas que vous alliez de l’avant et résolviez un problème aléatoire sur Leetcode, mais plutôt que vous vous concentriez sur quelques sujets sélectionnés qui apparaissent le plus.
Lorsqu’il s’agit de postes en science des données et en apprentissage automatique, les connaissances DSA n’ont pas besoin d’être aussi étendues que pour les postes d’ingénierie logicielle, même si vous optez pour des postes de direction.
En réalité, seuls certains sujets reviennent fréquemment dans les interviews, à savoir :
- Tableaux et hachage — Utilisez des cartes/ensembles de hachage pour les recherches O(1) afin d’éviter de réanalyser les données.
- Deux pointeurs — Déplacez deux index l’un vers l’autre (généralement dans les données triées) pour ignorer les boucles imbriquées.
- Fenêtre coulissante — Agrandissez/réduisez une plage contiguë pour suivre efficacement le meilleur sous-tableau/sous-chaîne.
- Liste liée — Recâblez soigneusement les pointeurs de nœuds, souvent avec des pointeurs rapides/lents ou une tête factice.
- Recherche binaire — Réduisez de moitié l’espace de recherche lorsque les données (ou la réponse) sont triées/monotones.
- Piles — Structure LIFO pour faire correspondre/annuler des choses ou suivre les éléments « prochains plus grands/plus petits ».
- Arbres — Parcourez de manière récursive (DFS) ou niveau par niveau (BFS) pour calculer ou rechercher des données hiérarchiques.
- Tas/files d’attente prioritaires — Obtenez rapidement le min/max, idéal pour les problèmes top-k ou « traiter les prochains problèmes les plus urgents ».
- Graphiques— Traversez les nœuds/bords via DFS/BFS pour explorer les chemins, la connectivité ou les itinéraires les plus courts.
Veuillez vous concentrer uniquement sur ces sujets.
Des sujets tels que la programmation dynamique, les essais et la manipulation de bits sont très difficiles à apprendre et n’apparaissent pas fréquemment dans les entretiens.
Le temps consacré à l’apprentissage de ces sujets avancés est mieux concentré sur d’autres domaines du processus, comme la conception du système ou la préparation aux entretiens comportementaux.
Pour être honnête, je n’ai pratiqué que 40 problèmes Leetcode et cela m’a permis de réussir plus de 90 % de mes entretiens de codage, dont certains concernaient des postes d’ingénieur senior en apprentissage automatique.
Ces 40 problèmes ont été intentionnellement choisis car ils couvrent les sujets clés abordés lors des entretiens.
Ceux-ci ont été échantillonnés à partir du populaire NeetCode 150 et Aveugle 75 listes, mais spécifiquement destinées aux rôles de science des données et d’apprentissage automatique, car ces listes sont principalement destinées aux ingénieurs logiciels.
J’ai créé un joli tableau/base de données de ces 40 problèmes exacts que vous pouvez trouver en lien ci-dessous pour vous aider dans votre préparation.
40 problèmes LeetCode à résoudre absolument
Ces 40 problèmes m’ont valu des offres de plus de 200 000 $ de la part d’entreprises comme TransferWise, DoorDash et de plusieurs startups.problèmes.egorhowell.com
De manière transparente, ces 40 problèmes ne couvrent pas toutes les questions possibles auxquelles vous pourriez être confronté lors de l’entretien, mais ils couvrent environ 80 à 90 % des sujets et des types de problèmes que vous rencontrerez.
Ce sont les le retour sur investissement le plus élevéproblèmes que vous pouvez résoudre en termes d’investissement de temps et de réussite aux entretiens.
L’objectif de cet ensemble de problèmes est d’optimiser votre temps pour apprendre et mettre en pratique les concepts qui reviennent le plus fréquemment lors de l’entretien.
Nous ne sommes délibérément pas exhaustifs ; tout est une question de stratégie.
Arrêtez de le faire seul
Apprendre à résoudre les problèmes de codage et de DSA n’est pas si compliqué ; tout se résume à une question de cohérence et d’apparition chaque jour.
Si vous vous préparez quelques jours avant, vous échouerez probablement car vous ne pourrez pas apprendre le DSA en si peu de temps.
Il m’a fallu environ 6 semaines pour me sentir en confiance pour coder les entretiens en mettant en œuvre la stratégie que j’ai mentionnée plus tôt et en me concentrant uniquement sur ces 40 questions.
Cependant, aucune approche « hackée » ne fonctionne si vous ne faites pas de répétitions tous les jours et ne restez pas cohérent.
Et c’est là que la plupart des gens échouent.
C’est comme aller à la salle de sport : vous savez ce que vous devez faire et quand y aller, mais beaucoup de gens ne le font toujours pas.
Ce n’est pas un problème de connaissances, mais un problème de discipline.
C’est pourquoi les entraîneurs personnels existent : pour vous garder motivé et responsable de vos objectifs.
Vous avez besoin exactement de la même chose pour LeetCode/DSA.
Quand je m’entraînais, ma mère me surveillait littéralement chaque semaine pour s’assurer que j’étais sur la bonne voie dans ma pratique.
Cette responsabilité, et le fait de ne pas laisser tomber ma mère, est ce qui m’a poussé à créer des problèmes même lorsque je ne le voulais pas. La responsabilité est un mécanisme fou de cohérence.
Alors, je veux que vous fassiez exactement la même chose. Demandez à toute personne que vous connaissez de vous contacter chaque jour pour vous tenir responsable.
Je fais cela avec certains clients dans mon programme de coaching. Je les contacte chaque jour pour m’assurer qu’ils font la préparation qu’ils m’ont dit qu’ils feraient.
C’est le tracker simple que nous utilisons, alors n’hésitez pas à en faire une copie et à l’utiliser pour vous-même.
C’est incroyablement efficace, et ils font tous d’énormes progrès vers l’obtention du travail de leurs rêves en matière de données/ML.
Si vous êtes intéressé à travailler avec moi, n’hésitez pas à postuler ci-dessous :



