Posición: Ingeniero de software – 2 (Equipo de Big Data, Bangalore)
Apliqué a través de referencia. Recibí una llamada dentro de una semana.
Ronda 1 (Skype-Bangalore) (~ 45 minutos)
El entrevistador me pidió directamente que explicara mi proyecto actual. 5-6 preguntas a partir de ahí.
Mi proyecto se basaba en la computación en la nube, por lo que me hizo algunas preguntas básicas sobre la computación en la nube. Aproximadamente
tres capas (IAAS, PAAS, SAAS), etc.
La diferencia entre CloudStack y OpenStack (CloudStack (CS), el producto en el que estoy trabajando).
OpenStack es un producto similar. Escenarios donde se usa CS (cómo los clientes se benefician de CS).
Luego, pasó a la sección de Algoritmos. ¿Cómo diferenciará las preguntas de google code jam y
facebook hacker cup? (Ya que participé en ambas competencias)
Me pidió que le diera un problema. Dije, Para encontrar la substring palindrómica más larga en una string de caracteres.
Entonces, me preguntó la solución, el algoritmo de Gave Manachar. Pidió al entrevistador los detalles del algoritmo y el tiempo, la complejidad del espacio.
Ronda 2 (F2F-Bangalore) (~ 1 hora y 15 minutos)
El entrevistador comenzó con mi Introducción. Luego escaneó todo mi CV, todos los proyectos,
incluso cubrió mis proyectos escolares, etc.
La diferencia entre Java y C++. Ventajas y desventajas de cada uno.
Con qué idioma te sientes más cómodo. Califíquese sobre 5.
Después de eso, preguntó cómo funciona el polimorfismo de tiempo de ejecución en C++. Cómo lo resuelve C++. Expliqué sobre
los productos virtuales y VPTR y VTABLE asociados.
Luego, me pidió detalles de mi último proyecto. Algunas preguntas aquí y allá del proyecto.
Pasó a la sección de algoritmos.
P-1: Dada la array binaria MxN, encuentre la array subcuadrada más grande con todos los 1.
Se me ocurrió una solución de DP. Primero me pidió que explicara el algoritmo y luego me dijo que escribiera el código en papel. Dejé algunos casos de validación, así que pidió manejarlos, luego me preguntó sobre el tiempo, la complejidad del espacio y que escribiera todos los casos de prueba.
P-2: Encuentre la fila que contiene la mayor cantidad de 1 en una array binaria MxN, donde en cada fila los 0 siempre van seguidos de 1. Le di el algoritmo de búsqueda binaria, pero me pidió que optimizara aún más. Luego, se me ocurrió el algoritmo de tiempo lineal escalonado con O(M+N). (Lo mismo, se le pidió que escribiera el código en papel y luego probara los casos). Complejidad temporal y espacial.
Ronda 3 (F2F-Bangalore) (~ 1 hora)
El entrevistador comenzó con mi Introducción. Era una especie de ronda de diseño.
Me pidió que diseñara su propia API BitSet. Todos los métodos como flip, set, reset, countOnes, etc.
¿Qué estructura de datos utilizará? Luego, puso una restricción como si varios subprocesos accedieran a los
métodos. Di solución para usar mutex lock. Me preguntó la diferencia entre semáforo y exclusión mutua, y
cómo manejar la situación de interbloqueo. Hablé sobre el mantenimiento de cerraduras en 2 fases.
( Fase de crecimiento y encogimiento ). Luego pidió los detalles de la implementación. Escribió todos los códigos en papel. Testcases y
complejidades temporales, espaciales de cada operación.
Ronda 4 (F2F-Bangalore) (~ 1 hora)
Introducción. Por qué Microsoft, Por qué te quieres ir, Pedí detalles de mi último proyecto.
Luego me pidió que diseñara el caché LRU en una pizarra blanca. Se le pidió que escribiera código para buscar una clave
en LRU. Como de costumbre, tiempo, complejidad espacial y Testcases.
Algo Pregunta:
¿Comprobar si el árbol binario dado es un árbol de búsqueda binario? ¿Cómo manejar el caso de múltiples hilos?
Alguna discusión sobre eso. Escribí código en pizarra blanca, testcases y pedí tiempo, complejidad espacial.
Ronda 5 (F2F-Bangalore) (~ 45 minutos)
Introducción, pregunta sobre el producto. Pidió dibujar la arquitectura del producto. Un poco de discusión de cada componente de la arquitectura. Lo que exploraste fuera de tu trabajo actual. Hablé sobre el contenedor docker. Alguna discusión sobre eso. Explicado sobre su trabajo en detalle. Lo que se espera del puesto, etc…
Ronda 6 (Skype-Redmond) (~ 45 minutos)
Comenzó con mi Introducción. El entrevistador preguntó el detalle de mi proyecto actual.
¿Cuál fue la duración del proyecto y cuántos miembros participaron?
¿Cuántos lenguajes de programación se utilizan? ¿Cuántos lenguajes de programación conoces?
¿Con cuál te sientes más cómodo? Califique sobre 5.
Luego me preguntó la diferencia entre clase y estructura en C++. Cómo implementar una interfaz en C++.
etc..
Algo Pregunta:
Dadas dos listas vinculadas ordenadas en orden ascendente, combínelas en una lista vinculada (Mantener clasificación). Hazlo en su lugar. Me pidió que escribiera en un editor de texto, compartió mi pantalla. Me pidió que enumerara todos los casos de prueba y el tiempo, la complejidad del espacio.
Ronda 7 (Skype-Redmond) (~ 45 minutos)
Introducción. Me preguntó los detalles del proyecto. Alguna discusión sobre eso.
Algo Pregunta:
Ordenar mil millones de enteros con memoria limitada. Hablé de clasificarlos trozo a trozo y luego
fusionarlos. Luego me preguntó cómo decidir el tamaño del trozo. Lo expliqué con un ejemplo. Preguntado sobre
la complejidad del tiempo. Luego, preguntó si esto tomará la misma cantidad de tiempo si tenemos memoria infinita. Hablé
sobre la diferencia de tiempo de acceso en la memoria primaria y la memoria secundaria. Pidió detalles sobre
la memoria secundaria, sobre la tecnología del disco, el sector, el tiempo de búsqueda, el retraso de rotación, etc.
Ronda 8 (F2F-Bangalore) (~ 45 minutos)
Nuevamente comencé con mi Introducción. Me preguntó los detalles de mi proyecto. Era el director de ingeniería del equipo.
Algo Pregunta:
Encuentre la mediana de un flujo infinito de enteros con memoria limitada. Se me ocurrió una solución donde tenemos memoria infinita. Comencé con la ordenación por inserción y luego optimicé el método min-heap y max-heap. Pero estaba más interesado en el algoritmo de memoria limitada. Me esforcé mucho, pero no pude encontrar uno. Me dijo que escribiera el código de mi solución en una pizarra blanca. Como de costumbre pidió escribir casos de prueba, complejidad temporal y espacial.
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.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
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