Article original : The one thing between you and your dream job — coding interview!
Par Srinivasan C
Un recruteur vous appelle pour un poste dans l'entreprise de vos rêves. Vous êtes extrêmement excité et demandez des détails sur leur processus de recrutement. Il répond : « Ce n'est rien de grand, vous aurez 5 tours de codage avec notre équipe technique senior, juste le tour standard de codage sur tableau blanc ». Vous mentez effrontément et terminez la conversation en disant que vous adorez votre travail actuel et que vous réessaierez plus tard. Si vous pouvez vous identifier à cette situation, continuez à lire.
J'ai rencontré tant de développeurs logiciels de premier ordre qui sont intelligents, débrouillards, fiables et savent comment obtenir des résultats malgré de nombreuses dépendances. Mais la simple pensée des entretiens de codage sur tableau blanc leur glace le sang. La plupart de ces personnes croient qu'elles ne pourront jamais réussir ce type d'entretiens et que c'est seulement pour les enfants prodiges qui font de la programmation compétitive depuis l'âge de 12 ans. Rien n'est plus éloigné de la vérité. J'aimerais démystifier ces idées reçues et vous montrer un chemin clair pour réussir ces entretiens.
Pourquoi ?
Tout d'abord, nous devons comprendre pourquoi les entreprises organisent ce type d'entretiens.
- Filtre strict pour obtenir de bons employés — Les personnes qui réussissent les entretiens de codage peuvent être de deux types. 1. Les personnes extrêmement intelligentes qui n'ont besoin d'aucune préparation et peuvent réussir ces entretiens sans problème. Les personnes qui prennent le temps de se préparer et de pratiquer les structures de données et les algorithmes et réussissent les entretiens. Les premières sont des personnes extrêmement intelligentes et les secondes sont des personnes qui peuvent obtenir des résultats grâce à la persévérance, et ces deux qualités sont les marques d'un bon employé.
- Signaux clairs — Les entretiens basés sur les connaissances sont notoires pour donner des signaux ambigus. Il est très difficile de juger un candidat en fonction de sa connaissance d'une fonctionnalité obscure d'une technologie. Mais dans les entretiens de codage, en 1 heure, vous obtenez un signal clair concernant le candidat. En fonction de la performance lors du tour de codage, vous pouvez facilement prendre une décision d'embauche ou de non-embauche.
- Indicateur de compétences — La plupart des entreprises qui organisent ces entretiens ont besoin de personnes capables de travailler sur n'importe quelle stack technologique et sur des problèmes de pointe. Elles ont donc besoin d'un moyen objectif de déterminer les compétences d'un candidat, indépendamment de son CV impressionnant (la plupart des personnes qui postulent à ces entreprises ont un CV impressionnant). Les entretiens de codage testent les compétences de résolution de problèmes d'un candidat, ce qui indique probablement sa capacité à résoudre de nouveaux problèmes.
- Indépendant de l'expérience — Les entretiens de codage conviennent aux personnes de tous niveaux d'expérience. Toute personne souhaitant rejoindre ces entreprises est censée avoir une connaissance pratique des structures de données et des algorithmes, et peut donc être utilisée comme mesure objective pour juger les candidats à tous les niveaux.
Comment ?
Voyons comment préparer ces entretiens.
Choisir un langage
Le langage que vous choisissez n'a pas d'importance ! Tant que vous êtes à l'aise avec le codage dans le langage choisi et qu'il prend en charge les structures de données et les algorithmes (STL, Collections), vous êtes prêt à partir.
Piège — La plus grande erreur que je vois les gens commettre ici est de choisir un langage fantaisiste pour impressionner l'interviewer et de lutter avec l'implémentation. C'est comme creuser sa propre tombe. La seule chose qui compte est la manière dont vous pouvez implémenter une solution en utilisant le langage de votre choix et non le côté fantaisiste du langage.
Exploiter le langage que vous avez choisi
Vous devez être extrêmement à l'aise avec l'utilisation des structures de données et des algorithmes intégrés dans le langage que vous avez choisi. Cela peut être STL ou Collections ou autre chose. La maîtrise de ces éléments vous permet de vous concentrer sur la résolution du problème en choisissant et en utilisant les bonnes structures et en produisant du code rapidement dans un cadre d'entretien.
Calendrier : 1 semaine.
Se familiariser avec la théorie
Il n'y a qu'une poignée de choses que vous devez connaître pour les entretiens de codage.
- DS — Tableau, Pile, File, Liste chaînée, Arbre, Hachage, Graphe
- Algos — Recherche, tri, BFS, DFS, Tri topologique
Les choses que vous devez comprendre sont les différentes implémentations, les complexités temporelles et spatiales et quand les utiliser ou non. Je recommande vivement The algorithm design manual à cette fin.
Calendrier : 2-3 semaines en fonction des connaissances précédentes.
Piège — Ne sautez pas les complexités temporelles et spatiales. C'est l'une des plus grandes attentes lors d'un entretien de codage. Vous êtes censé analyser et considérer les compromis entre différentes implémentations et pour cela, vous devez comprendre les complexités temporelles/spatiales pour toutes les choses.
Pratique
Maintenant que vous avez une solide fondation en structures de données et en algorithmes, vous pouvez vous lancer dans la résolution de problèmes. Vous pouvez utiliser Leetcode et InterviewBit à cette fin. Ils vous permettent de résoudre des problèmes regroupés par type et disposent d'une large gamme de problèmes. Ne vous concentrez pas sur la quantité mais sur la qualité. Essayez de résoudre le problème par vous-même et si vous remarquez des schémas parmi différents problèmes, notez-les et utilisez ces notes pour vous y référer plus tard. Si vous préférez un livre pour les problèmes, vous pouvez utiliser Cracking the coding interview ou Data Structures and Algorithms Made Easy.
Calendrier : 8 à 12 semaines.
Piège — La pire chose que vous puissiez faire ici est d'essayer d'apprendre les problèmes en lisant ailleurs une fois que vous êtes bloqué. Cependant tentant que cela puisse être, évitez-le. Faites-le seulement après avoir essayé pendant plus de 2 heures. Cela vous donne la satisfaction d'apprendre quelque chose, mais en réalité, vous ne pouvez pas le résoudre lorsque vous le rencontrez ailleurs.
Entretiens simulés
Si vous avez suivi les étapes ci-dessus correctement, vous serez familier avec les principaux types de problèmes et serez capable de résoudre la plupart des problèmes que vous rencontrez lors de l'entretien. Mais tout ce que vous avez fait jusqu'à présent et le cadre de l'entretien sont totalement différents. Pour vous familiariser avec le cadre de l'entretien, essayez de pratiquer des entretiens simulés. Vous pouvez utiliser Pramp pour des entretiens simulés gratuits avec des pairs. Si vous souhaitez avoir un entretien simulé par un professionnel et des commentaires détaillés, contactez-moi.
C'est essentiellement une recette étape par étape pour réussir les entretiens. J'ai suivi le même chemin et la plupart des personnes que je connais ont fait de même. C'est juste du travail acharné et cela n'a rien à voir avec les connaissances précédentes ou l'intelligence.
Prochaines étapes
Je prévois d'écrire une série de publications discutant de divers sujets comme Stack, Queue, Trees, etc., un par un, et de disséquer les différents types de problèmes dans chacun d'eux. Suivez-moi pour être informé dès qu'ils sont publiés.
Si vous avez aimé cette histoire, n'hésitez pas à me contacter à l'adresse suivante : https://kaizencoder.com/contact.