Comment s’est déroulée votre expérience lors de l’entretien de stage Microsoft ?


J'ai participé à un entraînement hors campus de Microsoft pour l'embauche de stagiaires en 2019 et voici mon expérience d'entrevue.

Ronde - 1 : Ronde de codage en ligne sur le site Web de Mettl


Microsoft a mené un test en ligne nommé TechSetGo sur le site Web de Mettl.

3 questions de codage doivent être résolues en 90 minutes


Chaque problème est un problème fonctionnel.

  1. Donné un tableau trouver l'élément Majoritaire dans le tableau (un élément dont la fréquence dans ce tableau est strictement supérieure à la moitié de la taille du tableau.) et s'il n'y a pas de majorité retourner -1.
  2. Trouver la somme des K meilleurs scores dans une compétition.
  3. Il existe N couleurs en lesquelles un caméléon peut se transformer. Il existe une Matrice de taille N x N où pour chaque élément i x j de la matrice si l'élément est égal à 1 alors le Caméléon peut changer de la couleur i à la couleur j sinon le Caméléon ne peut pas changer de la couleur i à la couleur j. Actuellement, le Caméléon est en couleur X et il souhaite changer en couleur Y. Trouvez le nombre minimum de couleurs qu'il doit changer pour être en couleur Y.

Différentes personnes ont obtenu différents ensembles de problèmes mais ils étaient faciles à résoudre.

J'ai pu résoudre les 3 problèmes et j'ai été invité à un entretien à Hyderabad.

Round - 2 : Group Fly Round

Ce Round est un round stylo-papier où vous êtes censé écrire le code sur papier pour le problème donné.

2 questions de codage sont censées être résolues en 45 minutes.

  1. Donné une matrice d'entiers non négatifs. Trouvez un chemin avec une somme maximale, du haut à gauche (0, 0) au bas à droite (N - 1, M - 1) et à tout point donné de la matrice, vous pourriez soit vous déplacer vers la droite(x, y + 1) ou vers le bas (x + 1, y).
  2. Donné un arbre binaire trouvez l'ancêtre commun le plus bas entre 2 nœuds N1, N2.

Quelques employés de Microsoft étaient présents pour vous aider si vous avez des doutes concernant les questions.

Ronde - 3 : Entretien technique

À partir de cette ronde, chaque ronde sera une ronde F2F. L'interviewer m'a demandé mon CV et m'a demandé de me présenter.

L'interviewer était vraiment amical et se concentrait sur la façon dont j'aborde le problème et comment j'ai été capable de convertir mes pensées en code.

Pourquoi êtes-vous intéressé par la CS alors que vous venez de l'ECE ?

Puis il m'a posé quelques questions sur l'OS.

Maintenant il s'est plongé dans les questions de codage.

  1. Donné une grille de caractères 2D et un mot. Retourner vrai si le mot est présent dans la grille sinon retourner faux. Un mot peut être apparié dans les 8 directions. J'ai d'abord expliqué mon approche backtracking et tout en écrivant le code, j'ai expliqué quelques sections de mon code pour le garder dans la boucle. Après que j'ai écrit la partie autour de 3 / 4 du code, il a dit que c'est ok et maintenant nous pouvons passer au problème suivant.
  2. Donné 2 arbres de recherche binaire les fusionner en un seul tableau trié unifié. Je lui ai expliqué ma démarche. Je vais créer 2 tableaux qui contiennent la traversée en ordre des 2 arbres (la traversée en ordre de l'arbre de recherche binaire nous donne la version triée de cet arbre) et créer un 3e tableau où je vais fusionner ces 2 tableaux comme l'opération de fusion dans le tri par fusion. Après avoir expliqué le problème, il m'a demandé de le coder et après avoir examiné mon code, l'interviewer m'a demandé si je pouvais résoudre le problème en utilisant seulement 2 tableaux au lieu de 3. Après quelques conseils de l'interviewer, j'ai pu le résoudre. L'interviewer m'a demandé de générer/créer quelques cas de test pour ce problème.
  3. Donné un arbre binaire écrire un code pour la traversée itérative de préordre. J'ai pu le coder en utilisant des piles.

Round - 4 : Entretien technique

L'interviewer s'est d'abord présenté à moi. Il est ingénieur logiciel senior chez Microsoft et travaille chez Microsoft depuis 7 ans. Après avoir parcouru mon CV, il m'a interrogé sur l'un de mes projets. J'ai été en mesure de donner une bonne explication de mon projet.

L'interviewer m'a posé quelques questions sur les concepts OOPS et Maintenant, il m'a donné une situation où il a enregistré une pomme comment une pomme à l'état frais se désintègre sur une période de 5 - 6 jours et il voulait montrer cela un certain public puisque le public ne sera pas assis regarder pendant 5 - 6 jours comment vais-je le compresser / raccourcir à une vidéo de 2 - 3 minutes. Je lui ai dit que je vais échantillonner la vidéo pendant 1 seconde toutes les 1 heure de sorte que la vidéo entière sera raccourcie à 2 - 3 minutes et les changements significatifs dans une pomme sont enregistrés.

Supposons que la vidéo initiale est de 5 jours de long 5 x 24 = 120 heures. Je vais prendre des instantanés de la vidéo de 1 seconde après chaque heure à 0h, 1h, 2h, 3h, ....., 120h. Donc globalement il y aura 121 secondes de vidéo ie : 2minutes et 1 seconde.

Il m'a demandé quels sont les changements significatifs dans la pomme pendant son processus de décomposition.

Je lui ai dit qu'il y aura un changement de couleur et un changement de forme de la pomme pendant sa décomposition. Il était satisfait de ma réponse et est ensuite passé à une question de codage.

On ne m'a posé qu'une seule question de codage dans ce tour.

Question : Given 2 numbers in LinkedList form find the sum of two numbers and return the head of the LinkedList which contains the sum of these two numbers.

  1. 1->2->3 + 4->5->6 = 5->7->9 

I told him that we can do it either recursively or iteratively and explained him both of the approaches and he asked me to code in any one of the approaches. I choose the iterative approach

In this approach, I will create a new LinkedList called result and then I will reverse the two input Linkedlists and then move through each and every node and add both the node’s contents and the carry of the addition will be used for the next node’s addition. and finally, reverse the result LinkedList.

Here you need to check that one number might have more digits than the other

  1. 6->7->8 + 2->3 = 7->0->1  

You also have to check out for carry-out generated.

  1. 9->9->9 + 1 = 1->0->0->0  

I wrote the code for it and there I was using 3 while loops

  1. while (number1 != NULL and number2 != NULL) { 
  2. // Some operations 
  3.  
  4. while (number1 != NULL) { 
  5. // if number1 has more digits than number2 then residual operations will take place here. 
  6.  
  7. while (number2 != NULL) { 
  8. // if number2 has more digits than number1 then residual operations will take place here. 

He asked if I could do it using only one loop and I made some tweaks to the code to get the result.

  1. while (number1 != NULL or number2 != NULL) { 
  2. if (number1 == NULL and number2 == NULL) 
  3. break; 
  4. else if (number1 != NULL and number2 != NULL) { 
  5. // some code goes here. 
  6. else if (number1 != NULL) { 
  7. // some code goes here. 
  8. else { 
  9. // some code goes here. 

He was satisfied with it and asked if I can do it without calling the reverse method for the result LinkedList. Je n'ai pas eu l'idée au départ mais il m'a donné un indice comme "Connaissez-vous une structure de données qui suit le principe LIFO." puis j'ai écrit le code pour le problème en utilisant stack et il était satisfait de mon code.

Rond - 5 : Technique + RH

J'ai été interviewé par un Manager (je ne me souviens pas du nom de l'équipe). Il m'a dit qu'il travaille avec Microsoft depuis 18 ans.

D'abord, il a parcouru mon CV et était intéressé de savoir pourquoi je m'intéressais à la CS alors que je viens de l'ECE. J'ai gagné quelques concours de codage locaux et il m'a demandé à leur sujet comment j'ai appris les structures de données et les algorithmes et comment je me suis exercé et quels étaient les obstacles que j'ai rencontrés pendant l'apprentissage.

Il m'a posé une seule question de codage. Étant donné un tableau trouver le plus long sous tableau de somme maximale s'il y a plusieurs réponses aller avec le sous tableau avec le plus petit indice de départ. Je lui ai parlé de l'algorithme de Kadane et j'ai écrit le code pour cela. Il a parcouru mon code et m'a dit qu'il était impressionné par le nom de mes variables. Il était satisfait de mon code et m'a demandé s'il y avait des questions de mon côté. Je lui ai posé quelques questions, comme le type de projets auxquels un stagiaire sera affecté pendant son stage et quelles sont les équipes présentes à MS-IDC Hyderabad. J'ai finalement demandé quand est-ce que j'aurai le résultat de l'entretien il m'a dit que je l'aurai d'ici lundi (Les entretiens ont eu lieu le samedi) et le résultat est effectivement arrivé le lundi mais seulement après 4 semaines :((.

Résultat : Sélectionné.

PS:

Je ne suis pas tout à fait sûr de la durée des entretiens techniques parce que je n'ai pas gardé trace du temps mais c'était quelque chose comme environ 45 minutes - 1 heure.

Modification:

J'ai oublié de mentionner que les entretiens étaient plus faciles que ce à quoi je m'attendais. Quoi qu'il en soit, je suis sûr que je les aurais franchis même s'ils étaient plus difficiles.

Il s'agit d'une question de temps.