Recientemente me entrevistaron en Amazon en el campus. El proceso fue:
Ronda en línea:
———————-
Un concurso de hackkerank con 22 preguntas que incluyen 2 problemas de codificación y 20 MCQ en OS, Aptitude, DBMS.
Preguntas de codificación:
1. Dada una array 2d con solo elementos ‘#’ y ‘.’ . ‘#’ representa cereza y ‘.’ representa nada. ¿Puedes dividir la array en 2 mitades con cerezas iguales? Solo se podía hacer un único corte ya sea horizontal o vertical.
2. Ventana corredera de tamaño k . Encuentra el máximo de cada ventana.
Ronda 1:
——————
Problema 1: Buscar en una array rotada y ordenada.
El entrevistador quiere que el código cubra todos los casos de esquina. Y también la complejidad de tiempo máxima optimizada.
Le di una solución O (2 * logn) y quedó satisfecho.
Problema 2: Dado un número k , Encuentra no. de maneras de hacer este número usando la suma de números de 1 a k-1 . Además, no puede tomar el mismo número más de una vez en una combinación y también todas las permutaciones de una combinación cuentan como una sola manera.
Por ejemplo: si k= 6, entonces todas las permutaciones de (1,2,3) cuentan como una sola forma.
Fui preseleccionado después de esta ronda.
Ronda 2
————-
Consiste en un solo problema pero una discusión detallada sobre eso.
Problema: consulta de rango mínimo. Es decir, dada una array y una consulta de rango (xi, yi), encuentre el elemento mínimo en el rango (xi, yi). Estas consultas pueden ser muy grandes.
Primero le di un enfoque de fuerza bruta y luego le di una solución de árbol de segmento a eso con complejidad de tiempo y espacio.
Luego preguntó qué pasa si tenemos que actualizar un elemento y luego sigue actualizando un rango.
Después de eso preguntó qué pasa si borramos un elemento. ¿Cómo modifica su solución para hacer frente a eso?
Le sugerí que actualizara el elemento con INT_MAX y mantuviera una array de mapeo.
Después de eso, preguntó ¿qué pasa si agregamos un elemento en la array? .
Le sugerí que reconstruyera el árbol de segmentos basado en eso. Sugirió construirlo como una raíz binaria en lugar de una representación de array y almacenar el rango. Puede haber algunos subárboles reutilizables. ¿Cómo puedo encontrar esos subárboles y cómo usarlos y cuáles serán las complejidades del tiempo?
Por último, me dijeron que codificara la consulta minmium de rango con el Node que tiene las siguientes propiedades (min, inicio, final, Node * izquierda, Node * final);
Quedó impresionado. 🙂
Ronda 3
————–
También consta de un solo problema.
Problema: dado un conjunto de coordenadas, encuentre los k elementos superiores cuya distancia desde el origen sea máxima.
Di enfoques ingenuos y enfoque de montón. Más tarde me pidió que pensara más y luego se me ocurrió el enfoque de la función de partición de clasificación rápida.
Me pidió que lo codificara.
Ronda 4
—————
Ha sido la más fácil de todas hasta ahora.
Consiste en un problema: dadas 2 listas enlazadas, sustráigalas y almacene el resultado en una más grande y devuélvala.
Básicamente, él quiere que cubramos todos los casos de esquina para esto.
Después de eso, se llevó a cabo una discusión sobre los proyectos.
Gracias Geeks For geeks por la gran base de datos de problemas de programación. Haciendo un gran trabajo 🙂.
Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo electrónico a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
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