Me puse en contacto con el reclutador a través de LinkedIn y compartí mi currículum con ellos. En 2 días, me envió el enlace de prueba. En ese momento tenía 1 año de experiencia como Desarrollador de Aplicaciones.
Ronda 1: Prueba Hackerrank
Duración: 1,5 horas
Número de preguntas a resolver: 2
- Pregunta 1: Easy DP (Relacionado con el Código de la escalera n, pero una pequeña modificación y extensión de esta pregunta)
enlace: Contar formas de llegar a la escalera n - Pregunta 2: Medio (No recuerdo la pregunta) Resueltas ambas preguntas.
Ronda 2: Ronda de Coderpad
Duración: 1 hora
Número de preguntas a resolver: 2
- Pregunta 1: Pregunta de implementación de strings (Fácil-Medio)
- Pregunta 2: Imprimir dígitos recurrentes entre llaves. Ligera modificación de esta pregunta: https://www.geeksforgeeks.org/find-recurring-sequence-fraction/Example:
Input: a=1, b=3 Output: 0.(3) Input: a=2, b=5 Output: 0.4 Input: a=1, b=6 Output: 0.1(6)
Resolví la primera pregunta por completo y en la segunda, solo faltaban casos de esquina (debido a un límite de tiempo ajustado).
Ronda 3: Ronda de Coderpad
Duración: 1 hora
Número de preguntas a resolver: 2
- Pregunta 1: Diseñe una clase en Java que implemente la interfaz Deque. (es decir, implemente su propia cola de doble terminación en Java sin usar ninguna colección) 7 métodos para implementar: addFirst(), addLast(), removeFirst(), removeLast(), peekFirst(), peekLast(), size()
- Pregunta 2: En la array 2D, la moneda de oro se da en cada celda. Desde la esquina inferior izquierda, debes llegar a la esquina superior derecha reuniendo el máximo de puntos. (Similar a esto: ruta de suma máxima en una array de arriba a abajo )
Después de esta ronda, hubo 2 rondas de Video Conf (espalda con espalda durante 2 horas).
Ronda 4: Ronda de videoconferencia
Duración: 1 hora ( 1ra ronda de videoconferencia)
Experiencia laboral y discusión del proyecto. (Prepárate para enfrentar preguntas profundas, ¿por qué prefieres esto a ese tipo de preguntas?)
Clases inmutables en Java. Comenzó con detalles básicos sobre cómo hacer que cualquier clase sea inmutable.
Después de eso, dieron algunos escenarios como que la clase contiene ArrayList, por lo tanto, cuando se llama a getter para eso, si devolvemos ArrayList tal como está, violará el concepto de inmutabilidad, ya que los elementos dentro de ArrayList pueden modificarse.
- Pregunta 1: Enlace de la pregunta del ladrón de casas: https://leetcode.com/problems/house-robber/
- Pregunta 2: Límite de impresión Recorrido de un Treelink: Recorrido de límites de un árbol binario
Una pregunta básica de Java para verificar la comprensión de lo que se vincula en tiempo de compilación frente a tiempo de ejecución
class A { int temp = 10; public void print() { System.out.println("In Class A"); } } class B extends A { int temp = 20; public void print() { System.out.println("In Class B"); } } class C { public static void main(String args[]) { A a = new B(); System.out.println(a.temp); a.print(); } }
Sugerencia: las variables se vinculan en tiempo de compilación, por lo que no tienen nada que ver con el polimorfismo en tiempo de ejecución.
Ronda 5: Ronda de Video Conf
Duración: 1 hora ( 2ª ronda de videoconferencia)
Experiencia laboral y discusión del proyecto.
- Explique cómo está utilizando SDLC en su organización. (Respuesta detallada requerida).
- Quieren saber cómo se realizan las revisiones de código y la fusión de código. Cómo se mantiene la compilación y la versión. ¿Cuál es el modelo de desarrollo que está siguiendo (en mi caso fue un modelo incremental) ¿Cuáles son los mecanismos de prueba? Cómo se realizan JUnits, pruebas de regresión y pruebas de carga/rendimiento,
- ¿Cómo recibe el cliente los próximos cambios? (Detalles sobre el ciclo de lanzamiento)
- ¿Cómo se manejan los casos de regresión?
- Pregunta 1: Vista izquierda de un árbol binario (La solución más óptima requería O(n) tiempo y O(1) espacio)enlace: Imprimir Vista izquierda de un árbol binario
- Pregunta 2: No recuerdo esta (Fue un poco difícil)
Pregunta de Java de muchos núcleos:
- Clase abstracta frente a interfaz (cuándo usar cuándo)
- OOP, conceptos utilizados en su marco J2EE (no es su proyecto; aquí quieren saber qué tan bien conoce los conceptos básicos de Java utilizados detrás de los marcos J2EE). Por ejemplo, Managed Beans sigue el concepto de encapsulación. Programa a una interfaz y no a la clase – Polimorfismo.
- Pregunta sobre la colección de Java
- Clase Singleton y formas de lograrlo (Discusión profunda sobre la inicialización temprana frente a la inicialización tardía frente a Bill Pugh)
Después de estas rondas, me llamaron al sitio los días de semana. (2 Billetes Aéreos + 4 Tarifas de Taxi reembolsadas)
Estas preguntas fueron comunes en las 3 rondas:
- Háblame de ti.
- Ellos elegirán un proyecto (Non-work-ex). Profundizarán en eso y harán preguntas sobre la tecnología utilizada, la metodología seguida, etc. ( Consejo: esté 100% seguro de lo que escribe en su currículum; después de todas las rondas, se cubrió casi todo de mi currículum)
- Preguntas relacionadas con la experiencia laboral. – Lo más favorito que implementaste en el último año: patrón de diseño utilizado en el proyecto. (Por favor, tenga al menos un proyecto en el que haya utilizado algún patrón de diseño)
Ronda 6: Entrevista cara a cara
Duración: 1,5 a 2 horas
- Dado un escenario en el que tiene que diseñar una estructura de datos adecuada.- Les di enfoques usando HashMap y AVL Tree.- Discusión sobre la comparación de complejidad entre ellos.- Implemente su propio mapa hash. (Si conoce en profundidad el funcionamiento de hashmap, esto será muy fácil)
- Según mi experiencia laboral, se me pidió que escribiera código a elección de cualquier ORM (Hibernate/JPA/etc). En el código, según alguna lógica, tenemos que usar operaciones de actualización y eliminación.
- Seguimiento de la 2ª pregunta. Algunas consultas SQL. (Fácil-Medio)- Esto se basó en SubQuery, Group by y joins4) Proyecto actual y arquitectura de marco (de la siguiente manera) (Core Java -> JSP-Servlet -> JSF-Managed Beans) (Base de datos -> JDBC -> Hibernar -> JPA)
Ronda de fuego rápido (4-5 minutos por pregunta):
- Altura de un árbol
- Algunas preguntas sobre Tree que se pueden resolver usando PostOrder Traversal
- Merge Sort vs Quick Sort (que se utilizará con Arrays/LinkedLists)
- Clasificación rápida (discusión sobre pivote): clasificación rápida aleatoria (solo discusión básica sobre esto)
Ronda 7: Entrevista cara a cara
Duración: 1 hora
- Qué es Transfer learning (Intuición y Metodologías) (Basado en mi proyecto de aprendizaje profundo)
- Diseñar una estructura de datos adecuada para jugar un juego de Rompecabezas.- A partir de esto, se formularon algunas preguntas de array 2-D. (Rotar array en 90, 180, 270 grados)
- Todas las preguntas posibles sobre las colecciones de Java:
- Funcionamiento interno de HashSet
- ArrayList vs LinkedList (en términos de uso)
- Hashtable vs HashMap vs ConcurrentHashMap
Ronda 8: Entrevista cara a cara (Tipo Bar Raiser)
Duración: 1-1.5 horas hasta ahora, esta fue la más difícil de todas.
- 1. Saltó directamente al funcionamiento interno de HashMap. Preguntó ¿sabes sobre “Treefy Factor”?
- Lo expliqué. A partir de Java 8, se introdujo este cambio.
- Cuando el tamaño de la lista vinculada en cualquier depósito supera algún factor, LinkedList se convierte en BST autoequilibrado.
- Preguntas de contador:
- Dada la clase de empleado, si no anulamos hashcode() y equals(), ¿funcionará en HashMap?
? (Sí, la clase de objeto que es el padre de cada clase tiene hashcode() y equals()) Por lo tanto, funcionará, pero podría causar algún problema de rendimiento. - Para la misma clase de empleado, TreeMap
¿trabajará? (No -> Necesitamos implementar un comparador personalizado) - ¿Qué sucede con el factor Treefy cuando usamos HashMap?
? En este caso, para convertir LL en BST, necesitamos algún tipo de lógica de comparación. Por lo tanto, si no se implementa el comparador/comparable, no convertirá LL en BST. Pero, no habrá ningún error.
- 2. Implementar una estructura de datos adecuada para la cual se realizan las siguientes operaciones en O(1)
- insertar (elemento int)
- eliminar (elemento int)
- getRandom() -> Devuelve cualquier elemento de la estructura de datos con la misma probabilidad
- 3. Diseñe una cuenta bancaria en entornos de subprocesos múltiples. (Discusión más interesante)
- Requisitos:
- Implemente void debit(), void credit(), int getBalance(), List
getLast5Txn() - debit() y credit() no deben ejecutarse al mismo tiempo para mitigar la lectura y escritura sucia.
- En cualquier caso, getBalance() y getLast5Txn() no deben bloquearse. (Incluso si es una lectura sucia, deberíamos permitirlo)
- Solución:
- Simplemente poner sincronizado antes de débito() y crédito() no funcionará. De acuerdo con el funcionamiento interno, cuando coloca sincronizado en cualquier método de instancia, todo el objeto se bloqueará. Entonces, en este caso, getBalance() y getLast5Txn() se bloquearán incluso cuando no colocamos la palabra clave sincronizada.
- Mantenga el saldo variable en otra clase y en el momento del débito() y crédito(), adquiera el bloqueo en la nueva clase (usando el bloque sincronizado)
- Usar bloqueo de lectores y escritores
- Preguntas de contador:
- cuando se usa sincronizado con el método estático, ¿qué sucede? -> El bloqueo se adquiere a nivel de clase
- Dados algunos ejemplos, donde agregó sincronizados en algunos métodos estáticos/de instancia y preguntó qué sucede en este caso o en ese caso.
- ¿Sincronización a nivel de método frente a sincronización a nivel de bloque?
- Implemente void debit(), void credit(), int getBalance(), List
- 4. Encuentra el primer carácter que no se repite en una string muy larga. Enlace: Dada una string, encuentra su primer carácter que no se repite
- Después de esto, modificó la pregunta, ahora se dan m máquinas y n núcleos.
- Modifique el algoritmo anterior para aprovechar la potencia del sistema multiclúster.
- Con algunas pistas, pude diseñar un algoritmo (basado en el marco Map-Reduce)
Luego, RR.HH. vino e hizo algunas preguntas básicas. Después de lo cual, me informó que terminé el día.
Nota general:
- Preparo casi todas las preguntas de DS/Algo, se esperaba el código de nivel de producción.
- También se estaban enfocando en la calidad del código y la mantenibilidad. (Enfoque modular)
- Debes conocer el 100% de tu currículum. Como ya mencioné, mi currículum completo fue cubierto después de 8 rondas.
- En la Ronda 4 a la Ronda 8, hubo un panel de 2 personas.
Después de un mes, recibí una oferta de GS.
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