Mes entretiens Facebook

Samuel Liard
Nov 5, 2018 · 9 min read

Depuis le mois de mars, beaucoup de choses bougent au niveau professionnel de mon coté et j’aimerais vous raconter ce qui s’est passé.

Le 5 mars 2018 arrive dans ma boite un email avec comme titre “Facebook (London) — email for Samuel Liard > let’s talk architecture and Cloud”. C’est un email d’un recruteur Facebook qui souhaite discuter avec moi des opportunités à Facebook Londres. Un email assez détaillé avec plusieurs questions sur des articles de mon blog et mon profil Github. Je réponds assez rapidement en commençant par dire que mon niveau d’anglais n’est peut-être pas assez bon pour pouvoir continuer. Mais il me propose un premier entretien téléphonique.

Le 1er entretien

Autant dire que je n’ai pas vraiment préparé cet entretien, je l’ai fait depuis mon portable dans ma voiture. Je présente rapidement mon parcours et ensuite il me parle du processus de recrutement chez Facebook. Le premier point est étonnant, on ne postule pas sur un poste chez Facebook, on postule pour travailler chez Facebook. Les recrutements se font sur profil. Une fois embauché, on participe à ce qu’il appelle un “bootcamp” de 5 semaines. Pendant cette période on découvre les différents services et c’est à la fin de ce bootcamp que l’on peut choisir l’équipe que l’on souhaite intégrer. Sinon le processus est assez classique, un premier entretien technique par visio et si celui-ci se passe bien on est invité à Londres pour une journée d’entretiens.

Suite à cet entretien, il me propose de planifier la seconde étape et de passer un entretien technique. Je suis fan de tout ce qui est défis techniques. Je participe régulièrement à des codingame par exemple. J’accepte donc pour voir ce que ça peut donner. Pour le moment je ne me projette pas vraiment sur un travail chez Facebook à Londres, c’est vraiment pour le chalenge que j’ai envie de le faire.

La préparation

Je reçois pas mal de mails pour trouver une date d’entretien. Facebook conseille de travailler au moins 2 semaines avant de le faire. On bloque donc la date du 4 avril. En plus de cette invitation on m’envoie un très long mail avec ce qu’il faut travailler et des liens vers des sites d’exercices comme :

Et c’est à ce moment-là que je me rends compte que même si je code depuis plus de 20 ans, mes bases algorithmiques sont maintenant très loin ! J’ai beaucoup de mal au début mais assez rapidement je reprends des automatismes. J’ai choisi de faire l’entretien en Java car je maitrise bien le langage, mais comme je code principalement en PHP depuis 6 ans j’ai pris pas mal de mauvaises habitudes.

Pour nous préparer, Facebook propose même des visios une fois par mois pour avoir plus d’informations sur le déroulement des différentes étapes. On est vraiment bien accompagné pour que les entretiens se passent bien.

L’entretien technique

Arrive le jour J. Je suis fin près devant ma webcam. On commence par 10 minutes de présentation de nos parcours et ensuite on rentre très vite dans la question technique (qui ressemble beaucoup à celle-ci). Une question assez simple mais on échange pas mal autour des problèmes de complexité et d’espace mémoire. A la fin on me demande si j’ai des questions. J’en avais bien sûr préparé. En 45 minutes c’est terminé.

J’étais assez content du déroulement, j’attendais le verdict !

Le 6 avril, deux jours après donc, je reçois un email avec : “Hi Samuel, Is it good if I give you a ring around 15.30 / 15.40 PM BST today instead?” Et là je me dis que c’est mort. Mais en fait pas du tout ! Il me dit que c’est bon pour eux et me propose de passer à la suite sur place à Londres. C’est à ce moment-là que ça devient un peu plus concret quand même. Je suis installé avec ma famille à Lannion depuis plus de 10 ans, partir sur Londres ce n’est pas rien.

On passe aussi une étape côté Facebook. Je change de contact côté recruteur et on m’envoie un NDA à signer. J’ai aussi des mails de leur agence de voyages et du service de note de frais. Bref on sent que leur machine à recruter est bien huilée.

On m’explique aussi comment va se dérouler la journée à Londres. En 6h30 on va me faire passer 5 entretiens d’une heure. Un premier assez classique pour échanger sur mon parcours “Behaviour interview”, 2 tests de coding et 2 entretiens design. Pour me préparer aux entretiens “design” on me demande de lire 5 notes techniques (sur le mécanisme de storage Google ou encore la gestion de social graph Facebook). Là encore je suis super excité par le chalenge que ça représente. Je n’ai jamais fait 5 entretiens techniques à suivre et encore moins en anglais.

La préparation “le retour”

J’ai donc plusieurs semaines pour me préparer et être prêt pour le 21 mai. Je repars sur une phase de révision chaque soir pour être à niveau. Le plus compliqué c’est de préparer les entretiens “design” c’est très largue comme sujet et il n’y a pas vraiment d’exercice type. Un achat indispensable c’est le livre “Cracking the Coding Interview”. Il est vraiment à lire et contient beaucoup de questions type pour bien vous préparer.

Londres

J’arrive la veille à Londres, j’ai le temps de repérer la route pour me rendre au bureau de Facebook. Même le dimanche il y a du monde à l’accueil. Le soir je commence à ressentir le stress monter, je relis des documents techniques avant de me coucher. Avant un rendez-vous important je suis toujours réveillé avant mon réveil, et là ça n’a pas loupé, je suis debout à 6h du matin. Ca me donne le temps de me préparer et de boire un Redbull. Avant le petit déjeuner, c‘est loin d’être exceptionnel, mais ça réveille et la journée va être longue. Pour attendre 10h je marche dans les rues de Londres avec de la musique assez calme dans mon casque. Juste avant de rentrer dans le bâtiment j’écoute “eyes of the tiger” Ca a l’air con comme ça, mais ça me rebooste :)

En entrant chez Facebook, il faut s’enregistrer sur une tablette. Avant de dire bonjour à l’accueil il faut signer un NDA. Ce NDA ne me permet pas de vous donner tous les détails de cette journée, mais je peux raconter mes impressions. J’attends donc ensuite l’arrivée de mon recruteur.

Il arrive donc pour m’emmener dans la salle où je vais passer la journée. A partir de ce moment je ne serais plus jamais seul pendant les 7 heures passées dans le bâtiment de Facebook. C’est à dire que la personne avec qui vous passez un entretien attend l’arrivée de la prochaine personne pour sortir de la salle. On vous accompagne même jusqu’à la porte des toilettes. C’est compréhensible niveau sécurité mais assez stressant.

Behavioral interview

Commence donc le premier entretien. Comme l’expliquent tous les guides il y a des questions assez courantes :

  • Quel est le projet dont vous êtes le plus fier
  • Quelle est votre plus grosse erreur technique
  • Quel est votre point faible

Attention à cette dernière question. En école d’ingénieur, en France, on vous apprend à répondre à la question “quels sont vos points forts et vos faiblesses”. On vous dit de donner un point faible qui ne l’est pas vraiment. Par exemple “je suis un peu têtu, une fois que je commence quelque chose je vais jusqu’au bout”. Des réponses bateaux comme celle-ci il y en a des tonnes. Chez les Anglo-saxons, si vous faites ça vous êtes mort. C’est direct ce qu’ils appellent “un drapeau rouge”. Vous cachez quelque chose. Chez eux il faut répondre un vrai point faible. Dans mon cas par exemple, j’ai expliqué que j’étais extrêmement mauvais sur la partie dev front. Je n’ai jamais pu comprendre la moindre ligne de CSS. C’est super important d’être très honnête à ce moment là.

45 minutes très intéressantes, ça passe vite.

Coding interview

On passe ensuite sur le premier entretien coding. Je ne peux pas vous donner les questions que j’ai eues, mais elles sont bien dans les listes des sites listés plus haut. Un des challenges de ce type d’entretien, c’est de devoir coder sur un tableau blanc. Non seulement vous n’avez aucune complétion syntaxique, mais en plus la moindre erreur vous oblige à effacer et réécrire votre code. A la fin, je ne suis pas super content de ce que j’ai fait. Je sais que je n’ai pas sorti un algorithme optimisé mais j’ai proposé une solution.. A suivre.

Lunch

Arrive donc mon chaperon du midi qui m’emmène manger. Leur cantine est très grande et des écrans affichent les anniversaires Facebook des employés. Un point super important, il y a du beurre salé ! Facebook est donc BZH friendly !

Coding interview

Le second entretien coding ressemble forcement au premier. Cette fois j’ai le temps de répondre à 2 questions mais toujours sans optimiser le code à 100%.

Design interview

On enchaine sur 2 design interview. Sans donner de détail, on vous propose d’ajouter une fonctionnalité sur le site de Facebook et il faut proposer une architecture pour le faire. Design d’API, gestion des appels aux services externes, gestion du cache et même écrire des requêtes SQL. Toujours sur le même tableau blanc bien sûr. Exercice super intéressant, j’ai beaucoup aimé cette partie.

Et voilà le marathon est terminé ! Ca a été long, intense, mais j’en ressors assez content de ce que j’ai fait. J’ai pas mal de doutes sur la partie coding, mais le reste s’est très bien passé.

Bilan

Le 29 mai, soit 8 jours après la journée chez Facebook, le verdict tombe : j’ai échoué. Mon recruteur m’appelle pour faire le bilan. J’ai parfaitement réussi la partie behaviour et les 2 design, mais raté les 2 tests de code. Pour la première mon algorithme n’était pas optimisé et je n’ai pas eu le temps d’avoir une seconde question. Pour l’autre, j’ai bien eu le temps de faire 2 questions mais là encore ce n’était pas optimisé à 100%. Ce qui est intéressant c’est que je pensais qu’il prenait en compte le raisonnement, mais là on voit clairement que ce n’est pas le cas. Je n’avais pas non plus intégré qu’il fallait absolument avoir 2 questions par entretien. Ma plus grosse erreur a été de ne pas faire d’autres coding interview avant cette journée chez Facebook. La seule chose nécessaire pour réussir ce type de test c’est la pratique. Plus vous en faites plus c’est facile. Pour avoir enchainé ce type d’entretien en septembre à Londres, c’est devenu très simple. Donc pas de secret, pratiquez le plus possible, faites des entretiens à blanc avec un ami et codez avant l’entretien pour arriver chaud. Quitte à me lever à 6h, à Londres, je codais toujours au moins 1 heure avant un entretien et je les ai tous réussis.

J’ai vraiment très mal vécu cet échec. Pour moi qui adore coder depuis plus de 20 ans, être rejeté à cause de mon code c’est une grosse claque. Mais après coup c’est compréhensible. Je n’avais pas assez travaillé sur les exercices de coding. Après le premier test de coding à distance que j’ai réussi, j’ai fait l’erreur de penser que j’étais au niveau et j’ai arrêté de m’entrainer pour me concentrer sur la partie “design interview”. Je l’ai payé cher. C’est encore plus énervant quand on sait que le retour sur les 3 autres entretiens est excellent. Les retours sur la partie design sont même au-dessus de la moyenne nécessaire.

Je reste agréablement étonné de l’effort que fait Facebook au niveau de l’accompagnement des candidats. Du début à la fin, ils nous donnent toutes les informations sur le déroulement et les recruteurs sont là pour vous expliquer tout. Ca change vraiment de Google et Amazon par exemple. Il faudrait que je fasse un autre post pour vous raconter ça aussi :) Mais pour faire court, pour ces 2 derniers, je n’ai eu aucune explication sur ce qu’ils attendaient avant l’entretien et plus aucun contact après ! Pire, Google ne te recontacte jamais pour te faire un retour, par contre tu as droit à 3 emails de relance pour remplir le sondage de satisfaction…

J’espère que ce post aidera les prochains candidats francophones à réussir :)

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store