Article original : Senior Software Engineer Interview Questions – Tips to Help You Prepare for a Job Interview

Par Ankit Sharma

Je viens de rejoindre Cisco Systems, en Inde, en tant qu'ingénieur logiciel senior (SDE III) le 28 juillet 2021. Je travaille avec l'équipe Cisco Customer Experience en tant que développeur UI.

Tout le parcours, de la candidature à l'acceptation de l'offre, a duré deux mois. Je souhaite partager mon expérience d'entretien qui vous aidera à vous préparer pour un rôle d'ingénieur UI de niveau senior.

Image

Ce que vous retirerez de cet article

Dans cet article, je vais parler de mon parcours, de l'obtention de la recommandation pour le poste à l'acceptation de l'offre.

Je vais parler des différentes étapes du processus d'entretien que j'ai traversées et des questions qui m'ont été posées. Les questions que je partage ici vous aideront à vous préparer pour des rôles de développement Angular.

Je vais également partager certaines des questions que vous pouvez poser à l'intervieweur et au représentant RH, ce qui vous aidera à en savoir plus sur l'entreprise et le projet.

Alors, commençons !

Comment j'ai découvert l'offre d'emploi

La première partie d'une recherche d'emploi consiste à faire sélectionner votre CV pour le rôle que vous recherchez. J'ai découvert cette opportunité grâce à un tweet partagé par Alex Okrushko.

Je suis Alex depuis deux ans. Il travaillait auparavant avec l'équipe Firebase chez Google et il fait également partie de l'équipe NgRx. Je l'admire pour sa contribution immense à la communauté Angular.

Alex travaille actuellement en tant qu'architecte UI principal chez Cisco.

Quand il a partagé qu'ils recherchaient un développeur UI, j'ai réalisé que ce serait la meilleure opportunité de travailler directement avec lui. Je lui ai envoyé un message sur Twitter et il m'a demandé de partager mon CV. Il recherchait principalement des développeurs avec de solides compétences en Angular.

Le premier tour des entretiens

Une semaine après avoir partagé mon CV avec Alex, j'ai reçu un email pour le premier tour des entretiens.

La première étape du processus d'entretien était une mission à faire à la maison via Devskiller. L'invitation de Devskiller mentionnait que j'avais sept jours pour compléter la mission. Le temps total alloué pour ce tour était de 2,5 heures. Une fois le test commencé, vous ne pouvez pas l'arrêter, donc il doit être fait en une seule session de 2,5 heures.

On m'a donné un projet Angular avec quelques bugs. Il y avait un total de 11 cas de tests unitaires dans le projet. On s'attendait à ce que je corrige tous les bugs et que je fasse passer tous les tests au vert.

J'ai commencé le test vers 22h30 (après mon dîner) et je l'ai terminé vers 00h45. Je suis plus productif la nuit, donc j'ai choisi ce moment. J'ai pu corriger tous les bugs et les 11 cas de tests étaient également au vert. J'ai dormi heureux cette nuit-là 😊

Concepts Angular couverts dans ce tour

Le premier tour des entretiens était principalement basé sur les concepts Angular suivants :

  • Liaison de données
  • Gestion des événements
  • Propriété et flux d'état
  • Formulaires et validations de formulaires
  • Observables
  • Tests unitaires avec Jasmine
  • Directives d'attribut
  • Directives structurelles - NgIf & NgFor

Alex a vérifié ma solution en fonction des corrections de bugs, de l'état des tests unitaires et du style de codage. Il a été impressionné par ma performance lors du premier tour et j'ai donc passé au deuxième tour de l'entretien.

Le deuxième tour de l'entretien

J'ai reçu un email me demandant ma disponibilité pour le deuxième tour de l'entretien. J'avais quelques problèmes de santé à ce moment-là, alors j'ai demandé à programmer une semaine plus tard et l'intervieweur a été heureux de le faire.

Le deuxième tour était également un entretien basé sur un projet via Devskiller. On m'a donné un projet Angular et il y avait quatre questions basées sur celui-ci. Toutes les questions étaient basées sur le débogage et les corrections de bugs. Le temps total alloué pour ce tour était de 1 heure.

La différence par rapport au premier tour était que cette fois, je devais faire une session de codage en direct en partageant mon écran avec Alex. On s'attendait à ce que j'explique le quoi, le pourquoi et le comment du code que j'écrivais et que je parle de la solution. Le processus de réflexion pour aborder le problème était donné plus d'importance que l'implémentation.

Ce tour était plus une session de programmation en binôme avec moi au volant. Sur les quatre questions, j'ai pu résoudre les trois premières en 30 minutes. La dernière était basée sur le concept de Content child/view child. J'ai un peu lutté avec cette question, mais un petit indice d'Alex m'a aidé à la résoudre.

J'ai commencé le test à 22h30 et je l'ai terminé vers 23h20.

J'étais autorisé à utiliser des ressources en ligne pendant l'entretien. Mais la condition était que je devais expliquer ce que je cherchais et pourquoi.

À la fin du test, j'ai pu résoudre les quatre questions avec succès. Les commentaires d'Alex mentionnaient que j'avais du mal avec quelques concepts de RxJS et que je devais travailler là-dessus. Mais il était satisfait de ma performance globale et j'ai été promu au troisième tour de l'entretien.

Concepts Angular couverts dans ce tour

Le deuxième tour de l'entretien était principalement basé sur les concepts Angular suivants :

  • ViewChild et ViewChildren
  • ContentChild et ContentChildren
  • Projection de contenu
  • Utilisation du pipe Async
  • Observables multicast
  • Relation parent-enfant des composants
  • Services

Le troisième tour de l'entretien

J'ai reçu un appel de mon manager, Vaibhav, et il m'a informé qu'ils étaient satisfaits de ma performance lors des deux premiers tours et qu'ils voulaient programmer un autre tour de discussion technique.

Il m'a demandé ma disponibilité et je lui ai répondu de programmer l'appel pour le lendemain à 10h IST. Ce tour d'entretiens est mené par l'équipe en Inde, donc il doit avoir lieu pendant les heures de travail IST.

Deux intervieweurs ont rejoint l'appel, et après l'introduction, on m'a informé que ce tour serait divisé en deux sections, une pour Angular et une autre pour JavaScript.

Ils ont commencé par les questions sur Angular. Ce tour comportait un mélange de questions théoriques ainsi que de questions basées sur des scénarios. L'entretien Angular a duré environ 45 minutes et je l'ai réussi. J'ai répondu à toutes les questions sauf une.

Après 45 minutes, ils sont passés à la partie JS. Ils ont commencé par les concepts de base de JS et j'ai répondu à ces questions facilement. Ensuite, ils sont allés plus loin dans JS et on m'a posé quelques questions basées sur des sorties. J'ai un peu lutté ici.

Puis sont venues d'autres questions basées sur des sorties et je n'ai pas pu répondre à certaines d'entre elles. L'entretien JS a également duré 45 minutes. Je n'étais pas satisfait de ma performance dans la partie JS de l'entretien. C'était assez moyen.

L'entretien était initialement prévu pour 1 heure, mais il s'est prolongé à 1,5 heure.

Concepts Angular couverts dans ce tour

Le troisième tour de l'entretien était basé sur les concepts Angular suivants :

  • Concepts RxJS tels que mergeMap & switchMap
  • Directives
  • Comment fonctionne la directive ngIf en interne ? Comment ajoute-t-elle des éléments DOM dynamiquement sur la page ?
  • Comment pouvons-nous créer une directive personnalisée (avec exemple pratique)
  • Qu'est-ce que Input et Output dans un composant ?
  • Quelques questions théoriques autour des services, du chargement paresseux des modules et de la communication entre composants

Concepts JavaScript couverts dans ce tour

Le troisième tour de l'entretien était basé sur les concepts JS suivants :

  • Quelles sont les différentes façons de créer et d'appeler des méthodes en JS ?
  • Fermetures (Closures)
  • Currying
  • Remontée d'événements (Event bubbling)
  • Questions basées sur des sorties concernant les fermetures et divers scénarios de setTimeout

Le quatrième tour de l'entretien

Deux jours après le troisième tour des entretiens, j'ai reçu un appel de Vaibhav. Il m'a informé que les intervieweurs étaient impressionnés par mes compétences en Angular, mais qu'ils n'étaient pas satisfaits de mes compétences en JS. Cependant, la performance globale était bonne, donc j'ai pu passer au quatrième et dernier tour des entretiens. Il m'a également suggéré de travailler à améliorer mes compétences en JS.

Le dernier tour des entretiens a été programmé le mardi de la semaine suivante de 12h30 à 13h30.

C'était un tour managérial et Vaibhav était l'intervieweur avec un autre développeur senior de mon équipe. Ce tour était plus axé sur mes compétences non techniques.

Il m'a demandé de parler du projet sur lequel je travaillais avec mon entreprise actuelle. On m'a également posé des questions sur la méthodologie Agile puisque je l'avais mentionnée dans mon CV. Je lui ai parlé de mon travail open-source et il m'a posé quelques questions à ce sujet.

À la fin de l'entretien, Vaibhav a partagé qu'il était satisfait de ma performance et qu'il voulait continuer avec l'offre. L'étape suivante était de mettre à jour les RH afin qu'ils puissent continuer avec les formalités de salaire et d'offre.

Questions posées lors du tour managérial de l'entretien

Le quatrième tour de l'entretien était entièrement non technique. J'ai mentionné quelques-unes des questions posées lors de ce tour, et en voici quelques autres :

  • Parlez-moi du projet actuel et de la stack technique que vous utilisez.
  • Quel est votre rôle actuel et vos responsabilités ?
  • Quelles sont les pratiques Agile que vous suivez actuellement ?
  • À quoi ressemble votre planification de sprint ?
  • Comment se déroule l'affinage des stories dans votre projet actuel ?
  • Comment pouvez-vous résoudre un conflit d'idées au sein de votre équipe ?
  • Pourquoi cherchez-vous un changement ?
  • Pourquoi Cisco ?

Négociations salariales et obtention de l'offre d'emploi

J'attendais patiemment l'appel des RH après le quatrième tour des entretiens. J'ai reçu l'appel après une semaine.

Le représentant RH m'a félicité pour avoir réussi tous les tours de l'entretien et m'a demandé mon salaire actuel et mon préavis. Elle m'a également demandé de partager ma fiche de paie et les détails de ma rémunération de mon employeur actuel.

Après deux jours, j'ai reçu un autre appel des RH et elle m'a informé du salaire qui m'était proposé. Je lui ai demandé s'il était possible de négocier une meilleure offre. Elle m'a dit que c'était le meilleur salaire possible selon mon grade d'emploi et qu'il n'était pas possible de l'augmenter davantage. Je lui ai demandé un peu de temps pour prendre la décision finale.

Je ne voulais pas perdre l'offre d'emploi, mais en même temps, je voulais aussi avoir une meilleure structure salariale que celle proposée.

J'ai discuté de la situation avec ma famille ainsi qu'avec quelques amis. J'ai également eu un appel avec Vaibhav, et quelques appels avec les RH.

J'étais très confus à ce moment-là, alors j'ai décidé d'écrire les pour et les contre de ce rôle. Voici ce que j'ai trouvé :

Pour :

  • Le projet est orienté client, donc j'aurai plus d'exposition et de responsabilités accrues
  • Travailler à l'échelle de Cisco serait un plus
  • Ce serait une grande opportunité d'apprentissage et de croissance
  • La valeur de la marque Cisco est élevée

Contre :

  • Le salaire proposé n'était pas à la hauteur de mes attentes

Finalement, les pour ont surpassé les contre et j'ai décidé d'accepter l'offre. J'ai donc informé les RH de ma décision. Mais une surprise m'attendait.

Les RH m'ont informé que, comme j'avais pris beaucoup de temps (environ 10 jours) pour décider de l'offre, ils avaient mis mon offre en attente. Je devais attendre davantage pour la confirmation finale de la part de Cisco.

J'ai paniqué et j'ai pensé que j'avais perdu l'opportunité. Mais je n'avais pas d'autre option que d'attendre. Franchement, j'avais perdu tout espoir d'obtenir l'offre à ce moment-là.

Après deux semaines, j'ai reçu un appel de Vaibhav et il m'a demandé si j'étais toujours intéressé à poursuivre avec l'offre d'emploi. Après ma confirmation, il m'a informé que les RH étaient heureux de libérer la lettre d'offre. Le lendemain, les RH m'ont appelé pour confirmer la même chose. À la fin de la journée, j'avais la lettre d'offre dans ma boîte de réception.

J'ai accepté avec joie la lettre d'offre. J'étais soulagé et ravi. Tout est bien qui finit bien.

Image Offre d'emploi acceptée

Comment poser de bonnes questions lors de votre entretien d'embauche

Chaque fois que vous êtes interviewé pour un emploi, l'intervieweur pose toujours cette question à la fin – Avez-vous des questions ?

Beaucoup de gens sont confus sur ce qu'il faut demander et ce qu'il ne faut pas demander. Certaines personnes ne posent aucune question du tout.

Eh bien, c'est une bonne opportunité d'en apprendre davantage sur le projet, l'équipe et l'entreprise. Donc, vous devriez poser autant de questions que possible à votre intervieweur.

Voici quelques suggestions de ma part.

Que demander à l'intervieweur lors d'un entretien technique

  • Demandez des détails sur le projet pour lequel vous êtes interviewé
  • Utilisez-vous des outils/bibliothèques tiers dans votre application ? Si la réponse est oui, demandez à leur sujet.
  • Comment fonctionne le cycle de révision de code ?
  • Quels sont certains des défis actuels dans la base de code ?
  • Quel est le ratio des nouvelles fonctionnalités vs les corrections de bugs assignées à un développeur ?
  • Quel framework de test utilisent-ils dans l'application pour les tests unitaires ainsi que les tests E2E ?
  • Quelle est la couverture de test pour l'application ?

Que demander à l'intervieweur lors d'un entretien managérial

  • Demandez des détails sur le projet pour lequel vous êtes interviewé
  • Quel type d'application est-ce ? Orientée client ou interne ?
  • Quels seront mes rôles et responsabilités ?
  • Comment est l'équilibre entre vie professionnelle et vie privée dans le projet ?
  • Quelles sont mes opportunités d'apprentissage et de croissance dans les 1/2/3 prochaines années ?
  • Quels sont les défis actuels avec le projet ?
  • Y a-t-il des plans pour ajouter de nouvelles fonctionnalités à l'application ?
  • Demandez la structure actuelle de l'équipe et où vous vous intégrerez
  • À quoi ressemble la culture d'équipe dans la situation actuelle de pandémie où nous sommes à 100 % en télétravail ?
  • Quel est l'horaire de travail pour ce projet ? Est-il flexible ou fixe ? Y a-t-il des allocations de shift prévues ? C'est une question très importante et souvent négligée par les candidats.
  • Une extension à la question précédente – Mon travail nécessite-t-il un type de support le week-end ? Si la réponse est oui, demandez les horaires, la fréquence par mois et la politique de remboursement à ce sujet.

Que demander aux RH avant d'accepter l'offre ou de rejoindre l'entreprise

  • Politiques de congés
  • Politiques d'assurance santé
  • Politiques de télétravail
  • Quel est le calendrier du cycle d'évaluation annuel ?
  • Serai-je éligible pour l'évaluation lors du prochain cycle d'évaluation ?
  • Dois-je signer un quelconque contrat de travail ?
  • Ce travail nécessite-t-il que je déménage dans une autre ville/état ?
  • Dois-je servir une période de probation lors de mon entrée dans l'entreprise ? Si la réponse est oui, demandez la durée et son effet sur votre emploi. Chaque entreprise a des règles différentes concernant la période de probation, alors posez autant de questions que possible sur ce sujet
  • Quels sont les avantages liés au Covid que l'entreprise propose, par exemple la vaccination, le soutien médical, etc. ?

Voulez-vous rejoindre le meilleur lieu de travail au monde ?

Cisco Systems a été classé numéro un dans la liste de Fortune des 100 meilleures entreprises pour lesquelles travailler en 2021 et des 100 meilleurs grands lieux de travail pour les milléniaux. Dois-je en dire plus sur la culture de l'entreprise ?

Image

Cisco vous offre de nombreuses opportunités d'apprentissage et de croissance. Vous aurez l'occasion de travailler sur des applications utilisées à l'échelle mondiale. Vous serez toujours motivé à grandir et à vous explorer sur le plan personnel et professionnel.

Alors, qu'attendez-vous ? Allez sur le portail des carrières de Cisco et postulez pour le rôle que vous souhaitez.

J'espère que mon expérience d'entretien vous sera utile. Bonne chance avec votre entretien d'embauche.

Si vous aimez l'article, partagez-le avec vos amis. Vous pouvez également me contacter sur Twitter et LinkedIn. Mes messages directs sont toujours ouverts.