Je repense encore bien trop souvent au jour où Airbnb m'a recalé.
Il était déjà tard dans l'après-midi quand je suis sorti du dernier entretien. Je me suis retrouvé dans ma voiture, les yeux sur le volant, sans bouger pendant vingt minutes. Quand la recruteuse m'a expliqué le refus, il ne s'agissait ni de code ni de system design. Tout s'était joué sur une question d'appartenance, une question sur la façon de faire sentir à quelqu'un qu'il a sa place dans une équipe.
À l'époque, je sortais d'une série d'entretiens chez Google et j'abordais la préparation au code comme si elle décidait de tout. J'avais rédigé et répété douze histoires au format STAR. Elles parlaient toutes de fonctionnalités livrées, de désaccords à gérer ou de sujets techniques. Puisque ces douze récits étaient prêts dans ma tête, la banque d'histoires était la partie de ma préparation qui m'inquiétait le moins. C'était aussi celle que j'avais terminée en premier et que je n'avais jamais rouverte.
J'avais accordé exactement aussi peu d'attention à leur entretien consacré à la culture. En revanche, je casais sans arrêt des simulations de code dans mon agenda. Le matin avant le travail, c'étaient les graphes. À midi, des vidéos de system design.
À force de travailler comme ça, je ne voyais plus que les épreuves techniques. Une ancienne coéquipière se moquait même de moi. Six mois avant les entretiens, elle me répétait que la culture pesait autant que le code lors de la délibération finale. J'ai ri, vraiment. Elle n'a pas insisté et a changé de sujet. Moi, j'étais persuadé de bien faire.
Ready to ace your next interview?
InterviewMan gives you real-time AI answers during live interviews — undetectable on Zoom, Meet, and Teams.
Try InterviewMan FreeJ'avais beau enchaîner les problèmes, je laissais de côté un entretien entier, et pas un détail. Je n'avais pas été assez « parano » pour préparer l'échange sur la culture qui m'attendait à la fin de la boucle.
On m'a posé trois questions dans cette salle. Les trois portaient sur la manière d'aider les gens à sentir qu'ils ont leur place. Parmi mes douze histoires, aucune ne parlait d'inclusion. J'ai fini par ressortir un souvenir où j'avais aidé un nouvel ingénieur à prendre ses marques dans mon ancienne entreprise. En l'entendant sortir de ma bouche, je savais déjà que c'était nul.
« Be a Host » et « Belonging » sont de vraies valeurs fondamentales chez Airbnb, pas des slogans sur une affiche. Je n'avais rien qui touchait à l'une ou à l'autre.
Des codeurs moyens qui réussissent la culture reçoivent une offre. De très bons codeurs qui ratent la culture sont refusés. Voilà le calcul que mon ancienne coéquipière m'avait exposé. J'avais rangé ça dans la case « elle dramatise un peu son ancien employeur ». En réalité, elle me décrivait leur notation.
Dans mon cas, le processus a commencé ainsi. Avant de parler au moindre humain, il fallait passer un test HackerRank, soit deux problèmes de difficulté moyenne en quarante-cinq minutes.
Je suis tombé sur de la manipulation de tableau et un problème d'arbre binaire. Quelqu'un d'un Discord de bootcamp de code que je lis sans intervenir avait eu un graphe à la place de l'arbre. Ils piochent donc dans une banque de questions qui tourne.
Ils exigeaient aussi du vrai code exécutable, pas du pseudocode. Ça m'a pris de court après les entretiens Google, où tout était resté sur tableau blanc.
Ensuite venait un appel de trente minutes avec une recruteuse. C'était surtout une vérification toute simple, voir si j'étais une personne normale et si le poste m'intéressait réellement.
L'entretien téléphonique durait quarante-cinq minutes. J'ai eu les composantes connexes en DFS, terminé en vingt minutes environ. Pendant le temps restant, mon interlocutrice m'a aidé à chercher les cas limites. À un moment, elle m'a littéralement dit : « Vous devriez peut-être vérifier une entrée vide. »
J'ai failli tomber de ma chaise. Chez Google, personne ne vous donne quoi que ce soit. En tout cas, personne ne m'y avait jamais rien donné.
Chez Airbnb, on m'a aiguillé du début à la fin. Les intervieweurs dessinaient avec moi au tableau. Pendant le system design, mon interlocuteur se tenait à côté de moi et complétait le schéma avec moi. L'ensemble ressemblait à du pair programming. Pour le code, l'expérience n'avait rien à voir avec Google, surtout parce que les intervieweurs me parlaient vraiment.
Le jour du dernier tour comprenait deux entretiens de code et le system design. Le premier problème portait sur des sommes de chemins dans un arbre binaire avec une contrainte de profondeur. C'était gérable et, à ce moment-là, je me souviens m'être senti plutôt bien.
Le second concernait la fusion d'intervalles sur des fenêtres de réservation qui se chevauchent. Le problème était présenté comme un conflit entre les réservations de plusieurs voyageurs et semblait tout droit sorti de leur code de production. Le niveau allait de moyen à difficile. J'ai frôlé la limite de temps, mais j'ai terminé, après avoir passé les dix dernières minutes de ces quarante-cinq minutes à transpirer.
Mon ancienne coéquipière m'a expliqué ensuite qu'Airbnb faisait toujours ça. Chaque problème arrive habillé avec le vocabulaire de la maison : réservations, annonces, fenêtres de disponibilité. En dessous, on retrouve les mêmes arbres, tableaux, graphes et intervalles que l'on travaille depuis des semaines. Rien d'exotique, nulle part, du moins dans les entretiens que j'ai passés.
Le sujet du system design était « construire un système d'annonces et de réservation ». Mon interlocutrice m'envoyait scénario après scénario. Que se passe-t-il si deux voyageurs réservent exactement la même annonce à la même seconde ? C'était le premier. Puis elle a imaginé un hôte qui cessait de répondre au milieu d'une réservation. Les cas de tarification sont venus après, avec des prix qui changent selon la semaine et la saison. Passé un certain point, j'ai perdu le compte. Elle continuait simplement.
Ready to ace your next interview?
InterviewMan gives you real-time AI answers during live interviews — undetectable on Zoom, Meet, and Teams.
Try InterviewMan FreeJ'avais suivi la préparation classique de YouTube sur les systèmes de réservation d'hôtel. Elle m'a permis de répondre à peut-être quarante pour cent de ses questions. Tout le reste relevait du métier propre à Airbnb et j'inventais franchement mes réponses sur place.
La préparation générique du genre « concevoir Twitter » s'écroule dans cette salle. Je sais même exactement où : la concurrence qui crée une double réservation et la façon de la traiter, les machines à états de l'hôte et du voyageur, la tarification dynamique, le fonctionnement du classement dans la recherche, puis les calendriers de disponibilité à grande échelle. Aucune des vidéos YouTube que je regardais ne couvrait ces sujets.
La deuxième fois, j'ai abordé cet entretien autrement. Reformuler l'objectif avec mes propres mots, poser des questions pour réduire le périmètre, proposer moi-même des chiffres raisonnables, partir de très haut niveau, puis creuser ce qui semblait intéresser le plus mon interlocutrice. Lors de mes deux tentatives, c'est la double réservation qu'elle a poussée le plus loin. Au deuxième passage, le system design est même devenu mon moment préféré de la journée. C'est assez fou quand on sait que j'avais raté cet entretien la première fois, et raté pour de bon.
Même le déjeuner n'est « pas noté » qu'entre guillemets. Dans un thread sur r/cscareerquestions, quelqu'un racontait que la personne avec qui il avait déjeuné avait parlé de lui pendant la délibération. Il faut donc rester normal pendant toute la journée.
Quelques mois plus tard, je suis revenu pour une deuxième tentative. Cette fois, InterviewMan m'a accompagné pendant tout le processus. La différence entre les deux essais est ce qui m'a convaincu de travailler à plein temps sur ce problème.
Au début de l'entretien de culture, InterviewMan avait déjà ressorti une histoire sur l'appartenance à partir d'une conversation antérieure, avant même que je comprenne ce que l'intervieweur cherchait. Mon refus entier avait tenu à cette notion d'appartenance. Pendant le code, l'approche DFS s'est affichée quelques secondes après l'apparition du problème. En system design, l'outil a signalé tout de suite le risque de double réservation, exactement l'angle sur lequel mon interlocutrice avait le plus insisté la fois précédente.
Nous avons vérifié sa visibilité dans le Dock, dans la liste des processus et dans le Moniteur d'activité, sur HackerRank comme sur Zoom. Rien n'apparaissait. L'abonnement annuel revient à douze dollars par mois. Cinquante-sept mille personnes l'utilisent, il compte plus de vingt fonctions de furtivité et ne limite pas les sessions. Interview Coder demande deux cent quatre-vingt-dix-neuf dollars par mois et ne s'occupe que du code. Or, ici, le code ne représente que deux entretiens sur cinq, les deux qui comptent le moins chez Airbnb.
Mon ancienne coéquipière avait raison sur absolument tout. Dans cette entreprise, ce sont les histoires liées à la culture qui décident de l'issue. De vraies histoires, avec des noms et des moments que l'on a réellement vécus.
Je me souviens du moment où je lui ai annoncé le refus. Elle n'a rien dit pendant environ cinq secondes. J'ai compris : « Je t'avais littéralement prévenu. » Elle aurait parfaitement eu le droit de le dire à voix haute.
Après ça, j'ai presque cessé de raconter cette histoire. Je n'avais aucune envie de la revivre, et je m'en fichais assez vite. J'étais surtout furieux contre moi-même : j'étais arrivé avec douze récits impeccables et aucun sur l'appartenance, alors qu'elle m'avait dit exactement quel entretien comptait. Je l'ai appris au prix fort.
Ready to Ace Your Next Interview?
Join 57,000+ professionals using InterviewMan to get real-time AI assistance during their interviews.

