La ronda 1:
- Proyecto de empresa actual en profundidad. Hemos usado Kafka para algunas funcionalidades. Discusión sobre Kafka.
- Clases inmutables.
- Discusión sobre hashmap. ¿Por qué el tamaño predeterminado de hashmap es 16, por qué no 14 o 15?
- Discusión sobre las características de Java 8. Por qué deberíamos usar flujos, cuál es la ventaja.
- Imprime la vista izquierda del árbol binario. Le di un enfoque recursivo manteniendo los niveles. El entrevistador se mostró satisfecho con el enfoque y la implementación.
La ronda 2:
- Discusión del proyecto actual. Mi papel en el proyecto.
- Discusión sobre microservicios.
- Implementar HashMap. Comencé implementando el método ‘put’ primero. Después de implementar ‘put’, me pidió que mostrara lo que había hecho. Discutió los diversos factores que había considerado al implementar este método, a saber. equals, hashcode, búsqueda de cubos, manejo de colisiones, etc. Estaba satisfecho con el código y me pidió que hiciera que este método fuera seguro para subprocesos. No he trabajado en subprocesos múltiples en ninguno de mis proyectos, por lo que me equivoqué un poco aquí. Usé el bloque sincronizado en un par de lugares y, por adelantado, le dije que nunca antes había trabajado en subprocesos múltiples, solo conozco conceptos teóricos.
- Diseño de software de pruebas AB. Digamos que tiene un botón en la interfaz de usuario. Según la solicitud entrante, este botón puede ser de color rojo, verde o azul. Cada color tiene un peso asociado, digamos rojo (50 %) verde (30 %) azul (20 %). Ahora tiene requests web entrantes, por lo que la distribución de su solicitud debe ser roja para el 50 % del botón de solicitud web, verde para el 30 % de las requests web y azul para el 20 %. No sabe el número total de requests web. Le di 2-3 acercamientos al entrevistador, pero no parecía muy satisfecho.
Esta ronda dura alrededor de 2-2.5 horas. Lo bueno es que el entrevistador me dio el tiempo adecuado para pensar y codificar ambas preguntas.
Ronda 3:
Esta ronda la tomó el Director de Ingeniería.
Algunas preguntas iniciales se centraron en el proyecto actual y cuánto ha contribuido en su proyecto.
- Me preguntó sobre mi papel en los proyectos actuales.
- Que todas las ideas innovadoras que has dado en proyecto.
- Cualquier cambio de arquitectura que haya sugerido en el proyecto.
- El problema más grande que ha resuelto en su proyecto y luego la discusión sobre el enfoque que he usado para resolver un problema de latencia en mi organización actual usando Redis y Kafka.
Aunque estas preguntas parecen normales, sus respuestas hablan mucho sobre su conocimiento del proyecto actual, qué tan innovador y flexible es usted con respecto a la tecnología y su apetito por aceptar nuevos desafíos. No ignores estas preguntas y prepáralas bien.
Luego pidió diseñar un acortador de URL (enlaces bitly)
Su expectativa era que debería ser un diseño listo para la producción, por lo que cada minuto tengo que pensar en los detalles.
Le dije mi enfoque y apis voy a exponer.
Me dijo que escribiera el método con las firmas y los tipos de devolución que usaré. (Desde el controlador de resorte, invocaré todo el método para completar el flujo).
Tuvimos una discusión sobre los métodos y sus firmas, parece satisfecho.
Luego me pidió que diseñara un esquema de base de datos para el mismo.
Tuve una discusión sobre el esquema que he diseñado, el uso de la base de datos sql o nosql para este caso de uso, el almacenamiento en caché y el equilibrio de carga.
Esta ronda duró 1,5 horas.
Después de esta ronda, Recursos Humanos me informó que fui seleccionado. 🙂
Publicación traducida automáticamente
Artículo escrito por GAURAVPANT y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA