Come è stata la tua esperienza durante il colloquio di stage Microsoft?

Ho partecipato a un'unità Microsoft Offcampus per l'assunzione di stagisti nel 2019 ed ecco la mia esperienza di colloquio.

Round - 1: Online Coding Round sul sito Mettl

Microsoft ha condotto un test online chiamato TechSetGo sul sito Mettl.

3 domande di codifica da risolvere entro 90 minuti

Ogni problema è un problema funzionale.

  1. Data una matrice trovare l'elemento di maggioranza nella matrice (un elemento la cui frequenza in quella matrice è strettamente maggiore della metà della dimensione della matrice) e se non c'è maggioranza restituire -1.
  2. Trovare la somma dei primi K punteggi in una competizione.
  3. Ci sono N colori in cui un camaleonte può trasformarsi. C'è una matrice di dimensioni N x N dove per ogni elemento i x j nella matrice se l'elemento è uguale a 1 allora il camaleonte può cambiare dal colore i al colore j altrimenti il camaleonte non può cambiare dal colore i al colore j. Attualmente, il camaleonte è nel colore X e vuole cambiare nel colore Y. Trova il numero minimo di colori che deve cambiare per essere nel colore Y.

Diverse persone hanno ricevuto diverse serie di problemi, ma erano facili da risolvere.

Sono riuscito a risolvere tutti e 3 i problemi e sono stato invitato a un'intervista a Hyderabad.

Round - 2: Group Fly Round

Questo Round è un round carta-penna dove si suppone che si scriva il codice su carta per il problema dato.

2 domande di codifica devono essere risolte in 45 minuti.

  1. Data una matrice di numeri interi non negativi. Trova un percorso con la massima somma, dall'alto a sinistra (0, 0) al basso a destra (N - 1, M - 1) e in ogni dato punto della matrice, potresti spostarti a destra (x, y + 1) o in basso (x + 1, y).
  2. Dato un albero binario trova il più basso antenato comune tra 2 nodi N1, N2.

Alcuni impiegati Microsoft erano presenti per aiutarvi se avete qualche dubbio riguardo alle domande.

Round - 3: Intervista tecnica

Da questo round, ogni round sarà un round F2F. L'intervistatore ha chiesto il mio curriculum e mi ha chiesto di presentarmi.

L'intervistatore è stato molto amichevole e si è concentrato su come mi sto avvicinando al problema e su come sono stato in grado di convertire i miei pensieri in codice.

Perché sei interessato alla CS quando vieni da ECE?

Poi mi ha fatto alcune domande sul sistema operativo.

Ora si è immerso nelle domande di codifica.

  1. Data una griglia di caratteri 2D e una parola. Restituisci true se la parola è presente nella griglia altrimenti restituisci false. Una parola può essere abbinata in tutte le 8 direzioni. Prima ho spiegato il mio approccio di backtracking e mentre scrivevo il codice ho spiegato alcune sezioni del mio codice per tenerlo nel loop. Dopo che ho scritto la parte di codice intorno a 3 / 4 ha detto che va bene e ora possiamo passare al prossimo problema.
  2. Dati 2 alberi di ricerca binari fondili in un unico array ordinato e unificato. Gli ho spiegato il mio approccio. Creerò 2 array che contengono l'in-order traversal dei 2 alberi (in order traversal dell'albero di ricerca binaria ci dà la versione ordinata di quell'albero) e creerò un 3° array dove unirò questi 2 array come l'operazione di merge in merge sort. Dopo averlo spiegato mi ha chiesto di codificarlo e dopo aver esaminato il mio codice l'intervistatore mi ha chiesto se potevo risolvere il problema usando solo 2 matrici invece di 3. Dopo un paio di suggerimenti dell'intervistatore, sono stato in grado di risolverlo. L'intervistatore mi ha chiesto di generare/creare alcuni casi di test per questo problema.
  3. Dato un albero binario scrivere un codice per il preorder traversal iterativo. Sono stato in grado di codificarlo usando le pile.

Round - 4: Intervista tecnica

L'intervistatore si è presentato per primo. È un ingegnere software senior in Microsoft e ha lavorato in Microsoft negli ultimi 7 anni. Dopo aver esaminato il mio curriculum, mi ha chiesto di uno dei miei progetti. Sono stato in grado di dare una buona spiegazione del mio progetto.

L'intervistatore mi ha fatto alcune domande sui concetti OOPS e ora mi ha dato una situazione in cui ha registrato una mela come una mela in stato fresco decade in un periodo di 5 - 6 giorni e voleva mostrare questo qualche pubblico dal momento che il pubblico non sarà seduto a guardare per 5 - 6 giorni come posso comprimere / accorciare in un 2 - 3 minuti di video. Gli ho detto che campionerò il video per 1 secondo ogni 1 ora in modo che l'intero video venga accorciato a 2 - 3 minuti e che i cambiamenti significativi di una mela vengano registrati.

Supponiamo che il video iniziale sia lungo 5 giorni 5 x 24 = 120 ore. Prenderò delle istantanee del video di 1 secondo dopo ogni ora a 0 ore, 1 ora, 2 ore, 3 ore, ....., 120 ore. Così in totale ci saranno 121 secondi di video cioè: 2 minuti e 1 secondo.

Mi ha chiesto quali sono i cambiamenti significativi nella mela durante il suo processo di decadimento.

Gli ho detto che ci sarà un cambiamento nel colore e un cambiamento nella forma della mela durante il suo decadimento. Era soddisfatto della mia risposta e poi è passato alla domanda di codifica.

Mi è stata posta solo una domanda di codifica in questo round.

Questione: 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. All'inizio non avevo capito l'idea, ma mi ha dato un suggerimento: "Conosci qualche struttura dati che segue il principio LIFO", poi ho scritto il codice per il problema usando lo stack e lui era soddisfatto del mio codice.

Round - 5: Tecnico + HR

Sono stato intervistato da un manager (non ricordo il nome del team). Mi ha detto che lavora con Microsoft da 18 anni.

Prima di tutto ha esaminato il mio curriculum ed era interessato a sapere perché ero interessato alla CS quando sono dell'ECE. Ho vinto alcune gare locali di codifica e mi ha chiesto come ho imparato le strutture dati e gli algoritmi e come mi sono esercitato e quali sono stati gli ostacoli che ho incontrato durante l'apprendimento.

Mi ha fatto una sola domanda di codifica. Dato un array, trova il più lungo sottoarray a somma massima, se ci sono più risposte, vai con il sottoarray con l'indice iniziale minore. Gli ho parlato dell'algoritmo di Kadane e ho scritto il codice per esso. Ha esaminato il mio codice e mi ha detto che era impressionato dalla mia denominazione delle variabili. Era soddisfatto del mio codice e mi ha chiesto se c'erano domande da parte mia. Gli ho fatto alcune domande, come ad esempio che tipo di progetti verranno assegnati a uno stagista durante il suo stage e quali sono i team presenti in MS-IDC Hyderabad. Alla fine ho chiesto quando avrò il risultato dell'intervista e lui mi ha detto che l'avrò entro lunedì (le interviste si sono tenute di sabato) e il risultato è arrivato lunedì ma solo dopo 4 settimane :(((.

Risultato: Selezionato.

PS:

Non sono del tutto sicuro della durata delle interviste tecniche perché non ho tenuto traccia del tempo, ma era qualcosa come circa 45 minuti - 1 ora.

Modifica:

Ho dimenticato di dire che le interviste sono state più facili di quanto mi aspettassi. Comunque sono sicuro che le avrei superate anche se fossero state più difficili.