Pour en revenir à l’entretien, le représentant de Google lui a dit que des capacités en management ainsi qu’en développement étaient nécessaires. Pour ce dernier critère, les connaissances devaient être actualisées. Cependant, malgré l’expérience de Pierre, il n’a pas pu donner les « bonnes réponses ». Voici la série de questions - réponses à laquelle il s’est plié en conversation téléphonique ainsi que les petites anecdotes du candidat :
Quelle est la fonction opposée à malloc() dans C ?
lui : free()
Google : bonne réponse
pensée : « j’imagine qu’en ces rares occasions vous êtes supposé être fier de vos 35 années d’expérience en programmation dans la 40ème année de ce bon vieux C »
Quelle fonction Unix permet à un socket de recevoir une connexion ?
lui : listen()
Google : bonne réponse
pensée : « est-ce que je suis donc qualifié comme étant un gourou du réseau ? »
Combien d’octets sont nécessaires pour sauvegarder une adresse MAC ?
lui : six
Google : bonne réponse
pensée : « je suppose que je viens de gagner le badge [Ethernet] »
Triez par temps d’exécution : lecture du registre CPU, recherche sur disque, changement de contexte, lecture de la mémoire système
lui : lecture du registre du CPU, lecture de la mémoire système, changement de contexte, recherche sur disque
Google : bonne réponse
pensée : « typiquement des cours d’informatique de première année universitaire »
Qu’est ce qu’un inode Linux ?
lui : un identificateur unique de fichier pour un système de gestion de fichiers donné
Google : incorrect, il s’agit d’une métadonnée
lui : l’inode est un index identifiant de façon unique un fichier sur un système de gestion de fichiers donné et vous pouvez chercher dans cet index pour récupérer des attributs de fichiers comme la taille, la date de création, le nom du propriétaire et les permissions, vous pouvez même ajouter vos propres attributs
Google : incorrect, pas “attribut” mais “métadonnée”
pensée : « “métadonnée” est plus informatif que “attribut”, vraiment ? »
Quel fonction Linux prend un chemin et retourne un inode ?
lui : j’ai écrit un LIBC personnalisé pour G-WAN, notre serveur d’applications, mais je n’arrive pas à me souvenir d’un syscall retournant un inode
Google : stat()
lui : stat(), fstat(), lstat(), et fstatat() retournent tous des erreurs de code, pas un inode ; ils remplissent une structure stat qui va contenir les attributs de fichier dont nous avons parlé précédemment, pas seulement un index inode de fichier
Google : ce n’est pas la réponse : l’inode contient toutes les métadonnées
pensée : « se pourrait-il que Google soit secrètement à l’origine de la licence du bot Microsoft néfaste AI ? »
Pierre Gauthier
quel est le nom du signal KILL ?
lui : SIGKILL avec #define fixé à 9
Google : non, c’est “TERMINATE” .
lui : SIGTERM (15) est différent de KILL signal (9)
Google : ce n’est pas la réponse que j’ai sur ma feuille de papier
pensée : « je suppose que c’est ce qui s’est passé lorsque AI a découvert les drogues récréatives »
Pourquoi est-ce que Quicksort constitue la meilleure méthode de tri ?
lui : ce n’est pas toujours le cas, il arrive même que cette méthode ne convienne pas
Google : Quicksort a le meilleur big-O
lui : “big-O” ne prend pas en considération les latences du stockage de données, la topologie, le volume, la quantité de mémoire disponible et encore moins le coût en calcul de chaque instruction impliquée dans une implémentation donnée. À la place, il compte simplement le nombre d'opérations algorithmiques ! Big-O peut s’avérer être une indication précieuse lors de la conception des algorithmes, mais la meilleure solution performante et mise à l'échelle dépend des contraintes particulières de tout problème et environnement spécifique.
Google : faux, vous deviez me parler du score Big-O de Quicksort
pensée : « quand est-ce que l’OMS va reconnaître les modèles du scandale du tabac dans les dommages causés par le milieu universitaire sur la santé mentale publique? Le noyau Linux (sur lequel Google se base) a opté pour Heapsort plutôt que Quicksort ... pour son utilisation de la mémoire plus faible et le temps d'exécution plus prévisible »
Quelle est la méthode la plus efficace pour compter les bits sets dans un tableau de 10 000 valeurs 16 bits ?
lui : vous passez les bits à droite sur tous les mots de 64 bits, la méthode Kernighan
Google : non
lui : il y a des méthodes plus rapides pour traiter les mots de 64-bits avec des masques mais je ne peux pas les expliquer au téléphone étant donné que pour le faire je vais devoir écrire un code
Google : la réponse correcte est d'utiliser une table de consultation, puis additionner les résultats.
lui : sur quel type de CPU ? Pourquoi ne pas me laisser comparer mon code au vôtre sur un benchmark ?
Google : ce n’est pas l’objectif de ce test
lui : quel est l’objectif de ce test ?
Google : je dois vérifier que vous obtenez les bonnes réponses
pensée : « combien de temps cela va-t-il durer ? Une table de consultation de 8 bits peut traiter les octets les uns après les autres, tandis qu’une méthode basée sur un masque 64 bits traite des mots de 8 octets à la fois (en plus de cela, des instructions CPU modernes vous permettent même de traiter des mots de 128 bits avec un gain de vitesse 10 fois supérieur si la portabilité ne pose pas de problème). Étant donné qu’une table de consultation 64-bit est hors de la portée des ordinateurs d'aujourd'hui, il n'y a aucun doute sur ce qui est plus rapide ».
Quels types de paquets sont échangés pour établir une connexion TCP ?
lui : en hexadécimal : 0x02, 0x12, 0x10 - littéralement "synchroniser" et "reconnaître".
Google : faux ! Il s’agit de SYN, SYN-ACK et ACK. Si Google connaît une panne, vous devez savoir comment diagnostiquer le problème. Nous nous arrêterons ici parce qu'il est évident que vous ne possédez pas les compétences nécessaires pour écrire ou examiner des applications réseau. Vous devriez apprendre les appels de fonction Linux, comment la pile TCP / IP fonctionne, et ce que Big-O signifie pour finalement être qualifié si vous veniez à obtenir un entretien plus tard. Bonne chance et au revoir.
pensée : « lorsque vous devez lire un dump de paquet hexadécimal pour trouver ce qui se passe, ces trois lettres mnémoniques ne vous seront d’aucune utilité dans votre processus de résolution d’un service de réseau mort. Peut-être que Google aurait déclaré que la pratique n’est pas nécessaire pour le travail ».
Source : blog G-WAN
Et vous ?
Pouvez-vous partager vos expériences de tests de recrutement en tant que développeur ?