Experiencia de entrevista en Amazon (para pasante de SDE)

Amazon visitó nuestro campus recientemente (noviembre de 2019) para contratar pasantes de SDE. Fue un proceso de contratación de tres rondas.

Ronda 1 (Ronda de codificación en línea): 

Fue una ronda de codificación en línea en la plataforma mettl. Nos dieron 90 minutos para resolver 2 preguntas de codificación y 28 mcq.

Los mcq se basaron únicamente en estructuras de datos y algoritmos, así como en la búsqueda de errores/salidas en un fragmento c/c++ dado, no hubo marcas negativas.

La pregunta de codificación para mí fue,

  1. Era una pregunta simple basada en la manipulación de strings, solo tienes que tener cuidado con los casos de esquina, de lo contrario fue pan comido.
  2. La segunda pregunta era encontrar el siguiente número mayor usando los mismos dígitos que se dieron en la string de entrada . Las restricciones en la longitud de la string de entrada eran 1<=longitud<=100000, por lo que una solución O(NLogN) estaría bien.
    Ejemplo
    Entrada: 1532
    Salida: 2135

No estoy seguro exactamente, pero los estudiantes que resolvieron completamente las preguntas de codificación y también lo hicieron bien en mcqs fueron seleccionados para la siguiente ronda. Los resultados de esta ronda se dieron a conocer después de una semana. Y las siguientes dos rondas fueron después de una semana de resultados.

Ronda 2 (entrevista F2F):

Esta ronda fue una entrevista personal cara a cara y fue de casi 1 hora para cada candidato.

Primero comenzó con su introducción sobre su experiencia y su trabajo actual en Amazon como SDE. Luego me dijo que me presentara. Después de eso comenzó con la entrevista.

Primero revisó mi currículum cuando mencioné sobre mi pasantía de verano, me preguntó sobre mi trabajo allí y sobre la aplicación en la que trabajé. Era amable y parecía estar interesado en todo lo que decía. Luego echó un vistazo a mi proyecto y encontró uno de mis proyectos interesante, así que me pidió que mostrara la lógica y los cálculos en papel, lo expliqué durante unos 10 minutos, quedó convencido con la respuesta y luego pasamos a la estructura de datos. y preguntas de algoritmos.

  1. Dejando la historia a un lado, la pregunta era básicamente encontrar dos Nodes que sumaran el valor dado en un árbol de búsqueda binario equilibrado.                                                                                                                                                                           Sugerí un enfoque para realizar un recorrido en orden y obtener la array ordenada. Y luego para aplicar estoenfoque de tiempo de dos punteros O (N) como la array que ya se está ordenando. Me preguntó si puedo mejorar la complejidad del espacio en lugar de O(N) a algo mejor. Le dije un método para mantener las pilas, una para el recorrido en orden y la otra para el recorrido en orden inverso y haciendo el mismo enfoque de dos punteros, ya que una pila daría elementos de array en orden ascendente y la otra los daría en orden descendente. No estaba seguro acerca de la implantación iterativa de estos recorridos, por lo que dijo que estaba bien y me dijo que codificara el primer enfoque. Revisó el código a fondo y después de una explicación sobre el código de mi parte, quedó satisfecho y pasó a la siguiente pregunta.
  2. Me pidió que diseñara una estructura de datos que admitiera operaciones de inserción, búsqueda y eliminación de la mejor manera posible. Sugerí una lista doblemente vinculada con hashmap de lo que dijo si puedo mejorar la complejidad del tiempo de eliminación. Luego sugerí Self balance BST (AVL Tree) que admitirá todo esto en tiempo O (LogN). Se convenció y me dijo que mostrara ¿cómo equilibraré el árbol? Le hablé de las rotaciones a realizar después de cada operación de inserción y eliminación. No tuve que codificar esto. Después de esto, dijo que si tenía alguna pregunta para él, le hice un par de preguntas generales y luego terminó la ronda.

Los resultados de esta ronda se declararon después de aproximadamente una hora de completar la ronda completa para todos los candidatos.

Ronda 3 (entrevista F2F):

Esta ronda también se basó en estructura de datos y algoritmos y duró más de una hora.

  1. La primera pregunta fue que me dieron una array de números enteros no negativos donde cada número entero representa el número máximo de saltos que puedo dar desde esa posición y tengo que encontrar el número de formas de llegar al enésimo paso. donde n es la longitud de la array. Le sugerí una solución de DP, tomé un recuento de array [n] que almacena varias formas de llegar a ese paso en particular y permite tomar la array de entrada como pasos [n].
    • Y la relación era,
      cuenta[0] = 1;
      (¡Como hay una forma de llegar allí y ya estamos allí!
      ) , n-1)] se incrementaría en count[i] ya que las formas de llegar aquí fueron count[i] y podemos subir a los pasos[i] desde aquí.

    Estaba convencido con la solución y me dijo que escribiera un código de trabajo sin ningún error.

  2.  La segunda pregunta era acerca de unir las partes de una cuerda tomando dos partes a la vez para unirlas y finalmente fusionarlas en una sola cuerda con un costo mínimo , donde el costo se define como la suma de las dos cuerdas que elegimos unir. Le dije un enfoque codicioso usando la cola de prioridad, para tomar dos piezas de longitud mínima de la cola de prioridad y agregar la pieza fusionada nuevamente a la cola de prioridad hasta que haya una sola cuerda. Luego me preguntó cómo implementaría la cola de prioridad. Le dije que usaré min heap. Luego me preguntó sobre la inserción y la eliminación en el montón mínimo y luego pasamos a la siguiente pregunta. No tuve que codificar esta.
  3. La tercera pregunta fue que me dieron un árbol n-ario, cada Node tiene un valor entero y tuve que encontrar un subconjunto de Nodes que tuviera la suma máxima, pero no puedo tomar tanto al padre como al hijo en el conjunto (es decir, tengo que excluir al menos a alguno de ellos). Este problema se parecía a este problemaque había resuelto antes. Así que sugerí lo mismo tomando dos propiedades adicionales en la clase Node (es decir, la suma máxima que incluye este Node y excluyendo este Node) y luego tomando el orden de nivel transversal del árbol y cambiando el valor de las variables de inclusión y exclusión del nivel N mientras está en (N-1)th.(es decir, mientras los insertamos en la cola, aquí tenemos que hacerlo considerando todos los hijos del Node actual. Y el Node raíz se inicializa con el valor de excluir como cero e incluir como el valor de ese Node) Y finalmente tomando la suma de max(incluyendo, excluyendo) para todos los Nodes hoja. Luego me dijo que escribiera un código de trabajo con todas las esquinas cubiertas. Y también me dijo que escribiera la clase Node.

Después de estas 3 preguntas me preguntó sobre mis prácticas y proyectos y como cuando llegaban los plazos me hizo varias preguntas sobre ellos,

  • ¿Qué es reaccionar?
  • ¿Qué es el desarrollo basado en componentes?
  • ¿Cuál es la diferencia entre la base de datos SQL y NO-SQL?
  • ¿Qué es AWS? etc.

Finalmente me preguntó si tenía alguna pregunta para él y la ronda terminó.

Después de alrededor de dos horas de esta ronda, se declararon los resultados, yo y otros 6 estudiantes fueron seleccionados.

Sugeriría tener confianza y pensar en voz alta mientras esté allí y también expresar sus pensamientos tomando ejemplos en papel y hacer preguntas donde haya dudas. ¡Mucha suerte en tus entrevistas!

Publicación traducida automáticamente

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