Experiencia en entrevistas de Microsoft (más de 3 años de experiencia)

La ronda 1:

Di la solución directa y la probé en codility. Atraviese primero para obtener la longitud de la lista Vinculada y, a continuación, atraviese de nuevo para llegar al elemento nk-ésimo que debe eliminarse. Pidió una mejor solución. Aunque no se me ocurrió, solo explicó el enfoque (2 sugerencias). 

Luego tuvimos una discusión sobre https://leetcode.com/problems/fizz-buzz-multithreaded/. No di una explicación completa, hablé sobre cómo se puede usar el concepto de semáforo y bloqueos para resolverlo.

Ronda 2: el entrevistador fue amable y dijo claramente que la expectativa no es el código sintácticamente correcto, sino la estructura y la lógica. Me pidió que escribiera métodos muy pequeños inicialmente, luego, finalmente, escribí el siguiente código.

MyClass maxValue(List<MyClass> arr){
MyClass max = arr[0];
for(int i=1;i<arr.size();i++){
 if(!MyClass.greaterThan(max,arr[i]) )
  max=arr[i];
}
return max;
}
MyClass minValue(List<MyClass> arr){
MyClass min = arr[0];
for(int i=1;i<arr.size();i++){
 if(MyClass.greaterThan(min,arr[i]) )
  min=arr[i];
}
return min;
}
void bothValues(List<MyClass> arr){
MyClass max = arr[0];
MyClass min = arr[0];
List<MyClass> maxList = new ArrayList();
List<MyClass> minList = new ArrayList();
for(int i=0;i<arr.size()-1;i=i+2){
 if ( MyClass.greaterThan(arr[i],arr[i+1]) ){
   maxList.add(arr[i]);
   minList.add(arr[i+1]);
 } else{
   maxList.add(arr[i+1]);
   minList.add(arr[i]);
 }
}
max = MyClass.maxValue(maxList);
min = MyClass.minValue(minList);
//print logic
}
MyClass{
int val;
boolean greaterThan(MyClass a,MyClass b){
//logic to decide
}
}

Luego tuvimos una discusión sobre cómo mejorar el método «bothValues». El enfoque es obtener el mínimo y el máximo para cada par y luego llamar a los métodos maxValue y minValue respectivamente en todos los máximos y mínimos. De esa manera podemos disminuir el número de llamadas realizadas al método greatThan.

Ronda 3:

Después del código, preguntó si funciona para números que no son enteros. Entonces, ¿se puede usar esto para hacer multiplicaciones?

Discusión de sugerencias de escritura anticipada para palabras y luego para oraciones. 

Cómo diseñar Google Docs que varias personas están editando al mismo tiempo, estaba buscando respuestas en términos de subprocesos múltiples. Algunas preguntas aleatorias más relacionadas con los conceptos de diseño del sistema

Ronda 4: Esta fue la ronda del gerente de contratación. Las primeras 3 rondas sucedieron un sábado. Esta ronda estaba prevista para el martes siguiente. Hubo algunas preguntas de comportamiento.

  1. ¿Qué harás si alguien más se lleva el crédito por tu trabajo? 
  2. ¿Cómo transmitirá al equipo que desea trabajar en un proyecto en particular?

Luego me pidió que me decidiera por un limitador de velocidad API simple. Después de mucha discusión sobre el alcance del problema, le di un enfoque basado en la cola y escribí un pequeño bloque de código.

Me preguntaron sobre mi salario actual y ubicación y si estaría interesado si me hacen una oferta. Tengo que saber que recibí la oferta el mismo día. Hubo mucho retraso en el proceso posterior. 

Pero fue una buena experiencia, los entrevistadores fueron muy razonables.

Publicación traducida automáticamente

Artículo escrito por bhagyasri pottumuthu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *