banner

FREN

Guide complet de recherche d'emploi en Tech

Par Tom Marty, En cours de rédaction

Tom Marty

Ce guide s'adresse aux étudiants et jeunes diplômés actuellement à la recherche d'un poste dans l'industrie de la Tech. Bien qu'il soit destiné en particulier aux profils de Research Engineer et Research Scientist, il contient nombre d'informations qui vous seront utiles pour l'ensemble des métiers techniques de ce secteur.

Venant moi-même de chercher du travail pendant plus de 4 mois, ce guide se veut être l'héritage de ces mois de recherche, il y regroupe mes conseils, mon retour d'expérience sans filtre, avec quelques blagues au passage, et de nombreuses ressources utiles pour vous aider dans ce processus. Il est librement inspiré de guides et ressources que vous trouverez en ligne, que je cite dans la section "Ressources utiles" à la fin de ce guide.

Sortez vos cahiers, installer la dernière version de pytorch et c'est parti !


Table des matières


1. Mindset et logistique

a. Le mental

Avant de rentrer dans le vif du sujet, il me tenait à cœur de commencer ce guide par aborder un aspect important de la recherche d'emploi qui est souvent mis de côté dans les ressources disponibles en ligne. Trouver du travail dans notre secteur est difficile, il faut être réaliste. Un processus de recrutement est un processus hautement stochastique, que ce soit pour l'employeur ou le futur employé. Cela ne se qui joue des fois qu'à la qualité de votre sommeil de la veille, ou à l'apriori du recruteur à votre égard après un rapide survol de votre CV. Il y aura des ratés, il y aura des déceptions mais ils ne doivent pas remettre en question vos connaissances ni votre estime de vous-même, et c'est important d'y être préparé. Il faut toujours garder à l'esprit que vous évoluez dans l'une des sphères les plus compétitives au monde. La compétition ne se limite pas à votre ville, ni à votre pays, elle est internationale. Si l'on ne vous a pas choisi à un moment donné, c'est aussi en partie car vous êtes des centaines, voire des milliers de candidats tout aussi diplômés à avoir tenté leur chance.

Quand on progresse dans les études (licence, master, doctorat...) on a tendance à penser qu'après tout ça, l'entrée sur le marché du travail sera plus simple, et c'est bien souvent l'inverse. Imaginez que vous nagiez dans une piscine : quand vous progressez dans les études, c'est comme si vous nagiez dans une piscine de plus en plus petite (comprendre : avec de moins en moins de places), et avec des nageurs qui nagent de plus en plus vite (comprendre : de plus en plus qualifiés). ça devient alors de plus en plus difficile de donner le rythme. Il faut donc garder cela en tête, et faire preuve de résilience, et surtout surtout soyez indulgent avec vous même, chose que je n'ai peut-être pas assez appliquée à moi-même. Il est aussi primordiale de vous accorder du temps libre en dehors de votre préparation pour vous permettre de décompresser, même si on ne se sent jamais assez prêt tant les connaissances à mémoriser sont nombreuses. J'ai personnellement eu du mal à appliquer cete discipline, et me suis retrouvé plus d'une fois à fetch ma boite mail aux aurores dans l'espoir d'une réponse à l'une de mes candidatures. Avec du recul, ce n'était pas la bonne chose à faire.

Il y a des choses sur lesquelles on ne peut pas agir, et c'est important de se le rappeler, comme je l'ai dit afin de maintenir un bon niveau de motivation, et d'estime de soi. Enfin, il y a tout le reste, ce sur quoi vous pouvez agir : votre CV, la qualité de vos échanges par mail, votre niveau de technicité, votre préparation aux entretiens, votre connaissance du marché. C'est sur ces derniers points que ce guide se veut être votre meilleur allié.

b. La logistique

Entre le début de votre préparation technique, des premières candidatures envoyées, aux multiples entretiens, en passant par la négociation et jusqu'à la signature de votre contrat, vous devrez compter au bas mot entre 3 à 6 mois, et parfois plus si vous partez de zéro: c'est un travail à temps plein. Votre temps s'organise entre la préparation des entretiens la recherche d'offres, la rédaction de votre CV et de vos lettres de motivation, et les entretiens eux-mêmes. Enfin, chercher un emploi c'est faire preuve de beaucoup de patience, chaque processus peut prendre 3 à 6 semaines, essayez donc au mieux de parallèliser les processus de recrutement.

Partez du principe que rien n'est acquis tant que vous n'avez pas signé le dit-contrat. Rien. Ne portez jamais tout vos espoirs sur un seul processus et évitez de vous projeter dans un futur hypothétique car tous peut s'envoler d'un seul email malheuresement.

A partir du moment ou vous recevez une réponse positive à votre candidature, la plupart du temps par mail, parfois par téléphone, vous entrez officiellement dans le processus de recrutement. Tout les processus sont différents, mais de ce que j'ai pu observer, il se déroule plus ou moins de la manière suivante :

  • 1 entretien RH Un premier entretien avec un représentant des Ressources Humaines (RH) qui vous suivra tout au long du processus, pour vous présenter brièvement le processus de recrutement et s'assurer de certains prérequis (localisation, permis de travail, attente salariale). Cet entretien est souvent très court : vous pouvez être amené à présenter votre parcours et vos motivations, mais cela n'a à peu près aucune importance dans le processus. Gardez votre jus pour plus tard ;-). Si vous êtes un humain à peu près fonctionnel à la suite de cet entretien, vous recevrez un email vous invitant à planifier dans la foulée votre premier entretien technique.
  • 3-6 entretiens techniques Selon la structure et le type de poste (stage, RE, RS, ...), vous aurez entre 3 et 6 entretiens techniques. C'est l'occasion de rencontrer les différents membres de votre future équipe. Ces entretiens peuvent être soit des entretiens de connaissance, des entretiens de code, ou encore des présentations de recherche. Ils durent systématiquement 1 heure (5 minutes de présentation, 50 minutes d'exercice, 5 minutes à la fin si vous avez des questions pour l'intervieweur), la présentation de recherche peut déborder à leur discrétion, ce qui est souvent un bon signe de leur intêret. Ce qui fait que chaque processus s'étale dans le temps, c'est que vous devez compter environ 2 à 3 jours après votre entretien pour recevoir une réponse de leur part, et éventuellement une invitation à planifier le prochain entretien pour la semaine d'après. Pour peu que l'intéressé parte en vacances au milieu du processus, vous êtes bon pour poireauter pendant plusieurs mois.
  • 1-2 entretiens RH Si vous êtes toujours en un seul morceau d'ici là, vous devriez recevoir un dernier entretien avec le RH. Cet entretien est la plupart du temps synonyme de bonne nouvelle! Autrement, vous vous seriez contenté d'un email de refus générique qui laisse souvent un petit goût amer. J'ai été agréablement surpris par certaines entreprises qui prennent le temps de vous expliquer, par écrit, les raisons précises du refus. Il est possible de recevoir une offre par mail, mais c'est plus rare, notamment pour des histoires d'IP. La négociation de l'offre peut donner lieu à un entretien si nécessaire. Je détaillerai le sujet à part entière dans une prochaine section.

Sur le papier après ce que je viens de dire, on se dit que la timeline va ressembler à peux-près à la figure ci-dessous.

Frise temporelle de la recherche d'emploi

Au fur et à mesure du processus, c'est à vous de programmer le prochain entretien. L'idée, c'est de temporiser les processus qui sont en avance par rapport aux autres afin qu'ils se terminent tous en même temps, et que vous puissiez négocier les offres les unes avec les autres.

En calant chaque entretien à la suite des autres, on se dit qu'en 2 mois, ça sera plié, et qu'on pourra passer la fin de l'été en détente avant le début du contrat. En réalité, il y a des chances que ça se passe plutôt comme ci-dessous. Entre les ratés en entretien, les vacances du recruteur à l'île d'Oléron, et les autres nombreux aléas du monde corporate (problème de visa, baisse du headcount, attente d'un candidat), il y a plein de raisons possibles pour que votre processus de recrutement s'étale dans le temps malgré vous.

Etant donné que la recherche d'emploi peut s'étaler sur plusieurs mois, il est évident que vous finirez par oublier certains concepts abordés au cours de votre préparation. Dans mon cas, je me réservais du temps dans la semaine (> 1 demi-journée) pour me rafraichir la mémoire sur les concepts abordés, à l'aide de mon petit carnet dont je parle dans la section « Comment réviser ? »

Seconde frise temporelle de la recherche d'emploi


2. Optimizer son profil

Pour maximiser vos chances de retenir l'attention des recruteurs, il faut commencer par s'attaquer à ce qu'ils vont juger en premier de vous: votre CV, votre portfolio académique, et éventuellement votre profil LinkedIn.

a. CV

Le CV c'est un peu la base, donc on va passer sur les détails évidents.

b. Site web

Un site web, c'est un peu la version interactive et ludique de votre CV. C'est sur ce support que vous pouvez partager vos projets / papier de recherche, les projets / code base open-source sur lesquelles vous avez contribué. Vous devez montrer votre capacité à vulgariser votre recherche , à la rendre accessible. Tout est bon à mettre sur votre site, même des projets de cours de license/bachelor, à condition qu'ils soient bien présentés et qu'ils démontrent votre capacité à itérer, à faire des choix de conception, et à mettre en forme vos résultats. Vous pouvez aussi ajouter tous les autres éléments qu'on retrouve dans un CV (formation, distinctions, références, etc.).

L'idée dans la conception d'un site, c'est un peu de dopamine-maxxing votre recruteur quand il arrive sur votre page en mettant en avant vos projets illustrés les plus ambitieux d'abord.

Un site web est un projet à part entière, et il se construit au fur et à mesure des projets accomplis. Pour ma part, j'ai commencé à partir d'un fichier HTML minimal il y a plusieurs années, puis j'ai progressivement complété mon site au fil de mes années de master, puis de Ph.D. en ajoutant des papiers, des projets, des illustrations, des liens vers des résultats, et en le refaisant évoluer avec mon parcours. J'ai même fini par reprendre des projets plus anciens de 2ème année, les remettre en forme pour les intégrer à mon site. Vous pouvez aussi partir d'un template existant si vous voulez gagner du temps au début.

Un bon site web pour un profil technique doit pouvoir répondre rapidement à deux questions :

  • Qui vous êtes ? Vous n'êtes pas une IA, vous avez votre personnalité, votre histoire, et des choses qui vous animent. Partagez-les !
  • Qu'avez-vous fait ? Votre parcours: les cours, les projets, les travaux de recherches, et toute autre contributions concrètes.

Voici quelques exemples de portfolios que je trouve assez réussis : Oshai Kh, Matthew, Tom Marty ;-).

En résumé, un site web n'est pas une décoration : c'est un outil de communication. Faites-le évoluer avec votre parcours, ne soyez pas trop exigeant avec la version initiale, et donnez-vous le temps d'y accumuler du contenu. À long terme, cela devient un vrai atout dans votre recherche d'emploi.

c. LinkedIn

Useless.


3. Où et comment postuler ?

a. Trouver les offres

Dans un processus de recrutement, le premier filtrage, c'est ce qu'on appelle le screening, ou l'employeur décide qui est retenu pour les entretiens. Recruter quelqu'un coûte cher, pour l'entreprise c'est primordial de limiter le nombre de personnes à interviewer, quitte à laisser passer quelques faux négatifs. Passer le screening c'est un peu comme un problème de ratio Noise-to-Signal. Pour être retenu par un recruteur, votre profil doit se distinguer du bruit. Pour cela, il y a deux façons de faire :

  • Être un outlier de la distribution. Autrement dit, avoir un profil de fou furieux (plusieurs seminal papers, stage en Big Tech à tire-larigot, des récompenses internationales...). Si ce n'est pas votre cas, pas de soucis, c'est loin d'être perdu.
  • Réduire le bruit de la distribution. Plutôt que d'affronter la concurrence sur les offres publics les plus demandés, une stratégie alternative consiste à trouver des canaux moins fréquentés (candidatures spontanées, petites structures, contacts directs, cold-emails) pour des postes moins carte postale où vous aurez naturellement moins de concurrents en lice.

Il existe plusieurs canaux pour trouver des offres d'emploi. J'ai classé ci-dessous les différents canaux selon à quel point ils m'ont été utiles :

  1. Le réseau personnel Recommandations d'amis, d'anciens collègues, de professeurs ou de camarades déjà en poste, c'est vraiment le S-tier. N'hésitez pas à contacter des personnes avec qui vous vous entendez bien, même si vous ne les avez pas vu depuis des années, il/elle sera bien souvent ravi de vous faire une recommandation en interne. Ça a été mon cas. Condition sine qua non pour être recruté en BigTech (Google, Meta, Microsoft, ...) Ce qui a aussi bien marché pour moi a été de faire un post LinkedIn annonçant que je cherchais un poste, sans corporate bullshit, juste vraiment factuel. Il suffit que vous ayez une connaissance pseudo-influenceur sur LinkedIn qui vous repost pour toucher rapidement plusieurs dizaines de milliers de personnes. C'est assez fou.
  2. Le réseau institutionnel Si vous faites partie d'une école, ou d'un labo académique, il est possible que vous ayez accès à des offres d'emploi ou de stage en interne, avec souvent un contact dans la boite rattaché à l'offre. On m'a souvent répondu dans ces cas là, bonus point si vous avez un professeur pour vous faire l'intermédiaire. Condition sine qua non pour être recruté en BigTech (Google, Meta, Microsoft, ...)
  3. Les forums et salons de l'emploi. Je n'ai pas trop de data là-dessus perso, mais de retour d'expérience d'amis, il semblerait que ca marche assez bien de discuter en face-à-face avec un recruteur et les membres de l'équipe de recherche. Gardez en tête que dans la plupart des boites, on cherche aussi à recruter quelqu'un qui va bien s'intégrer à l'équipe et à leur culture, ce qui est plus difficile à cerner sur un appel Zoom que autour d'un café à une conférence.
  4. Les sites carrière des entreprises. Postuler directement sur le site de l'entreprise qui vous intéresse, cela peut donner lieu à des entretiens, surtout pour de petites structures. Pour les grosses boîtes, ou les start-ups en vogue, votre CV sera probablement noyé sous une myriade d'autres candidatures envoyées automatiquement, et vous aurez de faibles chances d'avoir un retour.
  5. Twitter / X Useless, une vrai perte de temps. Vous allez voir une offre liké 2000 fois, à laquelle vous allez candidater et personne ne vous répondra. Les chercheurs en industrie qui publient sur Twitter le font principalement pour la fame.
  6. Jobboard LinkedIn. Useless, une vrai perte de temps. Pire même, en complétant ses formulaires, vous nourrisez le sentiment pervers d'avoir avancé dans vos recherches, d'avoir fait quelque chose de productif. Sans même parler de l'impact sur l'estime de soi du narcissisme ambient de ce réseau social.

b. Postuler aux offres

Une fois que vous avez trouvé l'offre qui vous correspond, l'idée c'est de trouver les canaux alternatifs pour candidater, afin de réduire le bruit de la distribution ;-). Pensez aux gens susceptibles de travailler dans l'équipe en question, et à comment les aborder en avance pour fixer votre nom dans leur esprit, obtenir des informations supplémentaires sur le rôle ou le recrutement. C'est plus long, certes, mais encore une fois, trouver du taf tient à peu de choses : il vaut mieux une bonne candidature personnalisée que de remplir 10 formulaires LinkedIn au hasard. L'effet pervers de tous ces petits formulaires, c'est que cela donne la sensation d'avoir avancé dans ses recherches, mais ne vous méprenez pas, c'est un coup d'épée dans l'eau...

Faites court et impactant, ce qui marchait le mieux pour moi, c'etait les messages courts: un seul paragraphe, votre CV en copie, bonjour aurevoir. Préférez une accroche sans friction, une phrase expliquant pourquoi vous contactez la personne, puis une action claire. Les mails de plus de 200 mots, 3 paragraphes "chatGPTesques" sont à bannir, vous aurez tout le temps de développer plus tard.

Example 1

Simple, basique. J'avais contacté la personne (RS dans une start-up) par mail et elle m'a répondu dans la journée.

Bonjour [],

Je m'appelle Tom, je suis en Ph.D. de machine learning. Je suis actuellement en 3ème année au Mila et je souhaite me réorienter dans l'industrie [...] idéalement pour continuer à faire de la R&D.

J'aurai voulu avoir ton retour d'expérience sur [...] et avoir l'occasion de te poser quelques questions sur ton travail, cela m'aiderait beaucoup dans ma recherche d'emploi. Pourrait-on s'appeler au cours de la semaine prochaine ?

Merci de ton aide :-)
Tom
https://3rdcore.github.io/

ps: <une ref niche que j'ai trouvé sur son site web>
                            
Example 2

Encore une fois, rien de foufou, mais ca suffit à engendrer une conversation. J'avais contacté la personne sur Messenger qui avait des amis en communs. Sachez adapter le niveau de familiarité à la situation!

Hello [...], j'espère que tu vas bien. [...] un ami de Montréal m'a donné ton contact.

Pour la faire courte, je suis en 3ème année de thèse au Mila et j'aimerai me réorienter dans l'industrie et je suis pas mal intéressé par les worlds model appliqué aux données tabulaires. Etant donné que tu bosses avec [...], je me demandais si tu en savais un peu plus sur la boite, c'est pas très clair sur leur site, ou est ce qu'ils en sont après leur grosse levée de fond, tu sais si ca commencent à recruter? Est ce que je pourrais te poser quelques questions si jamais tu as un moment dans la semaine.
                            

Pour certains postes on peut également vous demander de fournir une lettre de motivation, c'est souvent optionnelle, mais ca peut valoir le coup, ça a marché pour moi! Ecrire une lettre c'est long, elles se ressemblent toute, mais si vous avez vraiment quelque à dire (e.g. une idée originale en tête pour un projet) ca fait une vrai différence. Pour les postes un peu génériques, ne vous embetez pas, mieux vaut une bonne recommendation pour passer le screening.

Astuce : continuez à postuler même pendant les phases d'entretien, de façon à ne jamais avoir de temps mort entre deux processus en cours.

Enfin, essayez d'avoir de la compassion pour vos recruteurs, je sais que c'est dur tant le processus peut-être cruel, mais gardez en tête que les recruteurs ont des centaines de candidatures à gérer, ne leur en tenez pas rigueur si ils prennent plusieurs jours à vous répondre, il n'est pas rare non plus de devoir relancer un recruteur, ou que celui-ci ne vous réponde jamais. Cela sera monnaie courante dans votre recherche d'emploi, soyez y prêt.


4. La préparation technique

a. Quoi réviser?

Entretien de connaissance Les entretiens de connaissance sont souvent des questions générales de Machine Learning et de Deep Learning, avec éventuellement des questions spécifiques à votre domaine d'application. Ce qu'on cherche à savoir c'est votre intuition sur des concepts basiques de ML (régression, clustering, bias-variance tradeoff...) avec des questions du style "Si je modifie [], alors cela entraine []" mais aussi votre capacité à raisonner sur des concepts plus abstraits (espace latent, diffusion, transformers, RL, ...). Dans ce genre d'entretien, vous êtes bombardé de questions (10-15) et vous devez répondre précisément, sans vous étaler. Le piège classique est de répondre au delà de la question posée, soyez concis. J'ai listé dans ce menu déroulant les sujets les plus importants à connaitre :

Voici une liste des principaux sujets à réviser* selon moi, classés par domaine :

Linear Algebra
  • Eigenvectors / Eigenvalues
  • Rank, Determinant
  • Kernel space
  • Positive Semi-Definite
  • Jacobian
  • Hessian
  • Orthogonality
  • Singular matrices
General ML
  • Unsupervised vs Supervised
  • Clustering Algorithms (e.g. k-means)
  • K-Nearest Neighbours
  • SVMs
  • Trees: Bagging, Boosting, Ensemble Methods
  • Decision tree split logic (Gini / Entropy)
  • Inductive biases
  • Bayes Theorem
  • Precision / Recall / F1 / AUC-ROC
  • KL Divergence
  • Linear Regression, Logistic Regression
  • Cross validation
  • Architectures: MLPs / CNNs / RNNs / LSTMs / Transformers
  • MLE vs MAP
  • Newton's Method
  • Geometric interpretations of gradients
  • Activation Functions
  • No Free Lunch Theorem
  • BatchNorm / LayerNorm / RMSNorm
  • First and Second order optimization Methods
  • Adam / AdamW / Adagrad
  • Backprop
  • Regularisation Methods (L1, L2, early-stopping)
  • Bias-Variance Tradeoff
  • Gumbel-Softmax trick
  • Weight initialisation
  • Gradient Descent / SGD
  • Domain Adaptation
  • Dimensionality Reduction
  • Few shot / In-Context Learning
  • Entropy
  • Curse of dimensionality
Applied ML
  • Optimizer for NNs (SGD, Adam, MUON...)
  • Tensor Parallelism
  • Data Parallelism
  • Pipeline Parallelism (1F1B scheduling, mitigating Pipeline Bubbles)
  • FSDP
  • ZeRO 1 / 2 / 3 state sharding
  • Communication Primitives: Broadcast, Scatter, All-Reduce, Reduce-Scatter, All-Gather
  • 3D Topology: NVLink vs InfiniBand
  • Mixed precision training
  • Float representations (FP32, FP16, BF16)
  • Stable training (clipping, gradient accumulation, precision tricks, exploding/vanishing gradients)
  • Debugging NaN loss spikes
  • Debugging OOM: Parameters vs Activations vs Optimizer states
  • Checkpointing
  • Numerical precision tricks
  • PyTorch primitive
  • HP sweep
  • Data Curation: Deduplication (MinHash LSH), PII redaction, heuristic filtering
  • Streaming multi-GPU Dataloader (iter/yield, file/line sharding)
Deep Learning at Scale
  • Fundamentals: Attention is all you need
  • SwiGLU activations
  • Causal Attention
  • Cross Attention
  • Linear Attention
  • Attention Variants: GQA vs MQA vs MHA
  • Flash Attention 1, 2, 3
  • Sliding Window Attention (SWA), Ring Attention
  • LoRA
  • Mixture of Experts
  • LLM scaling laws
  • Learned / Sinusoidal / RoPE embeddings
  • LLM vs RNN vs Mamba
  • Tokenisation
  • Pretraining
  • SFT: Supervised Finetuning
  • RLHF: Reinforcement Learning from Human Feedback (Reward Modeling, KL penalties)
  • KV Cache memory growth, PagedAttention (vLLM)
  • Decoding Schemes: Nucleus (Top-p), Top-k sampling, Speculative decoding
  • Compilation: Torch.compile, Kernel fusion candidates, Chinchilla scaling laws.
  • Vision Basics: 2D Conv, Mean/Max Pooling, NMS
  • Vision-Language: SigLIP / CLIP, Multimodal, cross-Attention for VLMs
  • Funky architectures: BERT, DINO
Generative Modelling
  • GANs
  • AEs, VAEs, VQ-VAEs
  • Score Function
  • Diffusion Forward Process
  • Diffusion Reverse Process (DDIM / DDPM)
  • Diffusion Forward / Reverse SDE
  • Flow Matching, Discrete Flow Matching, OT-Flow Matching
  • Classifier-based / Classifier-Free Guidance
Reinforcement Learning
  • Markov Decision Process
  • Q-Learning / TD Learning / SARSA
  • DPO (Direct Preference Optimisation)
  • Policy Gradient methods
  • PPO
  • GRPO
  • Actor Critic
  • On-Policy vs Off-Policy
  • Exploration vs Exploitation Dilemma
  • World Models / Dreamer
  • AlphaZero, AlphaGo
  • Model-Based vs Model-Free
  • Importance Sampling

* Liste complétée à partir de celle de Silvia Sapora.

Bien entendu, c'est pour vous, mais n'espèrez pas non plus tout maitrîser parfaitement, soyez solide sur les bases, et essayer de consolider vos connaissances sur autres concepts qui ne sont pas directement relié avec votre recherche ou les centres d'intêret de la boite auquel vous postulez.

Entretien de code C'est le type d'entretien le plus important à mes yeux, là où vous pouvez à la fois montrer votre capacité à coder, mais surtout votre capacité à modéliser un problème et à le décomposer en sous-problèmes adressables. Ces entretiens peuvent être de 3 sortes :

  • Machine Learning On cherche à connaitre votre maitrise de python/pytorch et des modules de base d'un pipeline de Deep Learning (Dataloader, Model, Trainer...), votre compréhension des tenseurs (dimension, reshape, contiguité), et des opérations sur ces tenseurs et leur implication à bas niveau (compute, mémoire). Bien entendu vous devez avoir les connaissances conceptuelles pour pouvoir les implémenter.
    Connaissances à maîtriser
    • Deep Learning Pipeline: entrainer vous à écrire des modules de A à Z, ou une training loop pour vous redonner les automatismes: Dataloader, Model, Loss, Optimizer.
    • Manipulation de tenseurs : Vous devez maitriser sur le bout des doits toutes les fonctions torch et numpy: dimension, reshape/view, broadcasting, flatten, , gather, scatter, squeeze, unsqueeze, where, indexing, cumsum, bincount, . Des ressources des utiles ici.
    • Autograd : forward/backward, chain rule, AutoDiff, calcul du gradient, graphe de calcul,
    • Modules PyTorch de base : nn.Linear, nn.Conv2d, nn.LSTM, activation functions
    • Notions de complexité : coût mémoire/compute d'une opération sur tenseurs
    Tips & Trick
    • Utiliser un notebook jupiter m'a beaucoup aidé pour itérer sur les différents exercices.
    • UBien évidemment entrainer vous sans aucun assistant de code, ne l'utiliser que pour vous évaluer.
  • Algorithmique et Data structure Ici, pas de surprise, reprenez vos bons vieux cours d'algorithmique de License ou 1A/2A d'école et vous avez à peu près tout ce qu'il vous faut. Parmis les principaux algorithmes à connaître, on retrouve ceux listés ci-dessous. Le maître mot ici est la pratique et la répétition, y'a pas de secret. Connaître vaguement l'algo ne suffit pas, il faut être capable de le sortir de tête en python, sans se tromper sur les indices, sur les conditions d'arrêt, et les implémentations bas niveaux, ce qui est plus dur que ça n'y parait.
    Connaissances à maîtriser
    • Parcours de graphes : DFS, BFS
    • Algorithmes de recherche : two-pointer, fenêtre glissante
    • Structures de données : listes chaînées, piles, files, arbres binaires, graphes...
    • Opérateur python natif : enumerate, collections, heap, deque, OrderedDict, tuple
    • Reconnaître les problèmes classiques : "find the closest" ➡️ sort the array + two pointer; "least accessed" ➡️ OrderedDict; problème de parenthèses fermantes ➡️ stack
    Tips & Trick
    • Off-by-one dans un while, ou avec des conditions d'arrêt strictes (<) vs larges (<=)
    • query dans un dict en O(1)
    • Limite de récursion Python, préférer une version itérative sur des problèmes larges
  • Debugging et optimisation de code Il s'agit du type d'entretien que j'ai le moins rencontré (et apprécié) lors de ma recherche d'emploi. Dans celui-ci, l'intervieweur, souvent un dev, donne au candidat un problème à debuguer (erreur de syntaxe, logique, OOM), ou à optimiser (performance de la stack pytorch, performance I/O). Ne pas sous-estimer ce type d'entretien qui m'a été fatal dans au moins un processus. C'est également un exercice sur lequel il est difficile de s'entraîner et qui peut-être assez déroutant. Il est possible que l'on vous donne du code de production, donc très dense, noyé dans leur propre formalisme de classes/packages, c'est à vous de délier l'info cruciale du bruit.
    Connaissances à maîtriser
      Tips & Trick

      Entretien de recherche Pour ce type d'entretien, que j'ai eu dans 2 de mes processus, vous êtes amené à présenter un projet de recherche que vous avez mené, que vous avez commencé à explorer. L'entreprise peut également vous demander de faire une présentation de papier. Pour ce genre d'entretien, l'important est d'arriver à donner du signal : convaincre votre audience que vous connaissez très bien votre sujet et que vous êtes capable de condenser les points importants de votre projet en quelques minutes. Le corps de la présentation devrait durer environ 20-25 minutes, afin de vous laisser du temps pour aborder certaines subtilités et discuter avec vos interlocuteurs.

      Pour ce type d'entretien, ne perdez pas votre temps à faire un powerpoint tiré à quatre épingles, à part si vous l'avez déjà sous la main, vous allez perdre des heures à le rendre nickel, et vous ne pourrez pas tout le temps le réutiliser. De mon côté, je fais mes présentations sur mon Ipad avec l'application Concept, une sorte de canvas infini sur lequel je peux dessiner, annoter, et faire des schémas. J'ai toujours eu un retour très positif de mes interlocuteurs sur ces présentation "tableau blanc", qui invite plus à la discussion et à l'échange qu'une présentation plus formelle.

      b. Comment réviser?

      Entretien de connaissance La meilleure façon d'apprendre un volume important d'informations est propre à chacun, dans ce paragraphe je ne vais donc pas vous dire quelle est la meilleure méthode mais plutôt quelle est celle qui a fonctionné pour moi. Personnellement, je suis plutôt à l'ancienne : j'ai opté pour le bon vieux carnet de notes papier, sur lequel j'écrivais religieusement les informations cruciales à savoir sur tel ou tel sujet, à l'instar d'une fiche de révision, pour ceux qui se rappellent leurs premières années d'études ;). Je laissais toujours de la place dans chaque fiche pour la complèter si besoin. Je consulte alors mon petit carnet dès que j'ai un temps à perdre. En soi, le simple fait d'avoir passé du temps à la prise de notes me permettait déjà de commencer à mémoriser le concept en question.

      En parallèle de cette prise de notes, il est primordial de vérifier l'état de ses connaissances en se testant, c'est la base de la consolidation du savoir. Si vous pouvez trouver quelqu'un aussi en recherche d'emploi avec qui réviser mutuellement, c'est idéal : vous pourrez alors chacun votre tour vous tester sur des sujets.

      Gemini (ou any modèle de langue) en mode conversationnel m'a été très utile pour vérifier l'état de mes connaissances et me tester dans mes retranchements, en me posant des questions non triviales. Je n'ai commencé à l'utiliser que vers la fin de ma recherche d'emploi, ce qui s'est avéré très utile.

      Contrairement à ce que je pensais au début, échanger avec un modèle de langue de cette façon ne produit pas tant l'effet uncanny auquel on s'attend, l'échange restait assez naturel à mes yeux. Les agents conversationnels ayant une tendance récurrente à l'éloge pompeux, je leur demande d'être le plus factuel dans la réponse en se concentrant sur les questions non-triviales.

      Entretien de code Pour les entretiens de code, trouver des ressources en ligne est assez compliqué, le domaine évolue tellement vite, il est difficile de trouver des ressources pertinentes. Il existe bien des sites qui recensent de réel problème donnée en entretien, notamment certains accessible avec un paywall (Leetcode, 1point3acres, ou encore Deep-ML, une sorte de Leetcode pour du ML), mais assez peu représentatif à mon sens de ce que j'ai eu en entretien, c'est un bon début. J'ai utilisé deep-ML au début, mais j'ai trouvé que les problèmes étaient trop basiques par rapport à ceux rencontrés en interview. J'ai trouvé que les recruteurs faisaient vraiment preuve d'originalité dans les coding interview, et il n'était pas possible de simplement bachoter les quelques exemples les plus classiques.

      Le meilleur conseil que je puisse vous donner est de pratiquer lors de vos véritables entretiens. Vos premières prestations ne seront pas terrible, et c'est ok. Essayez de planifier les entretiens par ordre décroissant de vos préférences pour le job.

      Voici quelques exemples d'entretien de code ML à la mode :

      • Implémenter Flash Attention 1
      • Un dataloader "online" sur un dataset de fichiers JSON données massive (maitrise du yield)
      • Un MoE avec load balancing
      • Un KV-cache pour l'inference

      Pour m'entrainer, sur mon IDE VS Code, je partais d'une base générée par Gemini sur un bon vieux notebook Jupyter, avec les parties manquantes correspondant au problème posé. Après rédaction de la solution, je demandais à ce dernier d'évaluer rigoureusement ma proposition. J'ai trouvé aussi très utile de partir de zéro et d'implémenter tout un module (e.g. encoder-decoder transformer) from scratch. en écrivant les tests associés. Ci dessous un exemple minimal.

      Entretien de recherche Pour ce genre d'entretien, la meilleure astuce que je puisse vous donner est de pratiquer avec votre entourage, notamment des gens qui ne connaissent pas votre recherche sur le bout des doigts, et qui peuvent vous faire un retour critique sur le fond et la forme et de vous chronométrer un minimum pour ne pas être complétement dans les choux niveau timming le jour J.

      Les erreurs que j'aurais pu éviter :

      • J'ai perdu du temps à réviser les problèmes d'algorithmique, type LeetCode. La résolution de ce genre de problème se réduit souvent à mémoriser les algos de base (dynamic programming, LIFO, FIFO, ...), et à savoir reconnaître le problème générique sous-jacent. C'est très chronophage, et pas super intéressant. Je n'ai eu qu'un seul entretien d'algorithmique pour un poste de Research Engineer (spin-off de GAFAM), il s'est avéré éliminatoire. À refaire j'y passerai quand même moins de temps.
      • J'ai perdu du temps à réviser les concepts de base (SVM, PCA, SVD ...) pour être certain d'en connaitre les subtilités. Cela était plaisant mais ne m'a pas tant servis dans mes entretiens.
      • ...

      6. Négociation et choix de l'offre

      Contenu à venir. Si vous en êtes arrivé là, félicitations !

      7. Ressources utiles


      Contribution

      Ce guide est amené à évoluer. Si vous avez des remarques, des suggestions, ou souhaitez partager votre propre retour d'expérience, n'hésitez pas à me contacter par email.

      Si ce guide vous a été utile et si vous en avez les moyens, une façon de me remercier est de faire un don à la Croix-Rouge ❤️.

      Dernière mise à jour : 3 Septembre 2026