Experiencia de entrevista Flipkart para pasante de desarrollador de software

Ronda 1 (Prueba de codificación): fue una prueba de codificación de 90 minutos de duración en la plataforma de la mente aspirante (que también se usó más tarde para entrevistas) que constaba de 3 preguntas de codificación con dificultad creciente.

  • Pregunta 1 (Coincidencia básica de strings): Nos dieron dos strings, ‘texto’ y ‘nombre’, y se nos pidió que contáramos el número de instancias de la string ‘nombre’ en ‘texto’. Se requería que el cotejo se hiciera sin distinción entre mayúsculas y minúsculas. No se proporcionó la longitud de las strings, así que primero probé una fuerza bruta básica que funcionó para todos los casos de prueba. Sin embargo, es posible una solución más eficiente con algoritmos hash rodantes o KMP.

    Enlace: https://www.geeksforgeeks.org/frequency-substring-string/

  • Pregunta 2 (dos punteros): Dada una lista de números, combine elementos adyacentes para formar el palíndromo de longitud máxima posible. La pregunta se basó en motivos similares a los del enlace. Solo necesitamos iterar de izquierda a derecha simultáneamente, y fusionar el más pequeño de los dos con el siguiente elemento.

    Enlace: https://www.geeksforgeeks.org/find-minimum-number-of-merge-operations-to-make-an-array-palindrome/

  • Pregunta 3 (Coincidencia avanzada de strings): Dada una string «cordón» y una serie de strings «cupones», necesitábamos encontrar cuántos cupones coinciden como una substring con el cordón con una tolerancia de caracteres ‘k’. Además, había algunas operaciones que se podían hacer en las strings de cupones para formar una coincidencia, incluido cambiar ‘a’ por ‘o’, ‘t’ por ‘l’ y viceversa, y también eliminar cualquier carácter en la string de cupones. Traté de usar bruto para generar strings con un carácter eliminado y luego usé la recursividad para buscar una coincidencia que incorporara todas las condiciones. Pude pasar 20/21 casos de prueba.

14 estudiantes fueron seleccionados para entrevistas. Creo que los casos de prueba se ponderaron y las selecciones se hicieron en función del número total de casos de prueba en lugar del número de preguntas completamente resueltas.

Ronda 2 (Entrevista técnica 1 DSA – 45 minutos): Después de una breve introducción, saltó directamente a las preguntas de resolución de problemas.

  • Pregunta 1 (suma de prefijos): esta fue solo una pregunta de calentamiento en la que solo se me pidió que encontrara la suma de varios subarreglos en la array de enteros dada. Respondí rápidamente con suma de prefijo, parecía satisfecho y no pidió código. https://practice.geeksforgeeks.org/problems/maximum-prefix-sum-for-a-given-range0227/1

    Enlace: https://www.geeksforgeeks.org/prefix-sum-array-implementation-applications-competitive-programming/

  • Pregunta 2 (dos punteros): pregunta genérica de encontrar el contenedor más grande que se puede formar usando las líneas verticales en el eje x cuyas alturas se definieron en la array de enteros dada. Me pidieron que escribiera un código de función para el mismo.

    Enlace: https://www.geeksforgeeks.org/container-with-most-water/

  • Pregunta 3 (Manipulación de arrays): Dadas dos arrays, una con alfabetos y otra con índices de esos alfabetos. Necesitaba organizar los alfabetos de acuerdo con el índice correspondiente en el lugar (sin usar ningún espacio adicional). Definí un invariante de bucle para avanzar solo cuando el i-ésimo índice se fija mediante la función de intercambio. Luego, extendió la misma pregunta para repetir el mismo proceso ‘k’ veces también sin ningún espacio adicional. Básicamente, quería que usara alguna técnica para poder almacenar múltiples índices en la misma ubicación en la array. Como los valores de los índices permanecerán en el rango de 1 a n, almacené índices como 0*n+idx, 1*n+idx, 2*n+idx, etc., y los extraje usando la operación %n. Me pidieron que escribiera un pseudocódigo para el mismo.

El entrevistador fue muy servicial y tranquilo. Me apoyó durante toda la entrevista y también me dio algunos consejos de vida al final. Aparte del código, me pidieron que explicara la complejidad del tiempo para todas las preguntas.

8 estudiantes pasaron a la siguiente ronda.

Ronda 3 (Entrevista técnica 2 DSA – 45 minutos): similar a la última entrevista, comenzó con una breve introducción y luego pasó a la resolución de problemas.

  • Pregunta 1 (estrategia de juego): Dada una array de enteros, se me permitió elegir el elemento de la izquierda o de la derecha en un solo movimiento y se me pidió que maximizara mi suma en ‘k’ movimientos dados. A primera vista parecía un problema de DP y le expliqué la solución definiendo el estado de DP en base a tres variables. La complejidad del tiempo pasó a O(n*n*k) y me preguntó si podía hacerlo mejor. Mirando más de cerca, el problema era mucho más simple en el que solo necesitamos encontrar la suma máxima de elementos en una ventana de k elementos que está al principio o al final o alguna parte al principio y otra al final. Pude resolverlo con la complejidad de tiempo de O(k). Me pidieron que escribiera el código.

    Enlace: https://www.geeksforgeeks.org/maximize-sum-of-k-elements-in-array-by-take-only-corner-elements/

  • Pregunta 2 (par de palíndromos en una array de palabras): la pregunta era exactamente la misma que figura en el enlace. Intenté la fuerza bruta para verificar cada par, pero él quería una mejor solución. Después de un poco de lucha, dije que lo resolviera usando trie. Parecía satisfecho pero quería saber el procedimiento completo. Traté de explicar pero luché con algunas partes en las que me ayudó. Luego, hubo una discusión detallada sobre la complejidad del tiempo para cada uno de los pasos. No me pidieron que escribiera el código para la pregunta (tal vez por menos tiempo).

    Enlace: https://www.geeksforgeeks.org/palindrome-pair-in-an-array-of-words-or-strings/

    https://practice.geeksforgeeks.org/problems/palindrome-pairs/1/

El entrevistador nuevamente fue muy útil durante la entrevista y me obligó a pensar en direcciones particulares. Quería saber los detalles de lo que sea que estaba pensando.

5 estudiantes fueron seleccionados para la última ronda.

Ronda 4 (entrevista del gerente de contratación programada para 30 minutos, pero continuó durante 55 minutos): esta ronda fue realizada por un desarrollador senior en Flipkart y fue una combinación de la ronda de recursos humanos y la técnica. Después de una breve introducción, me preguntó sobre mis proyectos. Me pidió que explicara uno de ellos en detalle. Luego, hubo preguntas sobre desafíos enfrentados, carencias, problemas en los grupos y otros similares.

Me preguntó sobre las materias que se han cubierto en el plan de estudios de la universidad. Respondí con DSA, DBMS, OOP y otras ciencias básicas. Preguntó sobre los temas tratados en DBMS, a los que enumeré algunos comunes. Luego, me preguntó sobre las propiedades ACID de las transacciones en DBMS y cómo se mantenían. 

Me preguntó sobre un tema favorito a lo que respondí DSA. Luego, me hizo una especie de pregunta abstracta sobre la lista enlazada. Quería que pensara en formas de optimizar las operaciones de búsqueda e inserción en una lista ordenada ordenada. Se me ocurrieron varios enfoques para la array adicional con búsqueda binaria, árbol de búsqueda binaria. Pero quería que no usara tanta memoria adicional como la lista enlazada. Entonces, traté de idear una solución basada en la indexación (como en DBMS con la ayuda de árboles B). Luego, hubo una larga discusión sobre lo mismo, y me dio varios escenarios para que trabajara en mi solución. Esto continuó durante unos 40 minutos, después de lo cual dijo que no tenía más preguntas.

Al final de todas las rondas, el entrevistador me preguntó si tenía alguna pregunta para él. Esto fue seguido por una discusión sana y cálida sobre la empresa durante unos 15 minutos y conocí varios detalles sobre el funcionamiento, varios departamentos, el trabajo realizado y los desafíos que enfrentan.

Después de todas las entrevistas, a 4 estudiantes se les ofreció un puesto de pasantía, y yo era uno de ellos.

Publicación traducida automáticamente

Artículo escrito por rohanagarwal4 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 *