- 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
Parece que el punto clave será qué tan rápido puedes encontrar el código correspondiente.
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).
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