J’écris sur la vérité, pas sur les trucs et astuces
Mise à jour : En suivant les conseils écrits ci-dessous, j’ai obtenu des offres de Google, Microsoft, Amazon, Quantcast et Bloomberg.
C’est un guide complet qui contient tout ce que vous devez savoir sur l’entretien de codage. Il explique en détail ce qu’il faut apprendre, comment apprendre et surtout comment présenter la solution pendant l’entretien.
Si vous voulez réussir l’entretien de codage, vous avez trouvé le bon article. Après avoir lu cet article, vous pourriez être tenté de chercher d’autres articles sur le même sujet, car « Peut-être que je trouverai d’autres trucs et astuces qui m’aideront ».
Arrêtez de chercher des trucs et astuces, c’est ce qui vous éloigne de l’emploi de vos rêves.
Il n’y a pas de trucs ni d’astuces pour obtenir cet emploi. C’est juste du travail acharné, point final. Donc, si vous voulez vraiment écraser cet entretien, allez vous entraîner après avoir lu cet article.
L’article comporte trois parties & trois vidéos et il vous faudra environ 30 minutes pour le lire.
- Qu’est-ce que l’entretien de codage ?
- Comment se préparer à l’entretien de codage ?
- Comment donner le meilleur de vous-même pendant l’entretien de codage ?
D’abord, laissez-moi présenter, pour que vous sachiez que je suis confiant dans ce dont je parle.
Mon nom est Andrei et je suis un programmeur compétitif depuis cinq ans. J’ai participé à la finale mondiale de Google HashCode, le plus grand concours d’algorithmes organisé par Google, et avant cela, j’ai remporté trois médailles d’or aux Olympiades d’informatique en Roumanie. Fort de cette expérience, j’ai publié le cours en ligne « Introduction aux algorithmes et aux structures de données en C++ » qui a aidé plus de 8000 étudiants de 135 pays à faire leurs premiers pas dans le domaine.
Maintenant, j’étudie l’informatique à l’University College London et pendant ce temps, je crée un cours pour aider les étudiants et les jeunes professionnels à se préparer à l’entretien de codage dans les grandes entreprises technologiques. Par conséquent, dans cet article, je veux partager mon expérience avec l’entretien de codage et vous dire le chemin le plus direct pour le réussir. Vous pouvez me joindre ici.
Laissez-moi vous poser une question : avez-vous déjà rêvé de travailler dans une grande entreprise technologique, comme Microsoft ? Si oui, soyez sûr que la plupart d’entre nous l’ont fait aussi. Et parce qu’il y a une telle demande pour quelques dizaines de postes, ils ont besoin d’un moyen de voir quels candidats sont mieux préparés.
Avant d’être invité à l’entretien de codage, vous devez postuler pour le poste et avoir un CV qui brille parmi les autres. Dans cet article, je parlerai de l’entretien de codage proprement dit et de la façon dont vous pouvez vous y préparer, et non du processus de candidature pour le poste.
Pour la plupart des entreprises technologiques, l’entretien de codage consiste en des problèmes d’algorithmes &de structures de données. Considérez-les comme des questions de résolution de problèmes, dans lesquelles l’interviewer cherche à évaluer votre capacité à résoudre un problème que vous n’avez pas vu auparavant. Un entretien dure environ 45 minutes et on vous donne un ou deux problèmes de codage. L’interviewer attend de vous que vous trouviez la solution la plus optimale, que vous la codiez et que vous expliquiez ce que vous venez de coder.
Enfin, vous aurez la possibilité de lui poser des questions sur l’entreprise ou sur tout ce qui vous intéresse. Nous aborderons de manière exhaustive toutes ces étapes dans la dernière partie de cet article.
Comment se préparer à l’entretien de codage ?
Je veux être clair avec vous dès le début : il n’existe pas de raccourci ou d’astuce pour réussir l’entretien. La seule façon de trouver des solutions optimales aux problèmes algorithmiques est de s’exercer, en résolvant autant de problèmes que possible.
En deux mots, c’est du travail acharné.
Vous pouvez ne pas aimer ça et commencer à chercher ailleurs une astuce pour comprendre comment résoudre les questions d’entretien, mais elle n’existe pas. Réfléchissez une seconde : si une telle astuce existait, pourquoi tout le monde ne l’utiliserait-il pas et ne réussirait-il pas l’entretien ?
Donc, vous devez comprendre que l’unique variable de la réussite à l’entretien est la quantité d’entraînement que vous faites avant. Votre expérience, votre intelligence et tout le reste sont déjà fixés. Par conséquent, le temps consacré à la pratique fera la différence entre les candidats qui réussissent et ceux qui échouent.
L’entretien de codage est un combat avec vous-même, et l’unique moyen de le gagner est de pratiquer beaucoup.
La première étape consiste à se sentir à l’aise avec un langage de codage grand public, comme C/C++, Java ou Python. Certaines entreprises acceptent également d’autres langages, mais la grande majorité d’entre elles s’en tiennent à ces trois langages. Choisissez celui qui vous plaît le plus et tenez-vous-en à ce langage. Ne décidez pas à mi-chemin de la préparation que vous voulez changer de langue ! Pour le reste de l’article, je supposerai que vous avez choisi un langage et que vous connaissez bien sa syntaxe.
Maintenant, typiquement, l’entretien de codage porte sur les Algorithmes et les structures de données. Ils comprennent certains sujets fondamentaux que vous devez comprendre à fond, et n’envisagez même pas de passer l’entretien sans vous sentir à l’aise avec eux.
Vous trouverez ci-dessous une liste des Algorithmes et des structures de données que vous devez connaître. Je les ai écrits dans l’ordre de leur importance et c’est le meilleur chemin d’apprentissage.
1) Complexité du grand O : C’est un must et forme la base sous-jacente de votre pensée algorithmique. Comprenez ce qu’il signifie et arrivez au point où vous pouvez dire la complexité d’un algorithme de base juste en le regardant.
2) Tableaux : Vous devriez être familier avec le concept de tableaux à ce stade. Ce sujet se réfère à des problèmes où le tableau est utilisé juste pour le stockage et la solution comprend des techniques de base, telles que l’itération avec deux pointeurs. Un problème classique consiste à vérifier si un tableau donné est une permutation.
3) Les chaînes de caractères : Sachez comment manipuler une chaîne de caractères dans votre langage, et soyez familier avec les problèmes qui vous demandent de les concaténer ou de les faire tourner.
4) Listes liées : Il est fréquent de rencontrer un problème de liste chaînée lors de l’entretien. Ici, vous devez prêter une attention particulière aux cas de coin. Pensez à ce qui se passe si la liste chaînée est vide ? Ou si elle n’a qu’un seul élément ? Ou que vous voulez itérer jusqu’au dernier élément ? Lorsque vous résolvez un problème avec des listes liées, pensez deux fois aux cas de coin.
5) Tables de hachage : Structure de données fondamentale qui est présente dans la plupart des entretiens. Si vous approfondissez un sujet, choisissez les tables de hachage. Maîtrisez la bibliothèque des tables de hachage de votre langue et pratiquez au moins cinq problèmes. À la fin, relevez le défi suivant : comment trouveriez-vous le plus long sous-tableau avec des entrées distinctes ?
6) Piles : Soyez familier avec l’idée que vous pouvez manipuler seulement une extrémité de la pile. Résolvez ce défi : Implémentez une pile avec une API MAX, ce qui signifie qu’à chaque instant vous pouvez demander quel est l’élément maximum de la pile.
7) Les files d’attente : Ne les confondez pas avec les piles, car elles ont deux extrémités. Mettez en œuvre le problème classique de simulation d’une file d’attente en utilisant deux piles.
8) Greedy : Cette technique est assez simple et vous l’utilisez probablement tous les jours. Elle consiste essentiellement à prendre la meilleure décision possible à un moment précis, sans tenir compte des conséquences futures. Pratiquez quelques problèmes, et ne pensez pas que tout problème peut être résolu en utilisant Greedy.
9) Types primitifs : Il s’agit surtout de la manipulation des bits et des opérations de base sur les nombres. Cependant, certains problèmes peuvent devenir assez délicats. Comment compter le nombre de 1 dans une représentation binaire ?
10) Arbres binaires : Concentrez-vous sur les traversées, les ancêtres communs et itérez récursivement dans les arbres.
11) Les tas : Ils sont largement utilisés dans les applications du monde réel, alors apprenez à connaître les tas ! Pratiquez jusqu’à ce que vous puissiez être confiant quand utiliser un min-heap ou un max-heap. Comment imprimer les cinq plus grands éléments d’une séquence de nombres ? Utilisez-vous un min-heap ou un max-heap ?
12) Recherche : La recherche est une matière de base que tout le monde devrait connaître. Donc, pratiquez au moins trois problèmes utilisant la recherche binaire.
13) Triage : Soyez sûr que vous pouvez mettre en œuvre mergesort et quicksort. Connaissez très bien leurs complexités dans le meilleur, le moyen et le pire des cas. Si vous avez le temps, apprenez aussi Heapsort.
14) Arbres de recherche binaires : Ils sont largement demandés dans l’entretien de codage, et vous devez être capable d’implémenter toutes leurs opérations de base, y compris la suppression d’un élément !
15) Backtracking : Il s’agit essentiellement de générer toutes les solutions possibles et de prendre celles qui respectent vos exigences. Implémentez un générateur de l’ensemble de puissance de l’ensemble et le problème de n-Queen.
16) Graphes : Ils sont probablement la structure de données la plus utilisée en informatique. Saviez-vous que chaque réseau social n’est qu’un énorme graphe ? Entraînez-vous à faire une copie du graphe en mémoire et à détecter les cycles dans les graphes.
17) Programmation dynamique : La programmation dynamique est considérée par la plupart comme le sujet le plus effrayant. Mais c’est le plus beau si vous comprenez le raisonnement qui le sous-tend. Donc, pratiquez les cinq questions les plus courantes et restez avec elles jusqu’à ce que vous compreniez d’où viennent les récurrences.
Dans le cours, que je crée maintenant, j’explique chaque sujet dans cet ordre. Je travaille encore sur le cours, mais vous pouvez obtenir un accès anticipé à certaines des leçons et également m’aider avec vos commentaires, en rejoignant le groupe Facebook du cours.
Si de nombreux sujets ne vous sont pas familiers, cela signifie que vous devez commencer à vous exercer juste après cet article. Plus besoin de chercher en ligne d’autres guides, allez-y et pratiquez. N’oubliez pas que l’entretien est un combat contre vous-même, plus vous vous entraînez, plus vous avez de chances de gagner. C’est à vous d’augmenter la zone de confort de vos problèmes.
Comment donner le meilleur de vous-même lors de l’entretien de codage ?
L’entretien comporte cinq parties que nous allons aborder en profondeur. Regardez les vidéos explicatives pour des exemples réels.
1) Introduction
Cette partie commence l’entretien et dure environ trois à cinq minutes. L’interviewer veut en savoir plus sur vous et vous donne l’occasion de vous présenter. En général, il s’intéresse aux projets sur lesquels vous avez travaillé auparavant et à celui qui était le plus impressionnant. C’est votre chance de briller, alors ne la gâchez pas!
N’essayez pas d’être flatteur. Il est facile de repérer une fausse personnalité qui essaie de vous tromper. Moi et tout le monde détestons ces personnes, alors assurez-vous de montrer votre vraie personnalité.
Vous devez savoir à l’avance ce que vous allez dire sur votre projet préféré, alors préparez-le avant l’entretien. Maintenant, la plupart des gens ne disent que deux courtes phrases, ce qui est mauvais. Quelle réponse préférez-vous ?
1) « J’ai travaillé sur une application web pour mieux gérer les patients dans les hôpitaux. J’ai écrit le backend en Node.js. »
La façon dont vous vous présentez compte vraiment
2) « Un projet que j’ai vraiment apprécié consistait à créer une application web pour les services de santé nationaux du Royaume-Uni afin de les aider à mieux gérer les patients à l’hôpital. Cela faisait partie du programme d’études de l’université, cela a pris deux mois et j’ai été le chef d’une équipe de trois personnes.
Nous avons pris le projet à partir d’une idée de base et l’avons transformé en une véritable application. J’étais responsable du codage du backend en Node.js et de la base de données en MongoDB. C’était la première application que je créais pour un client et je n’étais pas familier avec les technologies web. Le processus de développement était itératif, et nous avons fait quelques erreurs en cours de route.
À la fin, nous avons dépassé les attentes avec de nombreuses fonctionnalités, et ma préférée est que les utilisateurs peuvent mettre à jour les chambres de l’hôpital, au lieu d’être codées en dur.
J’ai appris beaucoup de choses de ce projet, en particulier comment travailler en équipe. Il y a eu quelques moments où des problèmes techniques ou d’équipe ont surgi, mais finalement, tout s’est bien passé et nous avons obtenu la meilleure note de l’année ! »
Transformez cette présentation en avantage ! L’interviewer est vraiment intéressé à en savoir plus sur vous, alors commencez par une présentation concise du projet, en expliquant de quoi il s’agit. Dites ensuite quelle a été votre contribution (si vous avez aidé l’équipe avec une idée intelligente, dites-le !), et ce que vous avez appris du processus de développement. Vous pouvez également mentionner quelle différence vous avez faite pour les utilisateurs.
Vous devriez parler de votre projet pendant une à deux minutes.
2) Comprendre le problème
L’interviewer vous dira brièvement l’énoncé du problème que vous devez résoudre. J’ai dit « brièvement » parce qu’il ne vous donnera pas beaucoup de détails sur les contraintes, les cas de coin ou la façon dont vous recevez les données. Cela fait partie de votre travail de demander tout ce dont vous avez besoin pour résoudre le problème. Répétez l’énoncé à voix haute pour être sûr que vous l’avez bien compris.