Article original : The Best Book for Technical Coding Interview Prep

Par Zhia Chong

Image Est-ce le meilleur livre pour les entretiens techniques ?

Les entretiens techniques de codage sont notoirement difficiles — presque comme un quiz pour ceux qui ne sont pas préparés. Il peut parfois être une tâche ardue de naviguer parmi toutes les ressources de préparation technique de codage disponibles en ligne, et on pourrait se demander : existe-t-il un seul livre/ressource qui prépare le mieux aux entretiens techniques de codage ?

Best est bien sûr relatif dans ce cas. Si vous cherchez un livre qui vous apprendra à résoudre n'importe quelle question de codage, vous guidera sur la façon de concevoir quelque chose comme Instagram qui s'adapte à un milliard d'utilisateurs, et vous préparera un sandwich pendant que vous y êtes, alors ce livre n'est définitivement pas fait pour vous.

Mais pour polir vos compétences techniques et vous assurer d'être bien préparé à affronter les défis de programmation lors d'un entretien, ce livre s'en approche beaucoup.

Dans la critique de livre d'aujourd'hui, je passe en revue en détail les bons et les mauvais côtés de l'un des livres les plus vendus sur Amazon pour les entretiens techniques de codage : Elements of Programming Interviews (a.k.a EPI, et il sera désigné comme tel dans le reste de cet article).

Image Elements of Programming Interviews

De quoi parle ce livre ?

EPI est un livre qui se concentre sur la préparation aux questions d'entretien technique en ingénierie logicielle, couramment posées dans les entreprises technologiques. Si vous cherchez un poste d'ingénieur logiciel, ce livre aura quelque chose pour vous.

EPI a été écrit par 3 personnes qui ont travaillé dans certaines des entreprises technologiques les plus connues au monde, comme Facebook, Google, Uber et Microsoft. Les auteurs ont des antécédents techniques très solides, et cela se reflète dans l'accent technique du contenu du livre.

Le livre lui-même est très technique et plonge en profondeur dans les fondamentaux de l'informatique. Les types de questions techniques de codage varient largement, de la manipulation de chaînes de caractères aux traversées de graphes. Le livre offre également des conseils et astuces concrets pour résoudre des types spécifiques de problèmes de codage, et inclut une feuille de triche pour aider à réussir les questions techniques.

Le Bon

En bref : EPI est un livre très technique, bien adapté à toute personne cherchant à se préparer aux questions techniques de codage qui tournent autour des structures de données et des algorithmes.

Les choses que j'ai particulièrement appréciées :

  • contient de nombreuses questions (300+) avec des réponses détaillées, comparé à un autre livre populaire (Cracking The Coding Interview) qui n'en a que 170+
  • existe en 3 versions différentes : Java, Python et C++. Adapté aux personnes qui veulent utiliser le langage de leur choix
  • dispose d'une excellente feuille de triche (Chapitre 4) qui résume toutes les techniques et structures de données dont vous aurez besoin
  • couvre en détail chaque structure de données dont vous avez besoin, les algorithmes que vous devriez connaître, et les techniques que vous devriez maîtriser dans un format simple et compréhensible
  • couvre des sujets techniques pertinents que vous pourriez rencontrer lors d'un entretien de codage, comme ce qu'est TCP/IP, comment fonctionne Internet, et comment capturer les relations entre différentes entités dans la conception de schéma

Ce sont quelques-uns des points de haut niveau que j'ai appréciés dans le livre. Ce que j'aime vraiment, c'est que les réponses sont très, très bien construites.

Les réponses adoptent souvent une approche brute force/simpliste pour résoudre les problèmes. Les auteurs fournissent ensuite des exemples concrets de la manière dont vous pouvez améliorer l'approche brute force. À chaque itération, les auteurs soulignent les limitations et comment vous pouvez les résoudre avec des optimisations incrémentielles.

Par exemple, EPI explique comment détecter un cycle dans une liste chaînée. La première approche : utiliser une table de hachage pour stocker chaque nœud que vous traversez, puis vérifier contre la table de hachage pour voir si vous l'avez déjà vu. Cela fait le travail, bien que cela prenne un espace supplémentaire (appelé complexité spatiale O(N) et complexité temporelle O(N)).

Le livre souligne ensuite que l'espace supplémentaire n'est pas nécessaire et suggère que la détection de cycles dans une liste chaînée peut être faite sans espace supplémentaire en manipulant les pointeurs à la place.

Il adopte cette même approche pour expliquer presque toutes les questions, afin que tout le monde puisse comprendre comment passer d'une solution approximative à une solution optimisée.

Pour quelqu'un qui est rouillé et cherche à commencer à se préparer aux entretiens, EPI fait un excellent travail — chaque chapitre commence par un résumé de la structure de données ou de l'algorithme que vous allez apprendre, pourquoi la structure de données est spéciale, quels sont les points forts/faibles de ladite structure de données et ce à quoi vous devez faire attention.

En bref, EPI est le cahier que j'aurais aimé avoir lorsque je me préparais pour les entretiens techniques. C'est le livre que je donnerais à un ami qui cherche à se préparer pour les entretiens techniques — en plus de mon cours à succès Acing The Tech Interview, qui prépare tout candidat à l'ensemble de l'expérience d'entretien, de la préparation du CV aux questions comportementales en passant par la résolution créative de problèmes de codage. Les classes se remplissent rapidement, alors réservez votre place ici aujourd'hui.

Le Mauvais

EPI a aussi ses inconvénients. Étant un livre très technique, cela signifie que le livre se concentre sur les questions de codage.

Cela signifie, sans le vouloir, que le livre est en deçà en termes d'autres aspects du processus d'entretien technique qui sont, pourrait-on dire, tout aussi importants — négociation d'offre, comment écrire un CV persuasif, que faire lorsque vous recevez une offre, comment gérer les questions comportementales, etc.

De plus, le livre entre dans les détails des structures de données et des algorithmes, mais ne fournit qu'un aperçu de haut niveau, au point d'être confus en raison du manque de contexte, de divers autres concepts importants comme SQL, NoSQL, comment concevoir un schéma approprié pour une application simple et plus encore.

Le livre couvre en quelque sorte la conception SQL en expliquant comment structurer les tables pour capturer les relations entre entités, mais il n'explique pas davantage les JOINs ou comment interroger correctement les tables. Je pense que comprendre le quoi (tables SQL) est tout aussi important que le comment (requêtes).

EPI a également un chapitre sur les conceptions de systèmes, mais le chapitre ne couvre pas les conceptions distribuées. J'aurais préféré que le livre décrivait plus en détail ce que sont les systèmes distribués ou où trouver plus d'informations à leur sujet.

Ce livre est-il fait pour moi ?

Si vous avez ~40 $ à dépenser et une grande envie d'apprendre, je dirais oui.

Le livre se vend en moyenne 36 $ (il existe 3 versions). Ce livre est très bien noté sur Amazon.com, avec une moyenne de 4,53 étoiles sur les 3 versions. Les statistiques sont les suivantes :

Sur Amazon.com :

Image Versions de EPI sur Amazon.com

3 versions (au 12 mars) :

  • Python : 169 évaluations, moyenne de 4,3
  • Java : 203 évaluations, moyenne de 4,6
  • C++ : 436 évaluations, moyenne de 4,7

Au total, il y avait 808 avis.

Quelques-uns des avis :

« ... le meilleur algorithme/structure de données que j'ai jamais pris »

« le code est de haute qualité, utilisant des noms de variables significatifs »

« ce livre est un incontournable »

Maintenant, devriez-vous l'acheter ?

Je pense que EPI est l'une des meilleures ressources pour se préparer aux entretiens techniques de codage, sans exception. Peu importe votre niveau d'expérience, il y a quelque chose pour vous. J'apprécie particulièrement de lire le livre pour ses explications claires et concises, et j'utilise ce livre comme référence dans mon cours de programmation.

Si vous voulez toutes les structures de données, les algorithmes que vous devez connaître dans un seul livre facile à lire, alors EPI est le livre qu'il vous faut.

Image Designing Data Intensive Applications

Pour les conceptions de systèmes distribués, je recommande de chercher ailleurs. Un bon point de départ est Designing Data Intensive Applications.

Je l'aime pour sa profondeur et ses perspectives, et je le recommande à de nombreux étudiants qui suivent mes cours.

Ressources que je recommande

Designing Data Intensive Applications — excellente ressource pour apprendre les systèmes distribués et le fonctionnement des systèmes à grande échelle.

Acing The Technical Interview — mon cours de coaching personnel à succès sur la façon de réussir les entretiens techniques. Nous couvrons la révision de CV, l'entretien technique de codage, les questions comportementales et plus encore.

Acing The Distributed Systems Design Interview — mon cours de coaching personnel sur la conception de systèmes distribués à grande échelle. Apprenez à concevoir des fonctionnalités comme les Stories Instagram, Groupon, les sites de streaming de films comme Netflix à grande échelle.