Experiencia de entrevista de GoJek para pasantía de ingeniero de producto | Presencial 2019

Prueba técnica en línea:

La duración de la Prueba Técnica fue de 60 mins en la plataforma Interview Bit. La prueba constaba de dos partes de 30 minutos cada una. La primera parte constaba de 30 preguntas MCQ y la siguiente era 1 pregunta de codificación. Las preguntas del MCQ se centraron principalmente en DBMS, sistema operativo, redes informáticas, algoritmos y probabilidad. Las preguntas incluyeron subtemas de temas básicos como encontrar la clave principal, subprocesos, administración de memoria, cálculo de IP de red, la complejidad temporal de los algoritmos y algunas preguntas simples de probabilidad. En la sección MCQ, debe ser rápido y minucioso con los conceptos para responder todas las preguntas correctamente.

La pregunta de codificación era un problema de nivel fácil, necesitábamos rotar a la derecha una lista enlazada dada por K lugares.
Se requerían conocimientos básicos de punteros y listas enlazadas para resolver este problema.

Input: 
1->2->3->4->5
k=2

Output:
4->5->1->2->3

Girar a la derecha una lista vinculada por la posición K

Después de completar la prueba en línea, entre 10 y 12 estudiantes fueron preseleccionados de 120 en función de su desempeño en la prueba y su currículum. Se prefirieron estudiantes con experiencia previa en pasantías o contribuciones de código abierto.

Entrevista Técnica Ronda 1

La Ronda Técnica comenzó con una breve introducción sobre mí y mi currículum. El entrevistador me hizo preguntas relacionadas con mi pasantía anterior, las tareas que se asignaron y los desafíos que enfrenté y la pila de tecnología que usé en mi pasante. Como soy un desarrollador de pila MERN, comenzó haciendo preguntas relacionadas con React.

  1. ¿Qué es Virtual DOM y en qué se diferencia de Real DOM?
  2. ¿Cómo aumenta Virtual DOM el rendimiento de las aplicaciones web?
  3. ¿Qué son los componentes en React? ¿Qué son los componentes sin estado y con estado en React?
  4. ¿Qué es el ciclo de vida de un componente en React?

Continuó con preguntas relacionadas con backend, NodeJS y Javascript.

  1. ¿Qué es ES6 en Javascript?
  2. ¿Qué son las promesas y las devoluciones de llamada en JS?
  3. ¿Qué es multiproceso? ¿NodeJS es multiproceso? ¿Cómo maneja NodeJS múltiples procesos y requests de API?
  4. ¿Qué es escalar? ¿Cómo se escala un sistema?
  5. ¿Qué son los microservicios? ¿En qué se diferencian de los servicios monolíticos?

Después de unos 30 minutos de sesión de control de calidad, el entrevistador me pidió que me calificara en mis habilidades de codificación y procedió con un problema de codificación. El problema era el siguiente:

Dado un número N de bolas de diferentes colores que se mantienen en línea recta, si el color de dos bolas es el mismo, chocan y desaparecen. ¿Escriba un programa para encontrar el número de tales colisiones y el número restante de bolas?

Input: azxxzy
Output: ay

Input: abccbxyyxba
Output: aba

El problema es una variante de Eliminar duplicados adyacentes recursivamente de una string. Al principio, procedí con un método de fuerza bruta para crear una función para eliminar los primeros caracteres adyacentes duplicados y luego invoqué recursivamente el método para la nueva string modificada y lo optimicé aún más usando una estructura de datos Stack. recursivamente-eliminar-adyacente-duplicados-string-dada

Después de resolver con éxito el problema, procedió con un problema de diseño de base de datos y me pidió que diseñara un esquema de base de datos de la aplicación web BookMyShow. Modelo de base de datos para sitio web de reservas de películas

Se me pidió que diseñara un esquema separado para Usuario, Películas, Auditorio, Información de reserva, Información de proyección. Especifique los atributos requeridos en cada esquema, elija la clave principal y la clave externa para cada esquema e interconéctelos. Amplió aún más el problema para extender la base de datos para almacenar información de múltiples teatros en una ciudad y mapear todos los teatros en varias ubicaciones. Me necesitaban para especificar los pasos sobre cómo funcionaría una consulta de búsqueda en caso de que un usuario quisiera reservar una película determinada en un momento determinado en una sala de cine determinada.

Después de implementarlo con éxito, el entrevistador me pidió que incluyera una nueva función para bloquear los asientos en caso de que un usuario no haya pagado por ellos. Si el usuario no completa su pago, los asientos se desbloquean después de un período de tiempo. Además, me pidió que protegiera la API y verificara si el usuario correcto está pagando por los asientos bloqueados usando funciones de middleware para autenticar al usuario.

Al final, me preguntó sobre mis actividades extracurriculares fuera de lo académico, mis pasatiempos e intereses. ¿Cómo me acerco a aprender cosas nuevas y mis conceptos detrás de su funcionamiento?

Veredicto: Fui seleccionado como uno de los dos pasantes de verano para ingeniería de productos de GoJek solo después de mi primera ronda.

Consejos:
Después de escuchar la pregunta aclara las dudas que tengas, de lo contrario podrías terminar resolviendo una pregunta equivocada y esto dejará una mala impresión en el entrevistador. Incluso si conoce la solución, primero dígale a la fuerza bruta y luego optimícela. Escribe el código una vez que alcances el algoritmo optimizado.

No se asuste si no puede encontrar una solución optimizada, sino que interactúe con el entrevistador sobre su enfoque para que pueda señalar dónde se está equivocando. Cuéntales tu proceso de pensamiento en lugar de decirles la solución directamente. GoJek prefiere estudiantes que estén familiarizados con varios conceptos de desarrollo y que no estén limitados a una sola pila de tecnología. Si tiene curiosidad y pasión por construir algo y tiene entusiasmo por aprender cosas nuevas, seguramente se sumará a su ventaja.

Publicación traducida automáticamente

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