Hola Geeks, recientemente Amazon visitó nuestro campus para pasantías y tiempo completo y aparecí para la entrevista de pasantías de Amazon .
Lo que dice mi experiencia personal es que primero se explora el problema y luego se piensa progresivamente en las posibles soluciones. Una vez que el enfoque eficiente lo golpee, piense si es posible optimizarlo aún más o no, en lugar de intentar saltar a la solución correcta de inmediato.
Verifique todos los casos de esquina y, lo que es más importante, no se quede completamente en blanco durante su conversación con el entrevistador, sino que continúe contando las soluciones tentativas que se le ocurran.
Todo mi proceso consistió en 2 rondas
- Ronda en línea
- Entrevista F2F
Ronda en línea:
nuestra ronda en línea fue bastante diferente al patrón habitual seguido por Amazon. Teníamos tres secciones.
Sección 1: 7 MCQ de depuración de código que eran bastante simples y requerían conocimientos básicos de cualquier lenguaje de programación, pero la restricción era solo el límite de tiempo (10 minutos) y no había marcas negativas.
Sección 2: 24 MCQ basados en aptitud y razonamiento cuantitativo. También fueron bastante fáciles sin calificación negativa y con un límite de tiempo de 35 minutos.
Bloque 3: 2 preguntas de codificación y límite de tiempo 45 minutos.
Pregunta 1: busque en una array 2D ordenada por filas y columnas
Input : mat[4][4] = { {10, 20, 30, 40}, {15, 25, 35, 45}, {27, 29, 37, 48}, {32, 33, 39, 50}} x = 29 Output : Found at (2, 1) Input : mat[4][4] = {{10, 20, 30, 40}, {15, 25, 35, 45}, {27, 29, 37, 48}, {32, 33, 39, 50}} x = 100 Output : Element not found
Pregunta 2: Programación por turnos con diferentes tiempos de llegada
Tenía que devolver el tiempo de espera promedio para que la CPU completara el procesamiento de todos los n procesos.
(Los procesos se ordenaron según la hora de llegada).
Input: arrivalTime[] = { 0, 1, 2, 3 } burstTime[] = { 10, 4, 5, 3 } quntumTime = 3 Output: Average waiting time is 10.0 Input: arrivalTime[] = { 0, 5, 7, 11 } burstTime[] = { 10, 7, 1, 9 } quntumTime = 4 Output: Average waiting time is 6.75
Las tres secciones fueron seguidas por un formulario de comentarios que era una especie de ronda de recursos humanos. Esta retroalimentación también tuvo una contribución en la preselección de los estudiantes. Por lo tanto, recomiendo estar preocupado y ser un poco justo al hablar sobre usted a través de esos comentarios.
Entrevista cara a cara:
El entrevistador me pidió que me presentara. Luego hizo algunas preguntas basadas en mi CV y preguntas sobre temas básicos de CS como SO, DBMS, redes informáticas y conceptos de programación orientada a objetos. Luego me hizo 3 preguntas de estructuras de datos y Algoritmos.
Pregunta 1 : Verifique si dos Nodes son primos en un árbol binario
. Me pidió que escribiera código en O (n) y atravesara el árbol solo una vez. También debe considerar ese caso cuando uno o ambos Nodes dados están o no están en el árbol.
Pregunta 2 : dada una array ordenada donde todos los elementos se repiten dos veces y solo un elemento está presente una vez. Usted está obligado a encontrar ese elemento único.
El enfoque instantáneo que me llamó la atención fue regresar xor de todos los elementos. Este fue el enfoque O(n). Me pidió que lo optimizara.
Luego di la solución O (logn) basada en la búsqueda binaria modificada.
Pregunta 3 : En una array 2D de enteros, 2 denota pared, 1 denota zombi y 0 denota humano. Al día siguiente, los zombis convierten a los seres humanos adyacentes en zombis. Un zombi está adyacente al bloque humano arriba, abajo, a la izquierda y a la derecha. Zombie no puede cruzar una pared.
Averigüe cuántos días se tarda en infectar a todos los humanos. Si algún humano nunca se infecta, devuelve -1.
Input 1: mat[4][5]={{2, 1, 0, 0, 0}, {2, 0, 2, 2, 0}, {1, 2, 0, 0, 0}, {0, 2, 0, 0, 0}} Output: 8 Explanation: Day 1: {0, 2}, {1, 1}, {3, 0} Day 2: {0, 3} Day 3: {0, 4} Day 4: {1, 4} Day 5: {2, 4} Day 6: {2, 3}, {3, 4} Day 7: {2, 2}, {3, 3} Day 8: {3, 2} Input 2: mat[3][4]={{2, 0, 0, 0}, {2, 2, 1, 0}, {0, 0, 2, 2}} Output: -1 Explanation: {2, 0} and {2, 1} never gets infected.
Enfoque: primero escanee toda la array y almacene la posición de todos los zombis en una cola. Todos estos elementos en la cola representan el nivel 1. y ahora aplique bfs sobre esa cola y para cada nivel incremente el conteo de días en 1. Después de aplicar BFS, si no queda ningún ser humano, devuelva el conteo de días, de lo contrario devuelva -1 como todos los humanos no se puede convertir en zombis.
Code Link:https://ide.geeksforgeeks.org/M8HPFwNxRI
Luego me preguntó si tenía alguna pregunta. Le pregunté sobre el tipo de proyectos que tenemos que hacer allí y cómo estas estructuras de datos y algoritmos y SO, el conocimiento del tema DBMS se aplican en escenarios reales para manejar sus millones de usuarios de manera eficiente. Dio un ejemplo de su cambio reciente en la organización de datos con árboles y comenzó a elaborar un proceso de trabajo completo en Amazon… algunos de los cuales apenas podía entender.
Finalmente fui contratado para la pasantía en Amazon. Me gustaría agradecer a Geeks por Geeks que me ayudaron mucho en mi preparación.
Publicación traducida automáticamente
Artículo escrito por Nidhi Warde y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA