Experiencia de entrevista en Amazon | SDE (1.5 años de experiencia)

Ronda 1 : ronda de codificación en línea en la plataforma Amcat:
1) N principales competidores similares a este
https://leetcode.com/discuss/interview-question/460127/

2) Una pregunta muy similar a esta, se aplicará el mismo concepto de BFS. Dada una cuadrícula 2D, cada celda es un zombi 1 o un humano 0. Los zombis pueden convertir a los seres humanos adyacentes (arriba/abajo/izquierda/derecha) en zombis cada hora. ¿Averigua cuántas horas se tarda en infectar a todos los humanos?
Ejemplo: Entrada:[[0, 1, 1, 0, 1],[0, 1, 0, 1, 0],[0, 0, 0, 0, 1],[0, 1, 0, 0, 0]]
Resultado: 2
Tanto los N competidores principales como los problemas Zombie fueron bastante interesantes y desafiantes. Aunque el problema de los zombis estaba retorcido en términos de descripción, el alcance del problema era exactamente el mismo. En lugar de Zombies, estaba actualizando los servidores adyacentes en el menor número de días posible. Después de esto, en cada ronda esperaban el código más optimizado y productivo, ya que tenía 1,5 años de experiencia.

Ronda 2: pedí mi experiencia laboral y proyectos al principio y luego salté a las preguntas. Esto fue tomado por 2 SDE’SPEN-PAPER-ROUND:
1) Convertir BST a Lista doblemente enlazada sin deformar el árbol y sin usar espacio adicional, excepto el que se usa para crear la Lista. Así que esto no debe hacerse en el lugar. Complejidad temporal y espacial de mis soluciones -: O(n) y O(1) respectivamente.

2) Se le da un subarreglo que tiene solo 0 y 1, maximice el subarreglo que contiene 1 y en este solo puede voltear un 0, indique el índice de ese 0. Similar a esto https://www.geeksforgeeks.org/find -ceros-a-ser-invertidos-para-que-el-número-de-1-consecutivos-sea-maximizado/
Complejidad de tiempo y espacio de mis soluciones -: O(n) & O(1) respectivamente.

Ronda 3 (fue una ronda de gestión) – Discusión sobre uno de mis proyectos y luego saltó directamente a las preguntas, fue más de RONDA DE PIZARRA BLANCA:
1) https://www.geeksforgeeks.org/minimum-swap-required- convert-binary-tree-binary-search-tree/
Primero me preguntó sobre mi enfoque y luego sobre el código.
2) Implementar caché LRU.
Discusión detallada sobre Idea y luego código https://leetcode.com/problems/lru-cache/ Le di un enfoque similar al que se necesita en esto. La peor complejidad temporal para get() es O(1) y para put() puede ir a O(n).
3) Encuentra el siguiente elemento mayor de cada elemento en una array. Le di un enfoque basado en la pila con una complejidad de tiempo y espacio de O (n) cada array que atraviesa de izquierda a derecha, él quería trabajar con el mismo enfoque pero optimizarlo aún más, así que pensé y le dije que podemos atravesar la array desde la derecha a la izquierda, reduce el número de comparaciones https://www.geeksforgeeks.org/next-greater-element/
Luego tuvimos una larga discusión sobre los Principios de liderazgo.

Ronda 4: esto fue tomado por un SDE, fue muy útil y genial. Primero me habló de sí mismo y luego preguntó por mí y luego saltó a las preguntas. Me preguntó la diferencia entre árboles y gráficos y luego me dio esta pregunta.

1) Se nos ha dado una lista de pares, que denota los bordes de un árbol, puede haber un borde que conduzca a la creación del ciclo, tengo que encontrar un par, que cause el ciclo. Si hay varios bordes que forman un ciclo, entonces tengo que elegir el último de la lista. Primero le dije, DFS Approach y luego le dije Disjoint Set, estaba satisfecho con el segundo enfoque y luego lo implementé y escribí una solución para este problema. Complejidad de tiempo: O (n ^ 2) donde n es la longitud de la lista dada en la entrada.

2) Encuentra el subarreglo de longitud mínima cuyos elementos suman >= k similar a https://www.geeksforgeeks.org/minimum-length-subarray-sum-greater-given-value/
Primero le di O(n^2) enfoque y luego o (n) técnica de ventana y luego escribí código para la segunda técnica.

Ronda 5 (Fue tomada por un gerente diferente) -Como esta ronda comenzó tan tarde, me cansé hasta entonces. Él era realmente genial. Me preguntó por mí y cómo es mi experiencia hasta ahora. luego me hizo una pregunta y quería un código productivo robusto considerando todos y cada uno de los casos de prueba cuidadosamente. Este código nunca debería fallar o dar una salida incorrecta.

1) Reemplace cada elemento en la array con el siguiente elemento mayor presente a su derecha en una array (mayor por posición, no por valor), así que le dije que es muy similar a la pregunta que me hizo en la ronda 2, aún así, quería escuchar mi me acerqué y quería que lo codificara. Le acerqué y lo codifiqué, luego encontró algunas lagunas en él que pueden ser puntos potenciales para fallar y algunas cosas que no le gustaron en mi código, luego lo codifiqué nuevamente como él quería. Estaba contento con mi intento. El primer código funcionaba bien, el único error es que no se verificó una array nula o vacía y algún código duplicado.
Complejidad de tiempo – O(n), Complejidad de espacio – O(n)
Luego, nuevamente discusión sobre proyectos y aspectos de liderazgo. El proceso terminó después de esto.

Veredicto: Seleccionado

Gracias, GeeksforGeeks. Me ayudó mucho en la preparación.

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 *