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 !
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.
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 ? »
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.
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 :
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.
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, ...)
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.
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.
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.
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 :
* 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
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 !
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
❤️.