Experiencia de entrevista de Amazon para SDE-II – Part 1

Recibí una llamada de un reclutador de Amazon. Me envió el enlace de prueba de codificación que tuve que completar en una semana. El enlace dado constaba de tres rondas de desafíos y cada ronda era obligatoria para completar con éxito la evaluación dada. Abajo estaban las rondas.

Ronda en línea (Prueba de codificación – 90 minutos):

Prob1.  Amazon Shopping lanzó recientemente un nuevo artículo cuyas calificaciones diarias de los clientes durante n días están representadas por las calificaciones de array. Supervisan estas calificaciones para identificar productos que no están funcionando bien. Encuentre la cantidad de grupos que se pueden formar que consisten en 1 o más días consecutivos de manera que las calificaciones disminuyan continuamente a lo largo de los días.

Las calificaciones son decrecientes consecutivamente si tiene la forma: r,r-1,r-2.. y así sucesivamente, donde r es la calificación de los primeros días del grupo considerado. Dos grupos se consideran diferentes si contienen las calificaciones de diferentes días consecutivos.

Mis Soluciones 

Java

/*package whatever //do not write package name here */
  
import java.util.*;
  
public class Test {
  
//testing
public static void main(String args[]) {
   
 Integer[] m_Arr = {4,3,5,4,3};
 List<Integer> m_ratings = Arrays.asList(m_Arr);
   
 long m_ans = countDecreasingRatings(m_ratings);
 System.out.println(m_ans); //9
   
}
  
public static long countDecreasingRatings(List<Integer> ratings){
    
  long mload = 0;
  long result = 0;
    
  for(int i = 0; i < ratings.size();i++){
   if (mload ==0){
    mload = 1;
   }
   else{
     if (ratings.get(i-1) == ratings.get(i)+1){
    mload ++;
  }
    
  else{
     result += sumOfNNumbers(mload);
     mload = 1;
   }
   }
  }
  result += sumOfNNumbers(mload);
  return result; 
 }
  
 private static long sumOfNNumbers(long m){
   if (m%2 ==0){
    return ((m/2)*(m+1));
   }
   else{
       return m*((m+1))/2;
   }
 }
}

Prob2. Amazon Academy organizó recientemente una prueba de becas en su plataforma. Un total de n estudiantes participaron en la prueba. Cada estudiante recibió un número de lista único, i. El rango de cada estudiante se almacena en el rango [i]. Cada estudiante obtiene un rango único, por lo que el rango es una permutación de valores de 1 a n.

Para mejorar la colaboración, los estudiantes se dividirán en grupos. Use las siguientes reglas para encontrar el desequilibrio en un grupo de estudiantes.

  • Un grupo tiene k estudiantes donde 1 <=k<=n. Los grupos se forman de k estudiantes en las filas con números de rollo consecutivos, es decir, I, (i+1) ..(i+k-1)
  • Los rangos de los estudiantes en un grupo luego se ordenan de forma ascendente a una array, aquí denominada sorted_rank.
  • El desequilibrio del grupo se define entonces como el número de estudiantes j, que están más de 1 rango
    por debajo del rango del estudiante justo delante de ellos, es decir, sorted_rank[j] – sorted_rank[j-1] > 1

Java

/*package whatever //do not write package name here */
  
import java.util.*;
  
public class Test {
      
    //testing
    public static void main(String args[]) {
          
        Integer[] m_Arr = {4,1,3,2};
        List<Integer> m_ratings = Arrays.asList(m_Arr);
          
        long m_ans = findTotalm_imbalance(m_ratings);
        System.out.println(m_ans); //3
          
    }
      
    public static long findTotalm_imbalance(List<Integer> rank){
           
         long m_imbalance = 0;
          int r  = 0;
            
          TreeSet<Integer> m_set = new TreeSet<>();
            
          while ( r < rank.size()-1) {
              m_set.clear();
              m_set.add(rank.get(r));
              long curm_imbalance = 0;
                
              for (int i = r + 1; i < rank.size();i++) {
                  Integer e = rank.get(i);
                  m_set.add(e);
                  Integer f = m_set.lower(e);
                  Integer c = m_set.higher(e);
                    
                  if (f == null) {
                      curm_imbalance += ((c-e)>1?1:0);
                  }
                    
                  else if (c == null) {
                      curm_imbalance += (((e-f)>1)?1:0);
                  }
                    
                  else {
                      curm_imbalance += (c-f)>1?-1:0;
                      curm_imbalance += (((c-e)>1)?1:0);
                      curm_imbalance += ((e-f))>1?1:0;
                  }
                  m_imbalance += curm_imbalance;
              }
              r ++;
          }
            
          return m_imbalance;     
    }
  
}

Simulación de trabajo (generalmente toma 15 minutos)

  • Simulación de trabajo: generalmente toma 15 minutos, trabaje en las decisiones de desarrollo de software que enfrentan las SDE en Amazon.

Encuestas de estilo de trabajo (generalmente toma 10 minutos)

  • Encuestas de estilo de trabajo: generalmente toma 10 minutos, 2 encuestas: responda preguntas sobre cómo aborda el trabajo de ingeniería de software y su enfoque del trabajo en general

Publicación traducida automáticamente

Artículo escrito por amiransarimy 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 *