¿Cuáles son algunas buenas preguntas de entrevistas basadas en la pizarra para evaluar el talento de ingeniería en una startup?

Puede encontrar muchos ejemplos para codificar preguntas de entrevistas en línea; depende de lo que quieras probar. Una pregunta es buena si tiene múltiples soluciones, y las soluciones no son muy largas para que un buen candidato pueda resolver un problema en menos de 20 minutos. Aquí están algunos ejemplos:

Recursividad:

  • Imprime todas las permutaciones de una cadena; Algunas letras pueden repetirse.
  • Imprima la cantidad de formas en que se pueden colocar n reinas en un tablero de ajedrez nxn para que no se ataquen entre sí.
  • Implementar un recorrido previo al pedido de un árbol binario; ahora hazlo iterativamente.

Estructuras de datos:

  • Implemente un algoritmo que invierta una lista vinculada individualmente.
  • Implementar inserto en un trie.
  • Implemente la eliminación o getNext en un árbol de búsqueda binario.

Operaciones de bits:

  • Cuente el número de 1 bits en un int.
  • Invierta los bits de un int.

Operaciones de gran número:

  • Implemente la suma, resta, multiplicación, división o raíz cuadrada para enteros mayores que 2 ^ 64.

Manipulación de cuerdas:

  • Implemente el método de búsqueda.

Desde una perspectiva puramente técnica, mi antiguo stand-by le pide al entrevistado que:

  • describir qué es un caché y cuándo debe usarse
  • describe cómo implementar un caché simple
  • redactarlo en la pizarra, seudocódigo
  • ¿Cuáles son las políticas para las actualizaciones / invalidación de caché? ¿por qué?
  • ¿Qué sucede cuando lo que quieres almacenar en caché es demasiado grande para una sola caja? Dibuja la solución.
  • ¿Cómo implementaría una solución de almacenamiento en caché multiservidor?

Lo bueno de esta pregunta es que comienza de manera muy simple, pero puede extenderse tanto como sea necesario para ingresar a sistemas distribuidos, algoritmos, teoría computacional, hashing, etc.

Depende del nivel de posición. No soy un gran admirador de los problemas de programación “complicados”, me gusta hacer preguntas que se relacionen directamente con lo que la gente está haciendo.

  • Pido a los ingenieros junior que avancen por una lista individualmente vinculada.
  • Le pregunto a los ingenieros superiores cuáles serán las trampas para ampliar tal o cual tarea del producto (tarea del producto dependiendo de la compañía).
  • Le pido a los ingenieros principales que me digan cómo le explicarían a un ingeniero junior cómo construir tal o cual producto (la tarea del producto depende de la compañía), y cómo harían un seguimiento con el mismo para asegurarse de que funcionara.
  • Le pregunto a los arquitectos cuál es su patrón de diseño favorito y por qué.

Si bien puede considerar esas preguntas “básicas”, en mi humilde opinión, con demasiada frecuencia encontrará ingenieros junior que no entienden los punteros, ingenieros senior que no pueden anticipar y codificar problemas potenciales, ingenieros líderes que no pueden liderar, y arquitectos que no pueden diseñar. Eso es lo más importante para eliminar en la pizarra.

Después de eso, prefiero tener un tipo inteligente con una buena actitud que alguien que memorice las preguntas en “Entrevista de descifrado”.