Ronda 1: Codificación en línea + MCQ
Fecha de la entrevista: 29 de julio de 2019.
Plataforma: Mettl
28 MCQ y 2 codificaciones
MCQ constaba de estructuras de datos, algoritmos, salida de código de fragmentos de código C/C++ (punteros).
Preguntas de codificación:
- Encuentre la media, la mediana y la moda de una array.
- Reorganice la array de manera que la suma de la diferencia entre pares consecutivos sea mínima y devuelva esa suma.
Ronda 2: Resolución de problemas F2F
El entrevistador pasó directamente a la parte de preguntas.
Expliqué el enfoque DP con el tiempo O(n) y el espacio O(1). Estaba satisfecho con él y lo codifiqué en papel.
Inicialmente, le dije enfoque de búsqueda lineal, pero me dijo que lo hiciera mejor. Después de un poco de trabajo con lápiz y papel, me di cuenta de que se puede hacer con el enfoque Divide and Conquer. Entonces, le dije y me pidió que codificara lo mismo.
Ronda 3: estructuras de datos F2F
Este entrevistador me pidió que me presentara y también me preguntó cómo fue mi última ronda. Luego pasó directamente a los problemas.
Inicialmente, al ver este problema me quedé estupefacto y no pude pensar en nada. Pero después de pensarlo un poco, le dije una solución basada en HashMap. Como esta era la solución O(n), me pidió que optimizara aún más la complejidad del espacio. Me tomó alrededor de 5 a 10 minutos encontrar la solución ‘cambiar los enlaces’. Parecía bastante contento con la solución. Y me pidió que codificara.
Realmente sugiero analizar este problema, ya que requiere un pensamiento único y original.
Este era un problema simple basado en la implementación, y él quería un enfoque optimizado para el espacio, le expliqué lo mismo. No me pidió que lo codificara.
Ronda 4: Fundamentos de F2F CS
Esta fue la ronda más larga que duró 90 minutos. Realmente admiro la manera de hacer preguntas de este entrevistador.
Este entrevistador era una persona genial. Primero hicimos la introducción. Entonces me dijo que me pusiera muy cómodo, dijo que esto será una ronda de discusión, donde discutiremos sobre conceptos básicos de informática, pero en detalle.
Me hizo todas las preguntas de manera muy diferente. De todos los temas enumerados a continuación, ÉL me explicó cuál es el concepto y me preguntó POR QUÉ, CUÁNDO y DÓNDE usamos esto. Básicamente, quería saber qué tan profundamente entiendo los fundamentos básicos.
- Me explicó qué es la interfaz y me preguntó por qué, cuándo y dónde la usamos. Lo discutimos en detalle dando ejemplos prácticos.
- ¿Cómo implementaría la función printf()?
- ¿Qué es pasar por valor y pasar por referencia en Java?
- Me explicó público, privado, protegido. Preguntado por qué, cuándo y dónde lo usamos? Lo expliqué dando ejemplos prácticos y dando varias definiciones de clase.
- Pasamos a la parte de la base de datos. Me explicó qué es la Normalización y nuevamente me preguntó por qué, cuándo y dónde la usamos. Se lo volví a explicar dando ejemplos, y estaba muy contento con él.
- Explicar las propiedades de los ACID. Lo expliqué en detalle. Cuando dije que las bases de datos NoSQL no tenían estas propiedades. Me preguntó si sabía sobre NoSQL, le dije que sí. Luego discutimos sobre SQL vs NoSQL.
- ¿Qué entiendes por datos no estructurados? ¿Por qué NoSQL para ese tipo de datos?
- Pidió hacer un intercambio entre SQL y NoSQL usando ejemplos prácticos. Por qué, cuándo y dónde usará SQL y no NoSQL y viceversa. Le di una respuesta satisfactoria. Estaba feliz con eso.
- Luego me pidió que hiciera un análisis de la complejidad del espacio-tiempo en Quick Sort, Merge Sort. Me preguntó cuándo surge el caso peor, mejor y promedio, me pidió que diera un ejemplo.
- ¿Qué entiendes por BST balanceado? ¿Por qué se usa?
- Luego preguntó si podemos hacerlo mejor que la búsqueda binaria en la búsqueda en una array. Le di varios enfoques: HashMap, búsqueda ternaria, búsqueda binaria comenzó desde la izquierda
Después de largas discusiones sobre varios temas, me preguntó si tenía alguna pregunta. Le hice algunas preguntas sobre la cultura laboral en Amazon.
Ronda 5: Subida de la barra
Esta fue una entrevista telefónica, realizada después de 3,5 semanas en el sitio y se realizó en AWS Chime. El entrevistador era una persona muy experimentada con más de 20 años de experiencia.
Me pidió que me presentara. Cuando mencioné sobre mi pasantía, me preguntó en qué tipo de proyecto trabajaba y me pidió que codificara las características que implementó en este momento. Traté de codificarlo, pero como no tenía documentación delante de mí y no había IDE allí, no pude hacerlo bien.
Después de eso, me hizo una pregunta de codificación. Conecte los Nodes en el árbol binario del mismo nivel. Dije recorrido de orden de nivel usando la cola. Me pidió que lo hiciera recursivamente. Le di un enfoque recursivo y luego me pidió que lo codificara.
Al final discutimos sobre trabajar en Amazon y los principios de liderazgo.
Realmente sugiero que las entrevistas telefónicas son diferentes a las entrevistas cara a cara en persona. Se necesita un conjunto diferente de habilidades para descifrar / hacerlo bien en este tipo de entrevistas, lo que creo que es la razón de mi rechazo.
En general, fue una buena experiencia de aprendizaje.
Gracias Geeksforgeeks.