Comment interviewer Google: quoi être, quoi ne pas passer

Ces dernières semaines, une vague d'articles sur le Habril sur la façon dont les entretiens sont menés est devenue plus fréquente.

Google est constamment à la recherche d'ingénieurs. En tant que SRE, je peux dire avec certitude que vous avez besoin de nous dans nos rangs . Des biscuits dans les kitchenettes et du café dans les machines à café vous attendent. Tout ce que vous devez faire, c'est obtenir une entrevue. C'est difficile, mais réel - une fois que j'ai déjà décrit mon histoire en tant que demandeur d'emploi, et maintenant, entre autres, je mène également des entretiens. Alors maintenant, je vais dire comment nous menons des entretiens avec des ingénieurs.

Non, je ne suis pas devenu recruteur. Le processus d'entrevue implique d'abord une conversation avec un recruteur. Il s'agit d'une conversation générale «quoi-où-pourquoi» (c'est-à-dire une description du processus pour votre cas spécifique) et le même filtrage par tout le monde du questionnaire avec plusieurs options de réponse. Le dépistage à l'époque me paraissait très basique, je soupçonne que vous avez déjà répondu cent fois à de telles questions. Ensuite, les entretiens seront menés par des ingénieurs - vos futurs collègues (proches ou lointains, c'est comme ça que ça se passe, notre planète est très petite).

(Important: je décris le processus comme je le sais, dans le poste d'ingénieur (ingénieur logiciel (SWE) et ingénieur de fiabilité de site (SRE).) Utilisez les informations fournies ici uniquement pour représenter approximativement à quoi vous attendre - mais pas une offre publique! Les informations exactes sur la façon dont le processus se déroulera pour vous personnellement seront exclusivement et exclusivement des informations provenant de votre recruteur. Les informations peuvent également déjà être obsolètes. - regarder Voir la section Comment nous embauchons pour des informations à jour au moment de la lecture de cet article).

Tout d'abord, il y aura quelques interviews par le biais de Hangouts / Meet . Il s'agit d'une entrevue à part entière, comme je l'ai dit ci-dessus - les ingénieurs vont interviewer, et on suppose que le candidat `` réfléchira à haute voix '' dans le processus + rédigera une douzaine ou deux lignes dans n'importe quel langage de programmation (oui, malheureusement, jusqu'à présent dans Google).

Mon entretien est conçu pour environ 45 minutes ou plus, mais j'essaie généralement de tenir exactement 45 minutes. À partir de ce moment, cinq minutes pour une brève introduction et des informations générales, 30 à 35 minutes pour les questions et la discussion, puis cinq minutes pour les questions du candidat (le cas échéant).

En général, l’ingénieur intervieweur a pour objectif de collecter des informations sur plusieurs axes des compétences du candidat (telles que les compétences en codage, la connaissance des algorithmes et des structures de données, etc.). Mais la chose la plus importante dans l'entretien est de savoir comment pense une personne. Autrement dit, il est toujours important de trouver la frontière quand une personne ne connaît pas la solution. Chaque intervieweur a sa propre technique (en particulier pour les interviews téléphoniques): quelqu'un garde une douzaine de questions en réserve, des questions d'échauffement (dont la solution est littéralement d'écrire un cycle de trois lignes) aux questions difficiles, même à expliquer. Quelqu'un a 2-3 questions «favorites», qui peuvent être tournées par une douzaine de côtés et comment simplifier et compliquer, selon ce que l'interlocuteur démontre. Je suis sûr qu'il y a encore des options, mais je ne les connais pas.

J'ai essayé les deux techniques, et je préfère cette dernière: en fonction du CV et de l'estime de soi du candidat, j'utilise un formulaire de question plus approprié. La question est toujours ouverte (après tout, à quand remonte la dernière fois que vous avez vu l'énoncé exact du problème dans notre industrie?) - et en fonction de ce que le candidat demande, je simplifie ou complique la question afin qu'à la fin des 10 premières minutes, le candidat a déjà écrit une solution triviale. C'est rarement difficile, après tout, la solution est triviale.

Les questions «pourquoi êtes-vous sûr que cela fonctionne?» Sont également triviales. (si le candidat n'a pas décrit immédiatement les limites d'applicabilité ou de tests), et quelle est la complexité de la solution. Il donne simplement des informations que le candidat sait coder et comprend ce qu'il a écrit. Mais le codage ne suffit pas - vous devez être capable de penser, donc les questions qui suivent sont: comment se débarrasser des restrictions? Comment faire mieux? Soit (ce qui se passe lorsque le candidat est très bon ou connaît la solution par expérience) comment faire fonctionner le code sous ces restrictions ou d'autres.

Cela donne un paquet de signaux tout de suite - mais dans quelle mesure le candidat sait-il s'adapter aux changements dans la tâche? Et combien est prêt à penser à des solutions hautement alternatives? La discussion elle-même est également intéressante - la question est toujours posée aussi ouvertement que possible, il existe donc des dizaines de façons de la comprendre. L'environnement commercial est-il en train d'être clarifié, ou simplement des limites techniques? Les limitations techniques sont-elles prises en compte? Par exemple, à plusieurs reprises, j'ai dit «1e12 objets sont attendus», et le candidat n'évalue pas combien cela représente. Et c'est presque un téraoctet, si octet par objet. Ou ~ 116,5 gigaoctets si par bit. Ou 4,3 téraoctets si int32. Eh bien, vous obtenez le point. Non, se rappeler que ce n'est pas nécessaire - pas à l'examen, personne n'a emporté la calculatrice. Le téléphone est, oui, même dans la recherche. Et au fait, vous pouvez demander.

Et c'est ainsi que je vais soulever la difficulté ou simplement modifier la tâche pour tout le temps d'entrevue disponible. Oui, il est possible que pour l'interviewé, ce soit le principal pain de travail, et il mange de telles tâches pour le petit déjeuner, le déjeuner et le dîner. Eh bien, dans ce cas , ma carte de voyage a une question complètement différente. Par exemple, au lieu de graphiques - pour une programmation dynamique. Ou sur des listes. Ou en général, la question est de savoir où la solution optimale nécessitera un tas. L'essentiel est un environnement différent, une tâche différente.

La chose la plus importante ici est de donner en même temps une tâche très simple afin que le candidat puisse résoudre et montrer des compétences de base, et élever la difficulté à un niveau où le candidat ne connaît pas la réponse afin qu'il puisse montrer comment il pense. S'il peut en même temps trouver une solution à un problème plus complexe - c'est bien, mais si le candidat a tout résolu, alors c'est une crevaison de la personne interrogée, qui n'a pas préparé une question d'une complexité encore plus grande.

Vous voulez des détails? Voici l'une des questions qui ne vous seront PAS posées simplement parce qu'il est déjà considéré comme «divulgué» - c'est-à-dire qu'il est probable que le candidat ne pense pas à lui, mais souvenez-vous. Comme je l'ai écrit ci-dessus, il est important de savoir comment le candidat pense, et non comment il se souvient ... Donc, la question est: implémenter le cache LRU .

En général, la tâche est belle, car elle permet de nombreuses formes de la tâche et de nombreuses formes d'interprétation. Par exemple, vous pouvez poser une question directement dans le front «implémenter le cache LRU». Il peut être formulé comme «imaginez que notre service de traitement d'une demande vérifie l'existence d'un objet externe. Comment puis-je accélérer le traitement? " - s'attendant à une phrase très évidente «cachons simplement le résultat». Que peut-on demander «mais comment?». Et «et si nous voulons contrôler la mémoire maximale consommée par ce cache?». La question reste ouverte - et quelle API doit fournir ce cache. Pour plus de simplicité, vous pouvez toujours le réduire à set (clé, valeur) + get (clé); mais vous pouvez ajouter TTL. C'est possible avec get (key, fetch_func). En général, l'évaluation de l'API proposée peut également donner un signal supplémentaire sur l'expérience et le style de pensée du candidat.

La solution triviale sur hashmap donnera O (1) sur get () + O (N) sur set () (c'est le cas, non?). Si tous les éléments sont en plus liés (en organisant une double liaison), il sera possible d'obtenir O (1) pour les deux opérations. Si vous avez besoin d'ajouter TTL ... je pense que l'idée est claire. Si vous le souhaitez, discutons dans les commentaires: imaginez qu'on vous ait posé cette question, comment allez-vous penser? quelle solution proposez-vous? ..

Et dans quel langage de programmation? Oui, qu'aimez-vous, dans lequel le plus C ++? Magnifique. Allez? Super Python Vous êtes toujours les bienvenus. Perl? Maintenant rare, mais oui aussi. Et Java oui. Et javascript (bien que ce soit plus compliqué compte tenu de la mémoire de la solution).

Ainsi, environ 40 minutes après le début de l'entretien, le vol de pensée du candidat sera interrompu, mais cela ne signifie pas que tout va mal. Cela signifie simplement que le temps est écoulé.
Après l'entretien lui-même, l'enquêteur rédige un rapport, souvent avec une transcription détaillée de ce qui s'est passé lors de l'entretien. Ce rapport sera utilisé pour la prise de décision. Personnellement, je réserve environ une heure immédiatement après l'entretien afin d'enregistrer les minutes complètes de la conversation avec une mémoire fraîche, certains écrivent simplement sur papier une transcription presque complète pendant l'entretien.

Après un entretien téléphonique, sur la base des rapports de toutes les personnes interrogées, une décision est prise sur l'invitation à se confronter. Ce sera une journée complète d'entretiens dans l'un des bureaux: plusieurs interviews le matin, puis le déjeuner (et faire connaissance avec la salle à manger du bureau :), puis quelques autres. Lors d'un entretien au SRE, il s'agira de différents entretiens, dont le recruteur vous indiquera la liste, y compris le codage et NALSD : Non-Abstract Large-Scale System Design. La clé est non abstraite (c'est-à-dire pas les mots généraux «nous avons besoin d'une base de données») et «à grande échelle» (c'est-à-dire, si une base de données est nécessaire, alors sous pétaoctets, par exemple). Vous pouvez en savoir plus ici et bien d'autres où trouver des documents dans la recherche. J'ai recruté plusieurs liens pour la formation. Il s'agit d'un point très important dans l'entretien - tout simplement parce que lorsque vous travaillez pour une entreprise Google, vous devez penser et considérer les systèmes de telles perspectives.

En général, les entretiens en personne ne sont pas très différents des entretiens téléphoniques - problèmes similaires et processus similaire. En même temps, nous essayons d'organiser les questions afin de ne pas poser la même question deux fois.

Que puis-je ajouter sur le processus d'entrevue? Amuse toi bien! Non, sérieusement, détendez-vous et amusez-vous! Un entretien téléphonique? Juste une conversation avec un interlocuteur intéressant. Nouvelles informations et nouvelle expérience garanties. Entrevues en personne? Plus amusant! Vous êtes en voyage d'affaires aux frais du futur employeur :) Promenez-vous dans la ville, rencontrez des amis. Une journée complète de divertissement et de conversations intéressantes est également garantie.

Et après cette journée de plaisir, tous ceux qui vous ont interviewé rédigent également un rapport, avec le protocole complet de la conversation. Toutes les données d'entrevue sont rassemblées et examinées par un comité indépendant . C'est important: aucun de ceux qui vous connaissent personnellement ne participe à la décision. Aucune des personnes interrogées n'est également directement impliquée. Tout cela vise à éliminer les biais dans la décision. L'évaluation est uniquement pour la conformité avec la norme requise de la norme d'embauche. Si vous n'avez pas de chance et que vous échouez, vous pouvez toujours réessayer dans un an. Pour cette année, vous pouvez systématiser vos connaissances et combler les lacunes découvertes.

Vous avez des questions? Demandez dans les commentaires.
Y a-t-il un intérêt à essayer l'entretien avant l'entretien? Il existe des services pour une simulation d'entrevue (par exemple, une et deux fois , mais ils ne proviennent pas de l'entreprise elle-même, il n'y a donc aucune garantie); parfois, Google mène des campagnes similaires.

Et oui, n'hésitez pas à vous appliquer . Si vous croyez à la magie du «dépôt par l'intermédiaire d'un employé» - écrivez-moi, je soumettrai votre candidature. Welkam!

Source: https://habr.com/ru/post/fr425279/


All Articles