Experiencia de entrevista MindTickle fuera del campus

Solicité en LinkedIn en febrero de 2019 y recibí un teléfono de recursos humanos en mayo. Fue básicamente una llamada de selección y me preguntó sobre mis proyectos, prácticas y el lenguaje en el que codifico y también me habló sobre los productos de la empresa, la misión, la tecnología que utilizan, etc. y programó una entrevista telefónica 2 o 3 días después.

Ronda 1 (Telefónica): La primera ronda fue una ronda de DS, Algo que comenzó con una breve presentación de mí mismo y los proyectos que he realizado. Luego hizo la siguiente pregunta:

  1. Encuentre el siguiente elemento más grande en el lado derecho del elemento en la array.
    Enfoque : recorra la array desde el final hasta el principio y realice un seguimiento del elemento máximo encontrado hasta el momento, en cada índice verifique si el elemento más grande encontrado hasta ahora es mayor que el elemento actual, en caso afirmativo, actualice el siguiente elemento más grande del i-ésimo índice a ese elemento mayor, de lo contrario, coloque el siguiente elemento mayor del i-ésimo índice en -1
  2. Encuentre el siguiente elemento mayor en el lado derecho del elemento en la array, esta fue una ligera modificación del problema anterior donde tenemos que encontrar el siguiente mayor y no el siguiente mayor.   https://www.geeksforgeeks.org/next-greater-element/
  3. Se le dan n días y para cada día (di) puede realizar tareas de alto esfuerzo (hi) o tareas de bajo esfuerzo (li) o ninguna tarea con la restricción de que puede elegir tareas de alto esfuerzo solo si elige ninguna tarea el día anterior. Encuentre la cantidad máxima de tareas que puede realizar dentro de estos n días.   https://www.geeksforgeeks.org/dynamic-programming-high-effort-vs-low-effort-tasks-problem/

Pude escribir código para los tres problemas.

Ronda 2 (Telefónica):  Esta fue una ronda de codificación en la que tengo que escribir el código pseduo.

Declaración del problema: se le proporciona un archivo pdf con n diapositivas (páginas) y un servicio de terceros (resto api) que contiene dos funciones:
1. uploadFile (pdf): toma el archivo pdf como entrada y devuelve la identificación de medios
2. getImage(media id, slide_no, format): toma la id de los medios, la diapositiva no del pdf cuya imagen queremos y el formato en el que queremos la imagen como png, jpeg, etc.
Tuve que escribir mi propia función que usa (llamadas) dos funciones de descanso anteriores para cargar un archivo en el servidor y obtener las imágenes de todas las diapositivas en el pdf.
El pseudocódigo se evaluaría según los siguientes criterios:
Exactitud
Debe cubrir todos los casos.
Eficiente
Modular
Enfoque : el truco aquí es usar subprocesos mientras obtenemos las imágenes de las diapositivas, es decir, podemos obtener todas las imágenes simultáneamente usando varios subprocesos y no tenemos que esperar a que se extraigan las imágenes anteriores para llamar a la siguiente.
Pude pensar en el enfoque de subprocesos múltiples y después de esta ronda me llamaron para las entrevistas en el sitio.

Ronda 3 (Presencial):  Esta ronda fue con el gerente técnico de producto. Hizo varios DS, Algo ques, rompecabezas y preguntas sobre mi proyecto de pasantía.

  1. Hay una cuadrícula anxm y un dado colocado en (n – 1, m – 1). Dos jugadores juegan con turnos alternos y el jugador que llegue primero a (0, 0) (en cuyo turno el dado llegue primero a (0, 0)) ganará el juego. En cualquier movimiento, un jugador puede mover los dados horizontalmente a la izquierda o verticalmente hacia abajo. de pasos Tuve que idear una estrategia en la que el jugador que empieza primero ganará y cuáles son los casos en los que el jugador que empieza primero no puede ganar. Esta no era una pregunta de programación sino lógica.
    Acercarse : Siempre trate de colocar los dados en posición diagonal (x, x) cuando sea el turno de su oponente (jugador que comienza en segundo lugar), de modo que cuando se mueva cualquier lugar desde la diagonal, siempre pueda colocar los dados en diagonal nuevamente en el próximo movimiento. De esta forma, podemos asegurarnos de que el jugador uno siempre gane, excepto en el caso en que (n – 1, m – 1) sea en sí mismo una diagonal, es decir, n – 1 = m – 1 o podemos decir que es un tablero cuadrado porque en ese caso tu el oponente tratará de hacerte mover los dados cuando está en diagonal porque ambos están jugando de manera óptima. Esto puede ser difícil de pensar, así que tómate tu tiempo y piénsalo dos veces.
  2. Dada una secuencia continua de números enteros, encuentra el k-ésimo elemento más grande cada vez que aparece un nuevo elemento.   https://www.geeksforgeeks.org/kth-largest-element-in-a-stream/
  3. Dadas dos strings de diferentes longitudes, tenía que decir si eran similares o no. La propiedad de la string es que cada vez que hay un guión bajo (‘_’) en cualquier índice descartamos el carácter en la posición izquierda inmediata, es decir, es string = «A_B_CD_» entonces la string después de descartar los guiones bajos y los caracteres correspondientes sería «C» porque » A_”, “B_”, “D_” se descartarían. otra string de ejemplo = “AB__” después de la string de reducción sería “”, es decir, string vacía. «A__» es una string no válida que no tenemos. de guiones bajos son mayores que el no. de personajes No se puede usar espacio adicional (no se aceptó la solución basada en pilas).
    Acercarse: Atraviese desde el final de ambas strings y verifique el guión bajo y algunas otras condiciones. Piénselo dos veces y no es un problema difícil. Tuve que codificar el problema en el ide de mi computadora portátil y, afortunadamente, pude hacerlo.

Pude resolver las tres preguntas por completo.

Ronda 4 (cara a cara):  esta ronda también fue sobre DS, Algo y algunas cosas relacionadas con Java.

  1. Dado un no. ‘k’ y una suma ‘s’. Tuve que decirle el no. de caminos en un árbol k-ario infinito que suman ‘s’. Cada Node contiene k hijos y los pesos de los bordes entre los hijos son 1, 2, 3,…, k es decir, cada Node tiene hijos con peso 1, 2,… k. Enfoque:  Inicialmente, di la solución de retroceso, pero luego di una solución de DP optimizada.
  2. Esta fue una modificación del problema anterior donde tuve que decir el no. de caminos en un árbol k-ario infinito que suma ‘s’ y hay al menos un borde que tiene un valor mayor que ‘m’. Dado ‘k’, ‘s’ y ‘m’. Encuentro este problema difícil y no pude resolverlo.

En los problemas anteriores solo se dio k y no el árbol.

3. Preguntó algunas preguntas relacionadas con Java, como la recolección automática de basura, cómo funciona JVM, etc.

¡Después de todas las rondas rigurosas, estoy muy feliz de ser un próximo MindTickler!

Publicación traducida automáticamente

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