Experiencia de entrevista en Amazon | En el campus para SDE-1 – Part 1

Recientemente, Amazon vino a nuestro campus para el puesto de ingeniero de desarrollo de software. El proceso de contratación consistió en 1 prueba de codificación y 4 rondas de entrevistas. 

Ronda 1 (Ronda de codificación): La ronda de codificación consistió en una sección de depuración de código, preguntas de Aptitud y 2 preguntas de codificación. La sección de depuración de código fue simple en la que tuvimos que encontrar la falla en el código debido a la salida incorrecta. Las preguntas de aptitud eran preguntas generales de razonamiento lógico. Las preguntas de codificación también fueron fáciles. Solo recuerdo una pregunta.

Después de esta ronda, 57 personas fueron preseleccionadas para entrevistas. Debido a la situación actual de coronavirus, todas las entrevistas se realizaron en línea en la plataforma Amazon Chime. 

Ronda 2 (Técnica): Me hicieron tres preguntas de codificación. Me pidieron que escribiera el código en el sitio LiveCode que usa Amazon y discutiera la complejidad del tiempo y el espacio. 

Primero di un enfoque DFS usando una array visitada, pero el entrevistador me pidió que usara el espacio O(1). Luego, sugerí cambiar el valor del Node cuando visitemos el Node. 

Primero di un método transversal de orden de nivel que requería una cola. Luego me pidió que lo hiciera en el espacio O(1). Entonces, di una solución recursiva en la que atravesamos cada nivel antes de avanzar. 

  • Dado un BST, encuentre la cantidad de arreglos que darán como resultado el mismo BST. 

Por ejemplo, dado un BST como este: una array es 2 3 4 5 7 6 10. Otra array es 2 5 7 6 10 3 4. Pero esta no es una array válida: 2 5 10 7 6 3 4. Esto se debe a que si 10 viene antes de 7, luego 10 puede convertirse en la raíz y 7 convertirse en el hijo izquierdo, lo que dará como resultado un BST diferente. 

     5
   /   \
  3     7
 / \   / \ 
2   4 6  10

Ronda 3 (Técnica): El entrevistador primero me hizo algunas preguntas sobre el proyecto que había hecho. Luego, me hizo dos preguntas de codificación. 

  • Dada una array donde cada elemento denota el costo, tomaremos dos elementos, los agregaremos y luego los insertaremos nuevamente en la array. El coste de la operación es la suma del coste de ambos elementos. Tenemos que minimizar el costo. 
    Por ejemplo: array dada como 2, 3, 4, 10. La suma mínima es 5 (2+3) + 9 (5+4) + 19(9+10) = 33. 

La solución que di fue insertar todos los elementos en un montón mínimo (implementado como una cola de prioridad) y luego extraer dos elementos de la cola, agregarlos y volver a colocarlos en la cola. Haremos esto hasta que el tamaño de la cola sea 1. Luego me pidió que escribiera la implementación completa de una cola de prioridad, es decir, las funciones push, pop, top, empty y size.

Primero di una solución usando tres pilas: una para la pila real, otra para el elemento mínimo y otra para el elemento máximo. Me pidió que optimizara la complejidad del espacio. Entonces, di una solución donde codificamos el elemento min en la pila misma. 

Ronda 4 (Técnica): En esta entrevista, me hicieron preguntas de literalmente todos los temas. Empezó con las redes y me preguntó todos los pasos que pasaba cuando escribo www.google.com. Luego, me preguntó qué sucede en el sistema operativo cuando escribo esto y cómo responde el sistema operativo a este proceso de alta prioridad. Básicamente, estaba preguntando sobre la política de programación utilizada para programar un proceso de alta prioridad. Luego me preguntó qué sucede en el servidor y las posibles causas de los cuellos de botella en los servidores. Luego, pasó a la programación orientada a objetos y me preguntó sobre la importancia de la herencia y las interfaces en la programación orientada a objetos. Luego me hizo dos preguntas de codificación.

Para esto, di la solución para dividir la lista enlazada en el medio, invertir la segunda mitad y atravesar ambas mitades alternativamente. 

  • Dado un mapa hash, necesitamos imprimir el mapa hash en orden ordenado. 

Para esto, no conocía el concepto de un mapa hash vinculado en Java. Me dio el concepto de un hashmap vinculado cuando estaba atascado. Di una solución para agregar los pares clave-valor en un vector, ordenarlos, atravesar el vector y completar los siguientes punteros en los Nodes de hashmap. Luego, simplemente recorriendo el hashmap, obtendremos un orden ordenado de Nodes. 

Ronda 5 (Conductual + Técnica): En esta ronda, el entrevistador me hizo muchas preguntas de comportamiento. Algunos de ellos fueron sobre las dificultades que enfrenté en un proyecto, cómo las resolví y cómo manejaré los desacuerdos en un grupo. Luego, me hizo dos preguntas de codificación.

Este es un problema básico de ventana deslizante donde la ventana solo contendrá caracteres que no se repiten. Actualizaremos la longitud máxima si el tamaño de la ventana supera la longitud máxima. 

En la última ronda, el entrevistador estaba más interesado en mi enfoque que en el código en sí. Además, hizo muchas preguntas de comportamiento en la última ronda. Esto se puede considerar como una ronda de recursos humanos, aunque no se mencionó explícitamente en ninguna parte. 

En general, las entrevistas fueron fascinantes y cada vez que me atascaba en algún lugar, el entrevistador me guiaba en la dirección correcta. Al final, 7 personas fueron preseleccionadas para el trabajo y, afortunadamente, yo era una de ellas. 

Sugeriría hacer las preguntas de la entrevista de Amazon de GeeksforGeeks y Interviewbit, ya que contienen todos los tipos de preguntas formuladas hasta la fecha. Las preguntas de la entrevista de archivo en GeeksforGeeks son muy útiles ya que contienen todo tipo de problemas con diferentes dificultades. También sugeriría revisar los conceptos de Redes, OOP, OS, ya que también podrían hacer preguntas sobre esos temas.
 

Publicación traducida automáticamente

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