Préparation aux entretiens avec les géants de l'informatique: comment surmonter la malédiction des entretiens algorithmiques


Avertissement:


Je n'ai pas programmé depuis l'âge de trois ans, je ne connais pas Knuth par cœur, je ne suis pas lauréat de concours ou championnats en informatique de programmation sportive, je n'ai pas étudié au MIT. J'ai une formation en informatique et 6 ans d'expérience en développement commercial. Et jusqu'à récemment, je ne pouvais pas aller au-delà de la première projection technique aux géants de l'informatique de FAANG (Facebook, Amazon, Apple, Netflix, Google et autres), bien que j'aie fait plusieurs tentatives. 

Mais maintenant, tout a changé, j'ai reçu plusieurs offres et je veux partager mon expérience sur la façon d'y parvenir. Il s'agira du poste d'Ingénieur Logiciel dans les bureaux européens des sociétés cotées.

Pourquoi ai-je besoin de ce FAANG? Mes avantages subjectifs:

  1. de bonnes conditions, le salaire est plus élevé que le marché;
  2. relocalisation simple;
  3. processus débogués;
  4. des collègues talentueux du monde entier.

Et les avantages de la préparation, même si vous ne recevez pas l'offre:

  1. voyages;
  2. Amélioration de la vitesse d'écriture du code;
  3. la capacité de vérifier mentalement le programme pour les erreurs (méthode du regard);
  4. la possibilité de proposer des scripts délicats pour les tests;
  5. la capacité de trouver des goulots d'étranglement;
  6. la formation des compétences en conception de systèmes, y compris celles à plus grande échelle que celles que j'ai jamais rencontrées.

Nous attirons l'attention d'un recruteur


Dans mon cas, LinkedIn était suffisant. Pendant plusieurs années, sans but particulier, j'ai maintenu un certain niveau d'activité dans mon profil: j'ai régulièrement ajouté des amis et je me suis inscrit sur les pages de l'entreprise. Assez tôt, les premiers recruteurs ont commencé à frapper, et plus j'avais de contacts, plus ils proposaient des postes vacants. C'est arrivé au point que lors de la dernière itération pendant quelques mois, ils m'ont écrit tout de suite de Google, Microsoft, Amazon et Facebook, cela ressemblait à un complot de cartel.

Inconvénients de cette approche: on ne sait jamais quand on a de la chance. Le recruteur peut rattraper son retard sur les vacances avec les nouvelles de l'événement d'embauche brûlant, qui devrait être dans une semaine. Mais dans ce cas, il y a des avantages: très probablement, en raison de l'urgence, ils vous rencontreront et manqueront l'une des étapes de l'entretien - par exemple, dans le cas d'Amazon, en ligne avec un spécialiste technique.

Si vous avez une version et que dans un proche avenir, elle n’est pas du tout à la hauteur des tâches le matin, alors vous pouvez vous mettre d’accord sur quelques mois pour vous préparer. Les entreprises comprennent que leurs entretiens sont compliqués et il leur est plus facile d'attendre quelques mois maintenant que de vous perdre en tant que candidat pendant six mois ou un an (après environ cette période, les entreprises sont autorisées à postuler à nouveau).

Il existe une autre approche souvent mentionnée.- trouver une personne au sein de l'entreprise qui vous recommandera. Cela vous permettra de mieux planifier votre stratégie d'entraînement. Mais je ne m'y arrêterai pas, car je ne l'ai pas essayé moi-même et je ne peux que partager des rumeurs selon lesquelles la recommandation sur Google ajoute des points lors de l'entretien et augmente les chances d'une décision positive du comité de recrutement (la dernière étape est une réunion où les résultats sont discutés par contumace et le candidat est approuvé ou rejeté).

Schémas d'entrevue


Voici un bref aperçu du processus d'entrevue dans différentes entreprises avec des exemples, et dans les sections suivantes, je considérerai la préparation de chaque partie plus en détail. Les étapes sont similaires, mais leur ordre et leur nombre peuvent varier. Par exemple, Google est l'un des leaders du nombre de sessions - jusqu'à cinq en personne, puis une ou plusieurs autres interviews avec l'équipe.


Schéma d'interview chez Google (ci-après les schémas peuvent varier légèrement en fonction du bureau et du poste)

Certaines étapes - par téléphone ou avec une équipe - peuvent être réaffectées si l'une des parties a des doutes. Leur nombre n'affecte rien, c'est juste une chance supplémentaire que vous devez utiliser après avoir évalué combien de temps est nécessaire pour la préparation (si l'entretien est technique). L'approche générale de Google et, par exemple, de Microsoft est la séparation du processus pour les candidats ayant une expérience minimale (<1 an) et les candidats expérimentés. Pour la première, une évaluation en ligne peut en outre être réalisée.


Microsoft Interview Scheme

Les questions de comportement peuvent faire partie de chaque session en personne, comme, par exemple, Microsoft et Amazon, et peuvent être une session distincte. En tant que candidat, je préfère la deuxième approche: premièrement, un entretien comportemental séparé ne vole pas le temps de résoudre les problèmes si l'intervieweur se révèle soudainement bavard, et deuxièmement, c'est génial quand vous le mettez après toutes les sessions techniques - vous pouvez facilement passer aux conversations a propos de la vie.


Programme d'interview d'Amazon

Chez Microsoft et Amazon, l'interview comportementale est intégrée dans les sessions techniques, probablement aussi parce que souvent ces étapes sont menées par des employés d'une future équipe. Dans les entreprises où l'approche est différente, la communication avec les futurs collègues se fait dans une étape distincte. Par exemple, Google définit une équipe après avoir terminé avec succès la phase en personne. Le processus le plus original de Facebook - le choix d'une équipe se fait après l'embauche. Un nouvel employé passe 6 semaines dans un bootcamp - ce sont des projets de test dans différentes équipes, puis prend une décision.


Programme d'interview sur Facebook

Criblage non technique


La première étape consiste à parler avec un recruteur. Il s'agit généralement d'un court appel pour décrire le poste vacant ou les équipes que le recruteur propose d'interviewer, et pour découvrir votre intérêt et votre motivation. Il peut ne pas y avoir de poste vacant spécifique, tout dépend du processus d'embauche d'une entreprise donnée (voir «Schémas d'entretien» ). Il semble que la scène soit assez simple, mais vous ne devriez pas vous détendre ici. Ils peuvent poser quelques brèves questions techniques, par exemple, pour estimer le nombre de caractères au pouvoir de deux (Google). Ou ils peuvent trouver l'expérience pas suffisamment pertinente, ou que vous, en tant que candidat, n'êtes pas très intéressé (c'est ce que Facebook pratique). 

Se préparer pour une entrevue algorithmique


La projection technique est l'étape qui pour moi est le plus souvent devenue la dernière avant de proposer tout ce programme de formation.
Bien sûr, ils m'ont envoyé du matériel pour examen et recommandé que je pratique à Hackerrank / Leetcode. Mais ils n'ont jamais dit qu'il fallait résoudre au moins 100-200 problèmes, et c'est exactement le nombre qui m'a finalement permis d'atteindre les finales réussies.
On peut voir à l'œil nu qu'il s'agit de deux mois de résolution régulière de problèmes en présence de travail et d'une autre vie. Vous pouvez essayer de consacrer des vacances à cela et faire face plus rapidement, mais il y aura ensuite une préparation pour l'étape à temps plein et vous devrez toujours vous lier d'amitié avec votre horaire habituel.

J'ai préparé en utilisant Leetcode, et mon choix était comme ça pour plusieurs raisons: 

  • grande banque de tâches;
  • la plupart d'entre eux ont une bonne couverture de test;
  • ventilation payante pratique par fréquence et par entreprise (il existe également des sélections gratuites);
  • communauté active - vous pouvez lire sur les approches de formation et les entretiens récents.

Leetcode présente, bien sûr, certains inconvénients:

  • il est presque impossible d'ajouter votre tâche ou votre test élémentaire. Par conséquent, les informations commencent à devenir obsolètes;
  • estimation inexacte du temps d'exécution et de la mémoire - peut varier du début au début;
  • conditions insuffisamment claires par rapport aux tâches de programmation sportive;
  • pas toujours des interfaces de fonction idiomatiques.

Les deux derniers points peuvent être des avantages dans le sens où vous devez parfois faire face à de tels problèmes lors des entretiens et que vous devez vous y préparer. Il semble que Leetcode ne puisse tout simplement pas faire face au flux d'informations qui lui est tombé dessus, mais pour le moment c'est toujours le meilleur outil du genre. Sa force réside également dans la communauté qui vote pour les questions, les décisions et trouve les erreurs.

Pour moi, les tâches s'intègrent parfaitement le matin avant le travail. Après le petit déjeuner, j'ai réglé une minuterie et résolu quelques tâches de niveau moyen. La minuterie est importante car elle aide à créer un environnement de combat. Je réserve du temps en fonction des niveaux de difficulté: 20 minutes pour le simple, 40 minutes pour le moyen, 60 minutes pour le difficile. J'ai choisi principalement des tâches de niveau intermédiaire, car les tâches complexes sont rarement posées. Si après un certain temps la tâche n'était pas terminée, j'ai étudié la solution, l'ai ajoutée à la liste et y suis revenue après un certain temps. J'ai essayé d'abord d'étudier l'approche par des mots et d'essayer de l'encoder. La solution pouvait être consultée sur le site lui-même - des auteurs de la tâche ou des commentateurs, la vidéo de Tushar Roy a également aidé, explique-t-il très clairement avec des exemples. L'analyse de presque toutes les tâches peut être trouvée sur GeeksForGeeks, mais il y a pas mal d'erreurs.

L'approche la plus universelle consiste à trier toutes les tâches par fréquence et à commencer à les résoudre par ordre décroissant.
Si vous ne connaissiez pas l'informatique auparavant, vous devez d'abord suivre un cours fondamental, mais ne pas vous laisser emporter. Ni la connaissance de l'informatique, ni le livre lu Cracking the Coding Interview ne donneront un tel effet, bien qu'ils soient très utiles pour commencer. Au début, j'avais un cours universitaire, un cours de Sedgwick ( un et deux) et le livre de McDowell mentionné - tout cela ne m'a pas aidé à passer même un entretien téléphonique. Tout d'abord, les modèles de décision doivent être à portée de main afin que le candidat puisse les voir et les appliquer rapidement. Pour ce faire, vous devez non seulement lire l'analyse de la tâche, mais d'abord essayer de trouver (ou de vous souvenir), et si cela ne fonctionne pas, après l'analyse, écrivez-la à nouveau vous-même. Il est conseillé de le faire avec des délais et une très bonne couverture de test, comme sur Leetcode, qui n'est pas fourni par des cours ou des livres. Deuxièmement, les cours d'informatique, en règle générale, ne parlent pas d'approches pratiques de solutions comme deux pointeurs ou «lièvre et tortues»

Vous pouvez résoudre ces mêmes problèmes non pas consécutivement, mais selon des thèmes ou des modèles. Mais l'essentiel ici n'est pas de s'impliquer et de ne pas résoudre tout le sujet en une journée. Sinon, il peut sembler que tout est clair, et dans quelques jours à partir d'une telle approche express, il n'y aura qu'un vide en plein essor. Je laisse les sujets "s'installer" et vérifie ce que j'ai appris sur les tâches restantes après un certain temps.

Trucs et astuces


Quand je me préparais pour un entretien avec une certaine entreprise, j'ai un peu changé de tactique sur Leetcode. Avec un abonnement payant, vous pouvez y afficher des collections spéciales de tâches pour les entreprises populaires et elles vous aident à vous préparer rapidement. De nombreuses entreprises confient les mêmes tâches et seul Google, qui encourage ses enquêteurs à en proposer de nouvelles, s'en retire. Par conséquent, 70 à 80% des tâches résolues à partir d'une telle sélection garantissent presque le succès.


Une sélection avec Leetcode pour une entreprise individuelle - les tâches les plus fréquentes sont marquées de commentaires indiquant le stade de l'entretien.Je

voudrais également mentionner les collections gratuites pour les tests en ligne ( par exemple, pour Amazon), qui sont soigneusement recueillies par la communauté dans les discussions. Il n'y a pas beaucoup de tâches là-bas, mais elles coïncident presque complètement avec celles qui peuvent être détectées dans les tests en ligne. Je recommande fortement de les résoudre si une telle étape est en avance, car il peut y avoir de nombreux pièges qui vous feront perdre votre temps. Il n'y aura pas de personne avec qui vous pourrez vous mettre d'accord sur une interface de fonction plus pratique ou expliquer par des mots ce que vous aimeriez résoudre d'autre, mais vous n'avez pas eu le temps. Seul un temporisateur, pas toujours la signature de méthode habituelle (par exemple, les tableaux C pour C ++) et des tests sans compromis. Soit dit en passant, pour réussir, quelques tests peuvent être ratés.

Le filtrage technique utilise généralement un outil simple pour l'édition de code en ligne. Un conseil très banal qui aide à sauver certaines cellules nerveuses est de s'entraîner à l'avance avec l'outil dans lequel vous écrirez le code. Surtout si c'est quelque chose de non trivial comme Google Docs, où vous devez vous habituer à tout mettre en forme à la main.

De temps en temps, vous pouvez lire les conseils «pour informer l'intervieweur si vous avez vu un problème que vous devez résoudre». Je suis plutôt sceptique à leur égard pour de nombreuses raisons. Premièrement, si vous avez démonté une tâche et que vous ne l'avez pas mémorisée, il ne sera pas évident que vous l'ayez déjà vue. De plus, vous pouvez toujours proposer un suivi que le candidat n'a pas établi. Deuxièmement, les entreprises conseillent ouvertement de se former sur Leetcode avant l'entretien. Ce sera intéressant si l'intervieweur manque de tâches qui ne vous sont pas familières. Troisièmement, il est très difficile de trouver des solutions à partir de zéro, même avec les conseils de l'intervieweur. J'espère qu'ils sont rarement demandés, mais vous ne devez pas compter sur la chance. Et quatrièmement, si l'entreprise s'inquiète vraiment à cause des tâches que vous connaissez, elle motive les enquêteurs à en proposer de nouveaux.

Si je voulais comprendre à quel point j'étais prêt à résoudre de nouveaux problèmes, inconnus de moi, j'ai participé à des compétitions de programmation sportive chez Leetcode / Codeforces. C'est plus compliqué que l'entretien proprement dit, car il n'y a personne avec qui discuter de la solution et obtenir un indice s'il y a des difficultés. Mais il n'y a pas de tentation d'exécuter votre code sur des tests prêts à l'emploi sans exécution mentale avec des exemples - vous risquez de recevoir une amende. 

Tout semble être? Non, il y a un petit détail, littéralement une question qui peut ruiner toute l'interview. Vous devez connaître par cœur les difficultés temporelles et de mémoire des algorithmes standard, et le reste - pour être en mesure de produire rapidement et de vous entraîner à le faire pour chaque problème à résoudre. Le théorème maître est utile pour déterminer la complexité des problèmes récursifs .

En anglais s'il vous plaît


L'outil évident dont vous avez besoin pour une entrevue est l'anglais. L'approche de son étude n'est pas le sujet de notre conversation, je veux juste m'arrêter un peu sur la façon de la pratiquer en pratique dans des conditions de combat. Le fait est que l'analyse d'une tâche seule ne reproduit pas exactement l'entretien. Parce que, entre autres, vous devez expliquer votre train de pensée en anglais et le faire en parallèle avec l'écriture de code, et dans certains cas même sans lui. Par conséquent, il sera idéal de trouver un partenaire. Il peut s'agir d'un ami qui se prépare également à un entretien, il peut s'agir d'un mitap spécial ( exemple de Moscou ), ou il peut s'agir d'une personne au hasard sur l'un des sites ( un , deux) Je n'ai pas utilisé les ressources de ce dernier type, mais vous pouvez lire comment cela fonctionne, par exemple, dans cet article .

Stage à plein temps


Maintenant, cette étape est devenue en ligne en raison du coronavirus. Il semblerait qu'il ne devrait pas y avoir de différence, et les entreprises peuvent également économiser de l'argent. Mais j'ai été surpris de constater que dans le format en ligne, les entretiens semblaient plus lents et ces 5 à 10 minutes s'avéraient souvent critiques pour moi. J'espère que bientôt soit les entreprises s'adapteront et donneront plus de temps, soit nous reviendrons au format plein temps.

Tableau blanc


Rappelez-vous comment je me suis familiarisé avec les outils d'édition de code en ligne pour la première étape? Dans les entretiens à plein temps, un tableau noir est souvent utilisé à la place. Je l'ai achetée chez elle pour préparer l'étape à plein temps. L'effet a été plus fort que prévu. Avant cela, j'avais peur de la planche comme une ardoise vierge et même au travail, je préférais l'éviter. Mais maintenant, quand je me suis habitué, j'ai découvert à quel point c'était pratique pour les interviews:

  • vous pouvez sans difficulté fixer la décision (par rapport au papier);
  • facile à dessiner une image;
  • pratique pour peindre un exemple;
  • plus rapide et plus confortable que de taper sur un clavier auquel vous n'êtes pas habitué (si dans le cas d'une alternative, ils suggèrent de coder la solution sur l'ordinateur portable fourni).

Conception du système


Il s'agit peut-être d'un type d'interview pour lequel il n'y a pas de «voie royale». Il convient de noter qu'avant cela, je n'avais aucune expérience dans la conception de systèmes distribués. Il y a beaucoup moins d'informations sur la préparation d'un entretien de conception de système que sur un entretien algorithmique. Cette situation est aggravée par le fait que les personnes qui publient des analyses de ces problèmes n'ont souvent pas elles-mêmes d'expérience pertinente. Néanmoins, inspiré par les modèles de l'entretien algorithmique, j'ai commencé à chercher quelque chose de similaire et j'ai trouvé un cours rémunérécela m'a paru simple et efficace ... jusqu'au premier entretien, où j'ai réalisé que c'était très superficiel. Ni le proxy inverse ni le réseau de diffusion de contenu, dont mes enquêteurs souhaitaient entendre, n'y ont été abordés. Assez de lui uniquement pour le "grade C". Cela, d'une part, a aidé - a permis d'obtenir une offre, à condition que toutes les autres pièces soient bien terminées. En revanche, il a réduit le niveau du poste proposé, car cette étape est importante pour évaluer l '«ancienneté» du candidat. Eh bien, comme toutes les sessions de l'étape à temps plein sont résumées, il vaut mieux ne pas perdre de points ici - ils peuvent tout simplement ne pas suffire pour un résultat positif.

Pendant la formation continue, j'ai finalement trouvé une excellente ressource gratuite. Il est également assez court - il peut être lu en quelques heures, mais il existe des liens vers chaque partie pour approfondir le matériel. Il s'agit d'une excellente stratégie, quel que soit le temps disponible: vous pouvez commencer par un bref aperçu, puis étudier plus en détail.

J'ai appris cette sélection dans le github grâce à une lettre avec du matériel de formation qui m'a été envoyé par un recruteur. Il s'agit d'une source précieuse à ne pas oublier. Certaines des ressources envoyées peuvent être meilleures que des collections d'articles comme celui-ci.

Entretien comportemental


Un autre type d'entrevue, qui peut être une séance distincte ou en plus d'autres, est une entrevue comportementale. J'ai décidé de m'y préparer, car il est parfois difficile de trouver une situation appropriée ou de répondre à une question, et l'intervieweur peut interpréter l'attelage comme une tentative de cacher quelque chose. Ma formation a pris très peu de temps et devrait être suffisante pour longtemps. Amazon a pris des principes comme échantilloncomme les plus nombreuses et peintes sur chaque principe 2-3 situations de mon expérience. Pourquoi tant? Le fait est que la même question peut être posée par différents enquêteurs dans le cadre d'une étape en personne et ce ne sera pas très cool si tout se résume à un seul projet. Ou, à l'inverse, ils poseront plusieurs questions, pour lesquelles le même cas sert d'exemple. Pour simplifier les réponses, j'ai également identifié des éléments clés pour chaque situation:

  • des difficultés;
  • ce qui n'a pas fonctionné (et quelles conclusions j'ai tirées);
  • Qu'est ce que tu aimais;
  • comment je me suis montré;
  • conflits.

Il est souvent difficile de décrire rapidement une situation pour un intervieweur sans manquer de détails importants. La décomposition du récit selon la technique STAR aidera à clarifier et séquentiellement : situation - tâche - action - résultat. Dans cette partie, il est important de ne pas abuser du mot «nous», il devrait être un montant minimal. Parlez de ce que vous avez fait, sans sous-estimer votre contribution.

Ici, ils peuvent vous demander pourquoi vous souhaitez travailler dans notre entreprise. J'ai répondu à cette question à l'avance, grâce à quoi, mes enquêteurs étaient satisfaits des arguments.

Lorsque l'étape à temps plein n'est pas la dernière


Comme je l'ai mentionné , certaines entreprises organisent un entretien avec l'équipe en tant qu'étape distincte. Mais ce n'est peut-être pas définitif. À un poste dans les bureaux européens de Google, il est suivi par un comité de recrutement - une réunion d'experts qui détermine si un candidat correspond au poste sélectionné. Bien entendu, le rôle principal est joué par les commentaires des enquêteurs. Mais la scène sur place est rarement tout à fait possible de passer parfaitement, et ici des détails supplémentaires entrent en jeu. Les recommandations des employés existants sont également un plus, et un recruteur peut demander des liens vers les profils Github et Topcoder / Codeforces / Leetcode. Le comité d'embauche est loin d'être une étape formelle, le pourcentage de refus ici peut être comparable à l'étape à temps plein, dans de rares cas, ils peuvent planifier un entretien supplémentaire.

PS


Une fois, j'ai eu une entrevue, pour laquelle je me suis préparée pendant une longue et difficile période. J'ai cliqué sur des tâches comme des noix, j'ai rapidement écrit le code et je me suis senti enthousiaste. La partie technique semblait très facile, et j'ai terminé l'appel avec une certitude totale de mon passage: "Si je ne passe pas maintenant, je ne sais pas de quoi d'autre ils ont besoin." Il n'y avait personne de plus heureux que moi, jusqu'à ce que je défile à nouveau ma décision et trouve une erreur. Pendant les 48 heures qui ont suivi, j'ai attendu une révélation qui n'est pas venue et j'ai vraiment passé. J'ai donc réalisé que les enquêteurs se trompent également et que la confiance aide.

Références


  1. Les modèles de résolution de problèmes les plus courants: examen gratuit et cours payant
  2. Modèles de résolution de problèmes de programmation dynamique
  3. Tâches vidéo de Tushar Roy
  4. Formule de calcul de la complexité des algorithmes récursifs
  5. Entretiens d'embauche entre pairs: un et deux 
  6. Ressources pour préparer un entretien d'embauche de conception de système: cours gratuit et payant 
  7. Cours d'algorithmique de Sedgwick sur Coursera: https://www.coursera.org/learn/algorithms-part1 et https://www.coursera.org/learn/algorithms-part2
  8. Principes de leadership d'Amazon
  9. Technique STAR
  10. En savoir plus sur le sujet: recherche d'emploi chez FAANG et préparation réussie chez Google

All Articles