Experiencia de entrevista Flipkart | Conjunto 40 (para SDE 1)

Fui entrevistado para el puesto Flipkart de Ingeniería de desarrollo de software (SDE1).

Ronda 1: Ronda de codificación de máquina: (90 minutos)
Dado un árbol binario como una secuencia de tuplas (padre, hijo): (AB)(AC)(BG)(CH)(EF)(BD)(CE) Escriba un programa para encontrar los siguientes errores en el árbol:

  • E1: Más de 2 hijos
  • E2: Tuplas Duplicadas
  • E3: Ciclo presente
  • E4: Múltiples raíces
  • E5: Múltiples padres

La entrada es una expresión que contiene relaciones padre-hijo. la salida es Códigos de error o éxito.

Ejemplos de casos de prueba

  • Entrada: (AB)(AC)(BG)(CH)(EF)(BD)(CE) Salida: Éxito
  • Entrada: (AB)(AC)(AD) Salida: E1
  • Entrada: (AB)(AB) Salida: E2
  • Entrada: (AB)(BC)(CA) Salida: E3
  • Entrada: (AB)(CD) Salida: E4
  • Entrada: (AB)(BC)(AC) Salida: E5

Solución

El código está escrito en node.js javascript. Las pruebas están usando moka. El truco principal en esta pregunta es que la estructura de datos necesaria para contener dichos datos no es un árbol binario sino un gráfico. O un gráfico con dos conjuntos de aristas hijos y padres.

Usé este DS en javascript para resolver:

function Node(data) {
  this.data = data;
  this.children = [];
  this.parents = [];
}
La detección de ciclos se puede realizar mediante  http://www. geeksforgeeks.org/detect-cycle-in-a-graph/ _

 

Ronda 2: Cara a cara
1. Diseñe un balanceador de carga que implemente los siguientes métodos:
  • add(n) donde n es el id de la instancia
  • remove(n) donde n es id de instancia
  • getRandom() que devuelve una instancia aleatoria.
Todas estas operaciones deben ser de orden O(1).
El seguimiento de esta pregunta fue cambiar getRandom de tal manera que devuelva con aleatoriedad ponderada en lugar de aleatoriedad uniforme si los pesos están asociados con instancias.
2. Se le da un resultado del torneo de cricket con todas las victorias y derrotas. Imprime los equipos de tal manera que un equipo ganador esté siempre a la derecha del equipo perdedor.
Solución: almacene los resultados como un gráfico acíclico dirigido y ejecute un algoritmo de clasificación topológica.

 

Ronda 3: Cara a Cara
  1. Explica detalladamente tus proyectos
  2. Métricas clave sobre su proyecto, es decir, cuánta carga manejó, etc.
  3. Si está almacenando los mismos datos en bases de datos separadas, ¿cómo los mantendrá sincronizados?
  4. Si vas a escribir tu proyecto desde cero, ¿qué cambiarías?

Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo electrónico a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *