25 puntos por xguru 2022-04-19 | 3 comentarios | Compartir por WhatsApp
  • Un ejercicio de programación relacionado con bases de datos que me hicieron en MemSQL (ahora SingleStore) en 2013
    → "Agrega al almacén clave-valor Memcached un comando mult similar a incr / decr. Te daré 1 hora."
  • Esta pregunta es un excelente problema de entrevista técnica porque divide limpiamente a los candidatos en 3 tipos
    • Tipo 0: personas que se sorprenden de que realmente tengan que tocar código. En realidad ni siquiera deberían haber llegado hasta aquí, y no se les debería contratar
      → En ese momento MemSQL estaba desarrollado en C++11, así que tocar Memcached, que está hecho en C, encajaba muy bien con el objetivo.
    • Tipo 1: personas que ven el problema y dicen: "Como la multiplicación es repetición de sumas, creo que bastaría con repetir lo existente. Pero hay que manejar los locks..."
      → Después de dar muchas vueltas, no logran producir código funcional y fracasan. Tampoco son contratados
    • Tipo 2: personas que dicen: "La multiplicación es igual, salvo que donde se hace + hay que hacer *" y rápidamente hacen Copy&Paste y cambian + por *
      → Las personas de este grupo tienen una probabilidad muy alta de ser contratadas
    • Los mejores candidatos... como les sobra bastante tiempo, pueden pulir su entrega, revisar que el formato sea consistente, agregar pruebas unitarias y volver a evaluar las "decisiones de diseño"

Conclusión

  • Me gusta este ejercicio de programación porque es una versión reducida de la programación real
  • Al mantener una base de código grande, es normal encontrarse con código que no se entiende por completo o con modismos innecesarios
  • Este problema es ideal para entrevistas porque solo hay una respuesta correcta: cambiar bool incr por int opcode
  • Actualmente hay dos comandos de operaciones aritméticas (incr/decr), y se trata de extender eso a tres comandos
  • Este ejercicio está bien diseñado para filtrar a los candidatos no calificados y guiar a los candidatos calificados por un camino favorable

3 comentarios

 
minhoryang 2022-04-20

Parece que el punto clave será qué tan rápido puedes encontrar el código correspondiente.

 
hongminhee 2022-04-19

Parece mejor en el sentido de que no se trata de reescribir un programa desde cero, sino de agregar funcionalidades a código existente (y además a un proyecto de código abierto ya conocido y ampliamente usado).

 
xguru 2022-04-19

En HN, como era de esperarse... apareció la persona que originalmente hizo la pregunta de entrevista y está haciendo un AMA.
https://news.ycombinator.com/item?id=31065143